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.
<syntaxhighlight lang="c">
//emissor 
int num = 0;
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.write('H');
  delay(2000);
  Serial.write('L');
  delay(2000);
}
}
</syntaxhighlight>


==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:

  1. 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.
Comunicação entre dois Arduínos

Procedimentos:

  1. Conectar com um par de fios os dois Arduínos através das portas seriais de ambos os microcontroladores: TX->RX e RX<-TX;
  2. Carregar no receptor o programa exemplo Arquivo/Exemplos/Communication/PhysicalPixel;
  3. Carregar no emissor o código abaixo;
  4. 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)