Arduino: Temporizadores e Interrupcoes: mudanças entre as edições
De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Linha 16: | Linha 16: | ||
micros() | micros() | ||
:Equivalente ao <code>millis()</code> retornando o número de '''microssegundos'''. | :Equivalente ao <code>millis()</code> retornando o número de '''microssegundos'''. | ||
===Temporização sem pausar o programa=== | |||
Uma aplicação interessante da função <code>millis()</code> é realizar temporizações sem pausar o programa em execução. | |||
;Programa Blink sem pausar programa: | |||
<syntaxhighlight lang="c"> | |||
/* | |||
* 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: | |||
if (ledState == LOW) { | |||
ledState = HIGH; | |||
} else { | |||
ledState = LOW; | |||
} | |||
// atualiza estado do led: | |||
digitalWrite(ledPin, ledState); | |||
} | |||
} | |||
</syntaxhighlight> | |||
===Laboratório 1: Comunicação serial entre dois Arduínos=== | ===Laboratório 1: Comunicação serial entre dois Arduínos=== | ||
Linha 32: | Linha 66: | ||
#Carregar no '''emissor''' o código abaixo; | #Carregar no '''emissor''' o código abaixo; | ||
#Observar a comunicação serial a partir do led piscando no receptor e também monitorar a troca de mensagens a partir do monitor serial. | #Observar a comunicação serial a partir do led piscando no receptor e também monitorar a troca de mensagens a partir do monitor serial. | ||
==Referências== | ==Referências== |
Edição das 15h34min 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.
Temporização sem pausar o programa
Uma aplicação interessante da função millis()
é realizar temporizações sem pausar o programa em execução.
- Programa Blink sem pausar programa
/*
* 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:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
// atualiza estado do led:
digitalWrite(ledPin, ledState);
}
}
Laboratório 1: Comunicação serial entre dois Arduínos
- Monitor Serial
- O monitor serial permite enviar dados do computador ao Arduíno pela interface serial USB.
Procedimentos:
- Carregar programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel e acionar o led do pino 13 a partir de comandos H e L enviados pelo monitor serial.
Procedimentos:
- Conectar com um par de fios os dois Arduínos através das portas seriais de ambos os microcontroladores: TX->RX e RX<-TX;
- Carregar no receptor o programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel;
- Carregar no emissor o código abaixo;
- Observar a comunicação serial a partir do led piscando no receptor e também monitorar a troca de mensagens a partir do monitor serial.
Referências
Evandro.cantu (discussão) 09h51min de 9 de novembro de 2021 (-03)