01.Jugando con Leds
Practicas Con Arduino
1.-Practica.
Encendido consecutivo de diodos definiendo una temporización.
Objetivos:
• Conocer el entorno de programación.
• Aprender a utilizar varios comandos básicos.
• Utilización de una tarjeta de adquisición de datos y componentes electrónicos de salida.
Comandos utilizados:
Int: Define una variable.
pinMode(2,OUTPUT);: Le decimos a Arduino que la patilla 2 actué como salida.
Delay(): Tiempo en espera.
digitalWrite(2,HIGH):: Le decimos a Arduino que escriba en la patilla 2 un valor alto (5 voltios)
Low: Bajo ("0" Lógico o 0V)
High: Alto ("1" Lógico o 5V)
Operaciones a realizar:
Empezamos dibujando en Fritzing el circuito a montar, tal como vemos en la siguiente imagen :
Posteriormente seguimos estos sencillos pasos de montaje :
Coloca varios diodos leds como aparecen en la foto, utilizando las patillas 2,3,4,5
Copiar y pegar el programa en el entorno de arduino.
Ejemplo 1 .. con 4 diodos
Ejemplo 2 .. con 5 diodos
Programa para seis diodos
int tiempo=150; //declara una variable como entero y de valor 150
void setup() { //comienza la configuracion de la placa, pines digitales de salida.
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
digitalWrite(6,HIGH);
delay(tiempo);
digitalWrite(6,LOW);
delay(tiempo);
digitalWrite(7,HIGH);
delay(tiempo);
digitalWrite(7,LOW);
delay(tiempo);}
Programa para cuatro diodos
int tiempo=150; //declara una variable como entero y de valor 150
void setup() { //comienza la configuracion de la placa, pines digitales de salida.
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() { //comienza el bucle principal del programa
digitalWrite(2,HIGH);
delay(tiempo);
digitalWrite(2,LOW);
delay(tiempo);
digitalWrite(3,HIGH);
delay(tiempo);
digitalWrite(3,LOW);
delay(tiempo);
digitalWrite(4,HIGH);
delay(tiempo);
digitalWrite(4,LOW);
delay(tiempo);
digitalWrite(5,HIGH);
delay(tiempo);
digitalWrite(5,LOW);
delay(tiempo);
}
Otra posible solución
Programa
int tiempo=300;
int n;
void setup() { //comienza la configuracion
for (n=2;n<6;n++) {
pinMode (n, OUTPUT);
}
}
void secuencia() {
for (n=2;n<6;n++) {
digitalWrite (n, HIGH);
delay (tiempo);
digitalWrite (n, LOW);
delay (tiempo);
}
}
void loop() {
secuencia();
}
2º- Practica.
Semáforos.
Hecho con Fritzing
Descripción.
Vamos a realizar con diodos la simulación de un semáforo de verdad controlado por arduino, para ello utilizaremos el montaje anterior y algo mas.
Recorrido
Rojo (pin 0)
Objetivos:
Familiarizarse con el entorno de programación.
Aprender a declarar variables tipo lista de valores.
Solución Clasica
Programa
// Variables del programa
int pin0 = 0; // Rojo
int pin1 = 1; // Amarillo
int pin2 = 2; // Verde
int pin3 = 3; // Rojo
int pin4 = 4; // Amarillo
int pin5 = 5; // Verde
int timer1 = 2500;// Tiempo 1
int timer2 = 1500; // Tiempo 2
void setup(){
pinMode(pin0, OUTPUT); // Configuración de la placa, pines de salida.
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
}
void loop() {
digitalWrite(pin0, HIGH); // Rojo 1º Semaforo y Verde 2º Semaforo
digitalWrite(pin5, HIGH);
delay(timer1);
digitalWrite(pin5, LOW); // 2º Semaforo Amarillo encendido y Verde apagado
digitalWrite(pin4, HIGH);
delay(timer2);
digitalWrite(pin4, LOW); // 2º Semaforo Amarillo apagado y Rojo
digitalWrite(pin3, HIGH);
digitalWrite(pin0, LOW); // 1º semaforo Rojo apagado y Verde encendido
digitalWrite(pin2, HIGH);
delay(timer1);
digitalWrite(pin2, LOW); // 1º semaforo Verde apagado y Amarillo encendido
digitalWrite(pin1, HIGH);
delay(timer2);
digitalWrite(pin1, LOW); // 1º semaforo Amarillo apagado y 2º Semaforo Rojo apagado
digitalWrite(pin3, LOW);
}
Otra solución
Programa:
int leds[]={0,1,2,3,4,5);
int tiempo1=2000;
int tiempo2=400;
int n;
void setup() {
for (n=0;n<5;n++) {
pinMode (leds[n],OUTPUT);
}
}
void loop () {
digitalWrite(pin0, HIGH); // Rojo 1º Semaforo y Verde 2º Semaforo
digitalWrite(pin5, HIGH);
delay(timer1);
digitalWrite(pin5, LOW); // 2º Semaforo Amarillo encendido y Verde apagado
digitalWrite(pin4, HIGH);
delay(timer2);
digitalWrite(pin4, LOW); // 2º Semaforo Amarillo apagado y Rojo
digitalWrite(pin3, HIGH);
digitalWrite(pin0, LOW); // 1º semaforo Rojo apagado y Verde encendido
digitalWrite(pin2, HIGH);
delay(timer1);
digitalWrite(pin2, LOW); // 1º semaforo Verde apagado y Amarillo encendido
digitalWrite(pin1, HIGH);
delay(timer2);
digitalWrite(pin1, LOW); // 1º semaforo Amarillo apagado y 2º Semaforo Rojo apagado
digitalWrite(pin3, LOW);
}
4º Practica:
Comprobación de salidas.
Con este programa podemos comprobar si todos los componentes electronicos de la placa estan perfectamente conectados. Cuando no nos funciona una practica, o no realiza la funcion deseada, pudemos utilizar este progrma que pone todas las salidas digitales en un valor alto, en caso de utilizar diodos veremos como todos se encienden y podremos descartar que el fallo se encuentre en las conexiones.
Programa
int leds[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
int n;
void setup() {
for (n=0;n<13;n++) {
pinMode (leds[n],OUTPUT);
}}
void secuencia() {
for (n=0;n<13;n++) {
digitalWrite (n, HIGH);
}
}
void loop() {
secuencia();
}