Nesta aula será possível entender como os dados são lidos pelo arduino e como controlar LEDs apenas enviando dados pela tecla do seu computador.
Vamos iniciar com um programa que exemplifica o funcionamento da leitura de dados pela porta serial "Serial.read(); "
Não será preciso nesse momento inicial usar a matriz de contatos.
A1-Inicialmente execute este códio abaixo.
int n = 0; // Para entrada de dados seriais (for incoming serial data)
void setup() {
Serial.begin(9600); // Ativa a porta serial (opens serial port, sets data rate to 9600 bps)
}
void loop() {
// Testa se a prta serial esta recebendo dados (send data only when you receive data:)
if (Serial.available() >0) {
// leitura dos dados (read the incoming byte:)
n = Serial.read();
// mostra na tela (say what you got:)
Serial.print("Valor digitado: ");
Serial.println(n, BYTE);
Serial.print("Valor lido: ");
Serial.println(n);
}
}
Após executar ative a Serial Monitor e digite valores:
Ao ativar e digitar valores e clicar em (Send) teremos na tela:
Neste momento os números: 1,2,3,4,5 e o número: 8 foram diditados.
Como é possível notar valor digitado "1" é lido como "49" e o valor "2" como "50". Perceba que há uma progressão. É importante notar essa relação pois esses valores serão trabalhados no programa seguinte.
Vamos aprofundar mais um pouco?
Agora será preciso montar o circuito abaixo na sua matriz de contatos:
Clicar na imagem para ampliar
A2-Execute o código abaixo:
int n;
int pin7 = 7;
int pin8 = 8;
void setup() {
Serial.begin(9600);
pinMode(pin7, OUTPUT);
pinMode(pin8, OUTPUT);
Serial.println("Digite:\n 2-Vermelho \n 3-Verde \n 4-Vermelho e Verde \n 5-Apagar Todos");
Serial.println("---------------// www.BrasilRobotics.blogspot.com");
}
void loop() {
// testa se esta recebendo dado do teclado
if (Serial.available() >0) {
// faz leitura do numero digitado
n = Serial.read();
Serial.print("Voce digitou: ");
Serial.println(n, BYTE); // Imprime na tela o valor do telhado em BYTE
//testes condicionais
if( n==50 ){ // 2-vermelho (red)
digitalWrite(pin7,HIGH);
digitalWrite(pin8,LOW);
}
if(n==51){ // 3-Verde (green)
digitalWrite(pin8,HIGH);
digitalWrite(pin7,LOW);
}
if(n==52){ // 4-Verde (green)
digitalWrite(pin8,HIGH);
digitalWrite(pin7,HIGH);
}
if(n==53){ // 5-desliga LEDs (turns off)
digitalWrite(pin8,LOW);
digitalWrite(pin7,LOW);
}
}
}
Após executar ative a Serial Monitor:
Será mostrado na tela inicialmente:
Estes dados são mostrados uma única vez e foram apresentados no "void setup()". Caso estivessem no "void loop" seriam constantemente mostrados. Mas a idéia aqui é criar um cabeçalho para orientar o usuário.
Logo em seguida digite valores: como 1, 2, 3 , 4, 5 e observe o que acontece com os LEDs.
Será possivel notar cinco(5) comportamentos:
1°- Quando digitamos: "2" temos o LED vermelho ligado
2°- Quando digitamos: "3" temos o LED verde ligado
3°- Quando digitamos: "4" temos vermelho e verde ligados
4°- Quando digitamos: "5" temos todos apagados.
5°- Quando digitamos: 1, 5, 6 e outros valores nada acontece.
Também pode ser conferido no vídeo:
Bem... e como tudo acontece no código?
Temos a leitura do valor "n" que é gerado pelo teclado como vimos no código anterior esse valor relaciona um dígito a outros.
Como o objetivo é comparar valores lidos pelo teclado precisamos utilizar o valor real do "n" e compara-lo em uma condição: (n==50) "n é igual a 50?", como 50 representa do digito "2", caso você tenha pressionado o número "2" a condição torna-se verdade e uma tarefa é executada.
É possível usar outros valores e também acionar outros dispositivos como motores usando essa mesma lógica, basta adicionar mais condições.