Secuencia de leds con pulsador.
Se trata de encender y apagar 6 leds secuencialmente al accionar un pulsador. El pulsador debe estar
conectado al pin 8, y los leds a los pines 0,1,2,3,4,5.
Se deben encender y posteriormente apagar los leds desde el pin 0 al 3, con un tiempo de duración de
encendido y apagado de 150 milisegundos.
Nota: la secuencia principal del programa debe estar reproducida en una función a la que llamará el
programa principal.
Objetivos:
Familiarizarse con el entorno de programación.
Aprender a conectar una entrada digital a arduino (pulsador).
Aprender a declarar variables tipo lista de valores.
Aprender a declarar una función y llamarla cuando sea necesario.
Conocer órdenes como: digitalRead.
Conocer órdenes de control de programa como: If.
Videos y fotos, cuidado con la postura del pulsador.
// C++ code
//
int tiempo = 0;
void setup()
{
pinMode(8, INPUT);
pinMode(5, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop()
{
tiempo = 50;
if (digitalRead(8) == 0) {
digitalWrite(5, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(0, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
if (digitalRead(8) == 0) {
digitalWrite(0, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(1, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
if (digitalRead(8) == 0) {
digitalWrite(1, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(2, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
if (digitalRead(8) == 0) {
digitalWrite(2, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(3, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
if (digitalRead(8) == 0) {
digitalWrite(3, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(4, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
if (digitalRead(8) == 0) {
digitalWrite(4, LOW);
delay(tiempo); // Wait for tiempo millisecond(s)
digitalWrite(5, HIGH);
delay(tiempo); // Wait for tiempo millisecond(s)
} else {
delay(3000); // Wait for 3000 millisecond(s)
}
}
Solución:
int leds[]={0,1,2,3};
int pulsador=4;
int tiempo=150;
int n=0;
void setup() {
for(n=0;n<3;n++) {
pinMode (leds[n],OUTPUT);
}
pinMode (pulsador,INPUT);
}
void flash() {
for (n=0;n<3;n++) {
digitalWrite (leds[n],HIGH);
delay (tiempo);
digitalWrite (leds[n],LOW);
delay (tiempo);
}
}
void loop() {
if (digitalRead(pulsador)==HIGH) {
flash ();
}
}
Otra Solución:
int leds[]={0,1,2,3};
int tiempo=150;
int pulsador=4;
int n=0;
int valorpulsador=0;
void setup(){
for(n=0;n<3;n++){
pinMode(leds[n],OUTPUT);
}
pinMode(pulsador,INPUT);
Serial.begin(9600);
}
void monitoriza(){
Serial.print("El valor del pulsador es ...");
Serial.println(valorpulsador);
delay(1000);
}
void secuencia(){
for(n=0;n<4;n++){
digitalWrite(leds[n],HIGH);
delay(tiempo);
digitalWrite(leds[n],LOW);
delay(tiempo);
}
}
void loop(){
valorpulsador=digitalRead(pulsador);
monitoriza();
if (valorpulsador==1){
secuencia();
}
}