Tutorial Arduino 5: “Semaforo UK Interattivo”


In quest’articolo vedremo come modificare leggermente il progetto dell’articolo scorso inserendo un pulsante per “passare” la chiamata di verde ai pedoni. Basterà infatti aggiungere un paio di led, un pulsante da circuito e 3 resistenze.

INGREDIENTI:

  • 2 led rossi
  • 1 led giallo
  • 2 led verdi
  • 6 resistenze da 150 Ω
  • 1 pulsante da circuito
  • Supporto (breadboard / basetta millefori)

ESECUZIONE:

CODICE:

int carRed = 12; // assign the car lights

int carYellow = 11;

int carGreen = 10;

int pedRed = 9; // assign the pedestrian lights

int pedGreen = 8;

int button = 2; // button pin

int crossTime = 5000; // time allowed to cross

unsigned long changeTime; // time since button pressed

 

void setup() {

pinMode(carRed, OUTPUT);

pinMode(carYellow, OUTPUT);

pinMode(carGreen, OUTPUT);

pinMode(pedRed, OUTPUT);

pinMode(pedGreen, OUTPUT);

pinMode(button, INPUT); // button on pin 2 // turn on the green light

digitalWrite(carGreen, HIGH);

digitalWrite(pedRed, HIGH);

}

 

void loop() {

int state = digitalRead(button); /* check if button is pressed and it is over 5 seconds since last button press */

if (state == HIGH && (millis() – changeTime) > 5000) {

changeLights();

}

}

 

void changeLights() {

digitalWrite(carGreen, LOW); // green off

digitalWrite(carYellow, HIGH); // yellow on

delay(2000); // wait 2 seconds

 

digitalWrite(carYellow, LOW); // yellow off

digitalWrite(carRed, HIGH); // red on

delay(1000); // wait 1 second till its safe

 

digitalWrite(pedRed, LOW); // ped red off

digitalWrite(pedGreen, HIGH); // ped green on

delay(crossTime); // wait for preset time period

 

// flash the ped green

for (int x=0; x<10; x++) {

digitalWrite(pedGreen, HIGH);

delay(250);

digitalWrite(pedGreen, LOW);

delay(250);

}

// turn ped red on

digitalWrite(pedRed, HIGH);

delay(500);

 

digitalWrite(carYellow, HIGH); // yellow on

digitalWrite(carRed, LOW); //

delay(1000);

 

digitalWrite(carGreen, HIGH);

digitalWrite(carYellow, LOW);

 

changeTime = millis();

 

}

 

Ora potrete decidere se far passare un pedone o una macchina.



2 thoughts on “Tutorial Arduino 5: “Semaforo UK Interattivo”

  1. ma mi dice che c’è un errore qui: if (state == HIGH && (millis() – changeTime) > 5000) {
    mi dice: sketch_feb19c:22: error: stray ‘\’ in program
    sketch_feb19c.cpp: In function ‘void loop()’:
    sketch_feb19c:22: error: expected `)’ before ‘u2013′
    sketch_feb19c:25: error: expected `)’ before ‘}’ token
    sketch_feb19c:25: error: expected primary-expression before ‘}’ token
    sketch_feb19c:25: error: expected `;’ before ‘}’ token

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...