Sei sulla pagina 1di 8

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()

{
Serial.begin(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++;
Serial.println(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))
;
}

Potrebbero piacerti anche