
Sirena de policia amb Arduino
Es tracta de encendre i apagar dos LEDs (o més) de manera alternada i intermitent, simulant la sirena d’un cotxe de policia. Aquest és el nostre primer projecte 4ESO del curs 15-16 i és una variant del LED intermitent (Blink).Veieu la idea al vídeo:
Necessitem:
2 leds de diferents colors (mínim) connectats als pins digitals 9 i 10
2 resistències (mínim) pel correcte funcionament dels LEDs (veure procés de càlcul )
Esquema de connexions:
Cada LED necessita la seva pròpia resistència de protecció. La connexió a GND és comú per a tots els LEDs, que han d’estar connectats cada un a un pin digital diferent per poder definir el seu comportament per separat.
S’ha afegit a l’esquema un tercer LED (L3 de color verd, connectat al pin 11) per il·lustrar la connexió de resistències en sèrie (R3.1 + R3.2 = R3).
Programa de referència:
/* Sirena de policia. LEDs intermitents */
// definició de valors constants en tot el programa:
const int led1 = 8; // pin de connexió del LED vermell exterior
const int led2 = 9; // pin de connexió del LED vermell interior
const int led3 = 10; // pin de connexió del LED blau interior
const int led4 = 11; // pin de connexió del LED blau exterior
const int temps = 1000; // temps d’encesa i apagada dels LEDs
void setup()
{ // configuració dels pins de connexió dels LEDs com a sortides digitals:
..pinMode(led1, OUTPUT);
..pinMode(led2, OUTPUT);
..pinMode(led3, OUTPUT);
..pinMode(led4, OUTPUT);
}
void loop()
{
..// encén els LEDs exteriors i apaga els interiors …
..digitalWrite(led1, HIGH);
..digitalWrite(led2, LOW);
..digitalWrite(led3, LOW);
..digitalWrite(led4, HIGH);
..delay(temps); // … durant el temps especificat
..// apaga els LEDs exteriors i encén els interiors …
..digitalWrite(led1, LOW);
..digitalWrite(led2, HIGH);
..digitalWrite(led3, HIGH);
..digitalWrite(led4, LOW);
..delay(temps); // … durant el temps especificat
}
Referències del llenguatge:
pinMode (pin, INPUT/OUTPUT);
defineix l’ús del pin especificat com a entrada (INPUT) o sortida (OUTPUT) digital
digitalWrite (pin, HIGH/LOW);
treu un valor alt (HIGH) o baix (LOW) pel un pin especificat
delay (milisegons);
defineix una pausa en l’execució del programa (especificada en milisegons)
const int nom = valor;
defineix un valor nombre enter constant al llarg de tot el programa.