Como funciona:
Quando ligamos o arduino, inicialmente nada acontece. Ao pressionar o botão uma vez, os três led's piscam segundo o valor da variável tempo, que inicialmente é de meio segundo;
Pressionando o botão novamente, apenas o led vermelho pisca; Pressionando novamente, apenas o led amarelo pisca; Pressionado pela quarta vez, apenas o led verde vai piscar. Na quinta pressionada os led's vão funcionar como um semáforo. Faça a montagem conforme a imagem:
//Davi R. R.
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin
int cont = 0;
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
int espera = 0;
int tempo = 500;
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
}
void loop() {
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
cont = cont + 1;
Serial.println(cont);
if (cont == 6)
{
cont = 0;
}
}
if (cont == 1)
{
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
}
if (cont == 2)
{
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(3, HIGH);
}
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
}
if (cont == 3)
{
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(4, HIGH);
}
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
}
if (cont == 4)
{
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(5, HIGH);
}
espera = millis() + tempo;
while (espera > millis())
{
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(3, LOW);
}
}
if (cont == 5)
{
espera = millis() + 10000;
while (espera > millis())
{
digitalWrite(3, HIGH);
}
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(3, LOW);
espera = millis() + 3000;
while (espera > millis())
{
digitalWrite(4, HIGH);
}
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(3, LOW);
espera = millis() + 10000;
while (espera > millis())
{
digitalWrite(5, HIGH);
}
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(3, LOW);
espera = millis();
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
Nenhum comentário:
Postar um comentário