Neste projeto iremos trabalhar com um novo componente, um botão.
Essa é a primeira vez que iremos interagir com o hardware, ou seja, iremos enviar uma informação ao Arduino que irá receber essa informação e gerar um resultado.
Este projeto ainda é bem simples mas, mesmo assim, é bem interessante. Utilizaremos o botão para fazer o papel de "resitor pull-down".
O autor explicou de forma bem simples o conceito: "Se o botão for pressionado, a eletricidade tomará o caminho de menor resistência, e fluirá entre os 5V e o pino de entrada (há um resistor de 100k Ω no pino de entrada e um resistor de 10k Ω no terra)".
Abaixo um esquema de um circuito de resistor pull-down:
Note que não há nenhum resistor entre o o botão e o pino (5v), logo, ao pressionarmos o botão a corrente fluirá por este caminho.
Quando pressionamos o botão, desempenhamos o papel de um pedestre, solicitando que o sinal feche para poder atravessar a rua, como mostra o vídeo abaixo:
Abaixo temos o esquema do hardware e o código utilizado:
//Project 4 - Semaforo interativo
int carRed = 12; // definindo os leds dos carros
int carYellow = 11;
int carGreen = 10;
int pedRed = 9; // definindo os leds de pedestres
int pedGreen = 8;
int button = 2; // pino do botao
int crossTime = 10000; // tempo de travessia
unsigned long changeTime; // tempo desde a ultima vez que o botao foi pressionado
void setup() {
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT);
digitalWrite(carGreen, HIGH);
digitalWrite(pedRed, HIGH);
}
void loop() {
int state = digitalRead(button);
/*verifica se o botao foi pressionado e se faz mais de 5 seg desde a ultima vez*/
if (state == HIGH && (millis() - changeTime) > 5000) {
//chama a funcao que altera as luzes
delay(4000);
changeLights();
}
}
void changeLights(){
digitalWrite(carGreen, LOW); //apaga carGreen
digitalWrite(carYellow, HIGH); //acende carYellow
delay(4000);
digitalWrite(carYellow, LOW); //apaga carYellow
digitalWrite(carRed, HIGH); //acende carRed
digitalWrite(pedRed, LOW); //apaga pedRed
digitalWrite(pedGreen, HIGH); //acende pedGreen
delay(crossTime); //aguarda crossTime
//pisca pedGreen
for (int x=0; x<10; x++) {
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}
digitalWrite(pedRed, HIGH); //acende pedRed
digitalWrite(carRed, LOW); //apaga carRed
digitalWrite(carGreen, HIGH); //acende carGreen
changeTime = millis();
}
Muito interessante o seu blog amigo.
ResponderExcluirEu estou de olho nesse livro "Arduino Básico", mas como estou com pouca grana para comprá-lo agora, estava procurando material na internet.
Acabei achando o seu blog e achei bem legal cara.
Já fiz o projetinho do semáforo. Amanhã vou ver se faço esse do semáforo interativo.
Tenta fazer novos posts cara. Está bem legal!
Um abraço!
Opa blz. parou de postar mais videos? to me jogando em uns projetos arduinos tb e to aprendendo gostaria de umas dicas ate mesmo contato para trocarmos ideias. meu email e andersondborges@gmail.com atualmente tenho arduino adk e uno estou tentando fazer conecao com um fluxo de agua e android.
ResponderExcluircara engraçado q os códigos do livro parecem estar errado..tem vezes q n funciona..tive q colocar o teu codigo ai..vlw.
ResponderExcluir:) Obrigada! Deu tudo certinho!!!
ResponderExcluirutiliza só esse material mesmo?
ResponderExcluirOlá, gostaria de saber se tem como o Modulo Bluetooth enviar uma mensagem para o celular e o fazer vibrar?
ResponderExcluirSe tiver, me responde, por favor.
Obrigada!
Olá, gostaria de saber se tem como o Modulo Bluetooth enviar uma mensagem para o celular e o fazer vibrar?
ResponderExcluirSe tiver, me responde, por favor.
Obrigada!