Arduino: Temporizadores e Interrupcoes: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 29: | Linha 29: | ||
unsigned long previousMillis = 0; // tempo anterior no qual o led foi chaveado | unsigned long previousMillis = 0; // tempo anterior no qual o led foi chaveado | ||
const long interval = 1000; // intervalo para piscar led (milliseconds) | const long interval = 1000; // intervalo para piscar led (milliseconds) | ||
void setup() { | void setup() { | ||
pinMode(ledPin, OUTPUT); | pinMode(ledPin, OUTPUT); | ||
} | } | ||
void loop() { | void loop() { | ||
unsigned long currentMillis = millis(); | unsigned long currentMillis = millis(); | ||
Linha 40: | Linha 38: | ||
previousMillis = currentMillis; | previousMillis = currentMillis; | ||
// chaveia o led: | // chaveia o led: | ||
ledState = !ledState; | |||
// atualiza estado do led: | // atualiza estado do led: | ||
digitalWrite(ledPin, ledState); | digitalWrite(ledPin, ledState); |
Edição das 16h46min de 9 de novembro de 2021
Arduíno: Temporizadores e Interrupções
Temporizadores
O Arduíno possui várias funções que permitem implementar temporizadores e realizar medidas de tempo.
- Funções de pausa temporizada no programa
delay(ms)
- Pausa o programa por uma quantidade de tempo especificada como parâmetro em milissegundos. (onde 1000 milissegundos é 1 segundo).
delayMicroseconds(us)
- Equivalente ao
delay()
com tempo especificado microssegundos.
- Funções para medidas de tempo
millis()
- Retorna o número de milissegundos decorridos desde que a placa Arduíno foi iniciada com o programa atual.
micros()
- Equivalente ao
millis()
retornando o número de microssegundos.
Laboratório 1: Blink sem pausar o programa em execução
Uma aplicação interessante da função millis()
é poder realizar temporizações sem pausar o programa em execução.
- Exemplo
- Programa Blink sem pausar programa [1].
/*
* Blink sem delay();
*/
const int ledPin = 13; // pino do led
int ledState = LOW; // estado do led
unsigned long previousMillis = 0; // tempo anterior no qual o led foi chaveado
const long interval = 1000; // intervalo para piscar led (milliseconds)
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// salva o último tempo em que o led foi chaveado
previousMillis = currentMillis;
// chaveia o led:
ledState = !ledState;
// atualiza estado do led:
digitalWrite(ledPin, ledState);
}
}
- Carregar e testar o programa.
Interrupções
Referências
Evandro.cantu (discussão) 09h51min de 9 de novembro de 2021 (-03)