Nombre:
Fecha: 05/02/2015
ARDUINO BSICO T10AB - ENCENDER LED CON UN PULSADOR
Encender LED con un pulsador
1
2
3
4
5
6
7
/*
----------------------------------Encender LED con un pulsador
----------------------------------Oprimir un pulsador y mientras este se mantenga accionado
un LED se enciende
Encender LED con un pulsador
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
Cosas de Mecatrnica y Tienda de Robtica
*/
//-----------------------------------//Declara puertos de entradas y salidas
//-----------------------------------int pulsador=2;
//Pin donde se encuentra el pulsador, entrada
int led=13;
//Pin donde se encuentra el LED, salida
//-----------------------------------//Funcion principal
//-----------------------------------void setup() // Se ejecuta cada vez que el Arduino se inicia
{
pinMode(pulsador, INPUT); //Configurar el pulsador como una entrada
pinMode(led,OUTPUT);
//Configurar el LED como una salida
}
//-----------------------------------//Funcion ciclicla
//-----------------------------------void loop() // Esta funcion se mantiene ejecutando
{
// cuando este energizado el Arduino
//Condicional para saber estado del pulsador
if (digitalRead(pulsador)==HIGH)
{
//Pulsador oprimido
digitalWrite(led,HIGH); //Enciende el LED
}
else
{
//Pulsador NO oprimido
digitalWrite(led,LOW); //Apaga el LED
}
}
//Fin programa
Encender LED con un pulsador
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
SEMFORO CON ARDUINO, USANDO INTERRUPCIONES
Introduccin
Crearemos un semforo con tiempos inferiores a los reales, para poder probarlo
ms rpidamente. Introducimos un pulsador para ir conmutando entre
semforo y otras funciones como dejar encendido un led rojo, etc.
Funcionamiento.
Monta el circuito y carga el programa al arduino.
Inicialmente todos los leds deben estar apagados.
Al pulsar una vez el botn, se activar el modo semforo.
Si pulsamos otra vez se enciende solo el led rojo.
Si pulsamos una tercera vez se enciende el led mbar.
Si pulsamos una cuarta vez se enciende el led verde.
Al pulsar una quinta vez el contador se pone a cero, se apagan todos los leds, y
se vuelve a repetir este proceso.
CIRCUITO DEL SEMFORO Y SU PROGRAMA PARA EL ARDUINO :
Programa:
//Semaforo controlado por pulsador
void encendersemaforo();
//const int buttonPin = 2; // PULSADOR
int ledPin1 = 8; //LED VERDE
int ledPin2 = 9; //LED AMBAR
int ledPin3 = 10; //LED ROJO
int contador = 0;
long tpo = millis();
void setup()
{
[Link](9600);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
// pinMode(buttonPin, INPUT);
attachInterrupt(0, Fon_Contar, RISING);
}
void loop ()
{
switch (contador)
{
case 0:
// APAGA TODOS LOS LEDS
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
break;
case 1: // ENCIENDE EL SEMAFORO
encenderSemaforo();
break;
case 2:
// ENCIENDE EL LED ROJO
digitalWrite(ledPin1,LOW);
// APAPGA VERDE
digitalWrite(ledPin2,LOW);
// APAGA AMBAR
digitalWrite(ledPin3,HIGH); // ENCIENDE ROJO
break;
case 3:
// ENCIENDE EL LED AMBAR
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,HIGH);
// APAPGA VERDE
// ENCIENDE AMBAR
digitalWrite(ledPin3,LOW); // APAGA ROJO
break;
case 4:
// ENCIENDE EL LED VERDE
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,LOW);
// ENCIENDE VERDE
// APAGA AMBAR
digitalWrite(ledPin3,LOW); // APAGA ROJO
break;
case 5:
// REINICIA EL CONTADOR
contador= 0;
break;
void Fon_Contar()
// Este contador cuenda cada vez que el pulsador
pasa de estado LOW a HIGH
{
contador++;
[Link](contador);
if (contador > 4) contador = 0;
}
void encenderSemaforo()
{
delayx(500);
digitalWrite(ledPin1, HIGH); // VERDE
delayx (2500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH); // AMBAR
delayx(200);
digitalWrite(ledPin2, LOW);
delayx(200);
digitalWrite(ledPin2, HIGH); // AMBAR
delayx(200);
digitalWrite(ledPin2, LOW);
delayx(200);
digitalWrite(ledPin2, HIGH); // AMBAR
delayx(2000);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH); // ROJO
delayx(2000);
digitalWrite(ledPin3, LOW);
}
void delayx(int valor)
{
long tpo = millis();
while ((( millis() - tpo) < valor) && (contador == 1))
;
}