1 - Montagem de um simulador de "Sinal de Trânsito ou Semáforo", onde a
ideia é que possamos ter 3 LEDs (Vermelho - Amarelo - Verde) e os mesmos deverão acender e apagar, simulando o funcionamento do Semáforo.
Um exemplo do esquema de ligação do Semáforo no Arduino
Código para copiar e colar no arduino
// Inicio do programa Semaforo Simples
// Aqui estou dizendo para o computador os pinos que vou usar e dando um nome a cada um deles
int verdecarro = 13; int amarelocarro = 11; int vermelhocarro = 9; void setup() {
// Aqui eu digo que os pinos escolhidos são de saída pinMode(verdecarro, OUTPUT);
pinMode(amarelocarro, OUTPUT); pinMode(vermelhocarro, OUTPUT); }
void loop() {
digitalWrite(verdecarro, HIGH); // aqui eu acendo o pino 13 luz verde delay(5000); // Aqui diz esperar 1 segundo (5000=5s) digitalWrite(verdecarro, LOW); // aqui eu apago o pino 13
digitalWrite(amarelocarro, HIGH); // aqui eu acendo o pino 11
delay(3000); // Aqui diz esperar 1 segundo (3000=3s) digitalWrite(amarelocarro, LOW); // aqui eu acendo o pino 11
digitalWrite(vermelhocarro, HIGH); // aqui eu acendo o pino 9
delay(5000); // Aqui diz esperar 1 segundo (5000=5s) digitalWrite(vermelhocarro, LOW); // aqui eu apago o pino 9
}
// Fim do programa
Obs.: Vale ressaltar que a ideia principal deste
"SEMÁFORO" é fazer com que os alunos
percebam que eles podem controlar os 3 LEDs
de forma individual, desta forma após esse
primeiro exemplo, eles serão desafiados a
mudar a programação para fazer com que os
LEDs acendam ou apaguem de outra forma,
sumulando alguns tipos de sinas que são
2 - Montagem de um simulador de "Sinal de Trânsito ou Semáforo com
opção de pedestres", onde a ideia é que possamos ter 3 LEDs (Vermelho -Amarelo - Verde) para os carros e 2 LEDs (Vermelho - Verde) para os
pedestres, onde os mesmos deverão acender e apagar, simulando o funcionamento do Semáforo.
Um exemplo do esquema de ligação do Semáforo no Arduino
Código para copiar e colar no arduino
// Inicio do programa Semaforo com Pedestre
// Aqui estou dizendo para o computador os pinos que vou usar e dando um nome a cada um deles
int verdecarro = 13; int amarelocarro = 11; int vermelhocarro = 9; int verdepedestre = 7; int vermelhopedestre = 5; void setup() {
// Aqui eu digo que os pinos escolhidos são de saída pinMode(verdecarro, OUTPUT); pinMode(amarelocarro, OUTPUT); pinMode(vermelhocarro, OUTPUT); pinMode(verdepedestre, OUTPUT); pinMode(vermelhopedestre, OUTPUT); } void loop() {
digitalWrite(verdecarro, HIGH); // aqui eu acendo o verdecarro
digitalWrite(vermelhopedestre, HIGH); //aqui acendo o vermelhopedestre delay(5000);
digitalWrite(amarelocarro, HIGH); // aqui eu acendo o amarelocarro delay(3000);
digitalWrite(amarelocarro, LOW); // aqui eu apago o amarelocarro digitalWrite(verdecarro, LOW); // aqui eu acendo o vermelhocarro digitalWrite(vermelhocarro, HIGH); // aqui eu acendo o vermelhocarro digitalWrite(vermelhopedestre, LOW); // aqui eu acendo o vermelhocarro digitalWrite(verdepedestre, HIGH); //aqui eu acendo verdepedestre
delay(5000);
digitalWrite(verdepedestre, LOW); //aqui eu apago verde pedestre digitalWrite(vermelhocarro, LOW); // aqui eu apago o vermelhocarro }
3 - Agora controlando de 8 LEDs, onde além da montagem dos componentes na
Protoboard (LEDs, Resistor e Fios) os alunos devem escrever um código que nos desse como resultado o efeito do "Scanner" do K.I.T.T., carro famoso do
Seriado Super Máquina (Anos 80).
Assista nos 3 links abaixo uma amostra do efeito que
vamos tentar conseguir com o código, atenção na
barra de LEDs que fica acendendo na frente do
carro, pois será exatamente o que tentaremos
reproduzir:
https://www.youtube.com/watch?v=9emRkEAMwAE https://www.youtube.com/watch?v=xr1-NlDe8Z4 https://www.youtube.com/watch?v=-zTp8rzAu5c
Código de programação para oito (8) LEDs na IDE do Arduino
Código para copiar e colar no arduino
// Inicio do programa Super Maquina
// Aqui estou dizendo para o computador os pinos que vou usar e dando um nome a cada um deles
int pin1 = 13; int pin2 = 12; int pin3 = 11; int pin4 = 10; int pin5 = 9; int pin6 = 8; int pin7 = 7; int pin8 = 6; void setup() {
// Aqui eu digo que os pinos escolhidos são de saída pinMode(pin1, OUTPUT); pinMode(pin2, OUTPUT); pinMode(pin3, OUTPUT); pinMode(pin3, OUTPUT); pinMode(pin4, OUTPUT); pinMode(pin5, OUTPUT); pinMode(pin6, OUTPUT); pinMode(pin7, OUTPUT); pinMode(pin8, OUTPUT); } void loop() { digitalWrite(pin1, HIGH); delay(134); digitalWrite(pin1, LOW); digitalWrite(pin2, HIGH); delay(134); digitalWrite(pin2, LOW); digitalWrite(pin3, HIGH); delay(134); digitalWrite(pin3, LOW); digitalWrite(pin4, HIGH); delay(134); digitalWrite(pin4, LOW); digitalWrite(pin5, HIGH); delay(134); digitalWrite(pin5, LOW); digitalWrite(pin6, HIGH); delay(134); digitalWrite(pin6, LOW); digitalWrite(pin7, HIGH); delay(134); digitalWrite(pin7, LOW); digitalWrite(pin8, HIGH); delay(134); digitalWrite(pin8, LOW); digitalWrite(pin7, HIGH); delay(134); digitalWrite(pin7, LOW); digitalWrite(pin6, HIGH); delay(134);
digitalWrite(pin6, LOW); digitalWrite(pin5, HIGH); delay(134); digitalWrite(pin5, LOW); digitalWrite(pin4, HIGH); delay(134); digitalWrite(pin4, LOW); digitalWrite(pin3, HIGH); delay(134); digitalWrite(pin3, LOW); digitalWrite(pin2, HIGH); delay(134); digitalWrite(pin2, LOW); digitalWrite(pin1, HIGH); digitalWrite(pin1, LOW); } // Fim do programa
Ressaltamos ainda que por se tratar de um trabalho
inicial, utilizaremos uma codificação simples partindo
do raciocínio linear dos alunos, em que era só acender
um LED, esperar um tempo, apagar o LED que estava
aceso e acender o próximo, repetindo isso até
terminar o processo, depois seria somente voltar com
o código de traz para frente.
Agora para os interessados e/ou mais experientes, podem usar o código abaixo, que vai produzir o mesmo efeito, porém ele usa "if" e "else".
boolean t = true; int i = 13; void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); pinMode(8, OUTPUT); pinMode(7, OUTPUT); pinMode(6, OUTPUT); } void loop() { digitalWrite(i,HIGH); delay(134); digitalWrite(i,LOW); if(t == true)
{ i = i - 1; } else { i = i + 1; }if(i < 6) { i = 7; t = false; } if(i > 13) { i = 12; t = true; } }
4 - Montagem de um simulador de "Barra de LEDs com Potenciômetro", onde
a ideia é que ao girarmos o potenciômetro os LEDS acendam ou apaguem de acordo com o valor lido ou gerado pelo mesmo.
Um exemplo do esquema de ligação da Barra de LEDs com Potenciêmetro no Arduino
Código de programação para a Barra de LEDs com Potenciêmetro na IDE do Arduino
Código para copiar e colar no arduino
// Inicio do programa Controle de Brilho do LED com Potenciometro
// Aqui estou dizendo para o computador os pinos que vou usar e dando um nome a cada um deles e informando as possiveis variaveis que usarei
int potPin = 2; // Seleciona o pino de entrada para o potenciometro int LEDPin13 = 13; // Seleciona o pino para o LED
int LEDPin12 = 12; // Seleciona o pino para o LED int LEDPin11 = 11; // Seleciona o pino para o LED int LEDPin10 = 10; // Seleciona o pino para o LED int LEDPin9 = 9; // Seleciona o pino para o LED int LEDPin8 = 8; // Seleciona o pino para o LED int LEDPin7 = 7; // Seleciona o pino para o LED int LEDPin6 = 6; // Seleciona o pino para o LED
int val = 0; // Variavel para guardar o valor proveniente da entrada analogica void setup() {
pinMode(LEDPin13, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin12, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin11, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin10, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin9, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin8, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin7, OUTPUT); // Declara LEDPin como saida pinMode(LEDPin6, OUTPUT); // Declara LEDPin como saida }
void loop() {
// val = analogRead(potPin); // Le o valor da entrada analogica // val = val/4; // Converte 0-1023 para 0-255
// analogWrite(LEDPin13, val); // Aciona o LED if (analogRead(potPin) > 900) { digitalWrite(LEDPin13, HIGH); } else { digitalWrite(LEDPin13, LOW); } if (analogRead(potPin) > 800) { digitalWrite(LEDPin12, HIGH); } else { digitalWrite(LEDPin12, LOW); } if (analogRead(potPin) > 700) { digitalWrite(LEDPin11, HIGH); } else {
digitalWrite(LEDPin11, LOW); } if (analogRead(potPin) > 600) { digitalWrite(LEDPin10, HIGH); } else { digitalWrite(LEDPin10, LOW); } if (analogRead(potPin) > 500) { digitalWrite(LEDPin9, HIGH); } else { digitalWrite(LEDPin9, LOW); } if (analogRead(potPin) > 400) { digitalWrite(LEDPin8, HIGH); }else { digitalWrite(LEDPin8, LOW); } if (analogRead(potPin) > 300) { digitalWrite(LEDPin7, HIGH); } else { digitalWrite(LEDPin7, LOW); } if (analogRead(potPin) > 200) { digitalWrite(LEDPin6, HIGH); } else { digitalWrite(LEDPin6, LOW); } }
Use o link que disponibilizamos a seguir para a aula nº 03:
A seguir temos o nosso trabalho para “casa ou mão na
massa”, que é um desafio onde disponibilizamos um
“tutorial” e/ou uma “vídeo-aula” onde o aluno ou os
alunos do grupo deverão executar a tarefa proposta e trazer
o resultado em nosso próximo encontro.
Assista a vídeo aula do Mão na Massa 03, usando o link abaixo:
https://youtu.be/DqyMaSYfTCY?list=PLgezO2EG3LXu0fv7JhdavPdnsXcAXnIaS