Módulo 2

Linguagem Arduino I – Módulo 2

Neste segundo módulo faremos alguns exercícios com a classe Serial e com as estruturas de controle de fluxo.

Atividades

No curso Introdução à plataforma Arduino já vimos a classe Serial, bem como estruturas de controle de fluxo. O ponto chave deste módulo são as principais estruturas: if e for. Acreditamos que a maior dificuldade em aprender uma linguagem de programação é justamente entender e aplicar estas estruturas. Então, vamos praticar!

Obs. a notação [ENTER] no texto indica pressionar a tecla ENTER.

1 – execute e estude o sketch abaixo

[c]
byte byteRecebido;

void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Instrucoes:");
Serial.println("Pressione uma tecla numerica, caractere");
Serial.println("ou digite uma frase. Para enviar pressione a tecla [ENTER].");
}

void loop() {
// verifica se há algum dado
if (Serial.available() > 0) {
byteRecebido = Serial.read();
Serial.println(byteRecebido);
}
}
[/c]

2 – desenvolva um sketch (resolvido) que obtenha dois números inteiros e positivos, faça a soma destes dois números e mostre o resultado no monitor serial.

[c]
int operando1 = 0;
int operando2 = 0;
byte byteRecebido;

void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Instrucoes:");
Serial.println("Entre com dois numeros quaisquer nesta ordem (exemplo):");
Serial.println("2 [ENTER] 3 [ENTER]");
Serial.println("");
}

void loop() {
// verifica se há algum dado
if( Serial.available() > 0 ) {
byteRecebido = Serial.read();
// aceitar somente caracteres de 1 a 9 (na tabela ASCII: de 49 a 57)
if( byteRecebido > 48 && byteRecebido < 58 ) {
Serial.println(byteRecebido);
if( operando1 == 0 ) {
operando1 = byteRecebido – 48;
}
else {
if( operando2 == 0 ) {
operando2 = byteRecebido – 48;
}
}
}
if( operando1 !=0 && operando2 !=0 ) {
Serial.print(" = ");
Serial.println(operando1 + operando2);
operando1 = 0;
operando2 = 0;
}
}
}
[/c]

3 – para esta tarefa separe os seguintes componentes:

  • 3 LEDs (1 vermelho, um verde e um amarelo)
  • 3 resistores de 220 ohms (vermelho, vermelho e marrom)
  • 1 protoboard
  • diversos fios jumpers

3.1 – os LEDs devem ser ligados nos pinos digitais 2, 3 e 4, não esquecendo de ligar um resistor para cada LED.

3.2 – execute, estude o sketch abaixo e faça as seguintes alterações:

a) troque os “comandos” 1, 2 e 3 pelos caracteres rg, e y.

obs1. o programa também deverá aceitar os equivalentes maiúsculos destes caracteres.
obs2. estes caracteres representam as cores dos LEDs ( red, green e yellow).

b) nos testes dos caracteres válidos, substitua as estruturas if por switch.

[c]
byte byteRecebido;

void setup() {
Serial.begin(9600);
delay(1000);
Serial.println("Instrucoes:");
Serial.println("Digite 1, 2 ou 3.");
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}

void loop() {
// verifica se há algum dado
if( Serial.available() > 0 ) {
byteRecebido = Serial.read();
// aceitar somente caracteres numericos 1, 2 e 3
if( byteRecebido > 48 && byteRecebido < 54 ) {
if( (byteRecebido – 48) == 1 ) {
digitalWrite( 2, HIGH );
delay(1000);
digitalWrite( 2, LOW);
}
if( (byteRecebido – 48) == 2 ) {
digitalWrite( 3, HIGH );
delay(1000);
digitalWrite( 3, LOW);
}
if( (byteRecebido – 48) == 3 ) {
digitalWrite( 4, HIGH );
delay(1000);
digitalWrite( 4, LOW);
}
}
}
}
[/c]