Arduino UNO es la versión mejorada de su predecesor Duemilanove. Incluye función de autorreset, protección de sobrecargas, conector USB para programarlo, totalmente montado con componentes miniatura SMD (salvo el microcontrolador, para poder cambiarlo fácilmente) y nuevo bootloader OptiBoot a 155kbps. La placa se entrega completamente ensamblada y probada con un microcontrolador AVR ATmega328 con un cristal de cuarzo de 16Mhz. El microcontrolador se entrega con un bootloader que permite su programación sin necesidad de ningún tipo de programado externo. Se entrega con el nuevo chip Atmega328 de AVR con 32 KB de memoria de programa en lugar de 16 KB de la anterior versión, RAM de 2KB (antes 1KB) y EEPROM de 1 KB (antes 512 bytes). La carga de los programas también es más rápida ya que el bootloader fue actualizado a una velocidad de 115000 baudios.
Una vez que hemos adquirido nuestro Arduino UNO R3, varios tipos de resistencias, una placa con 8 relés de 10 A, varios pulsadores, varios leds de distintos colores, cablecillos para conexionar,1 conector para pila de 9 V, 1 placa board para simular las instalaciones y algunos otros componentes. procedemos a instalar el software que nos va a ayudar a programar nuestras instalaciones.
Entramos en la página http://www.arduino.cc/es/
Una vez instalado y abierto conectamos nuestra placa a través de su cable y lo configuramos.
PROYECTO nº 1:
Seleccionamos en los ejemplos uno de ellos.
Comenzaremos con algo sencillo explicando paso a paso el porqué de cada cosa.
El primer proyecto que se hace siempre con arduino es el "blink" (parpadeo). También es conocido como el "Hola mundo".
Básicamente consiste en un diodo led (pin 13) que se enciende y se apaga, el tiempo de encendido y apagado es de 1 seg.
Propongo que cambies el tiempo y experimentes. Otro ejercicio es traducir toda la información que aparece a continuación de las //
PROYECTO nº 2:
Vamos a hacer el mismo programa anterior pero ahora utilizaremos el PIN 1 tendremos en cuenta que hay que colocar una resistencia de 220 ohmios en serie con el Led. Os muestro el esquema.
PROYECTO nº 3:
Vamos a transferir al ejercicio que está en los ejemplos FADE (dinmable)
*traducimos el texto. (Solo lo que está a continuación de las //)
*transferimos
*quitamos el cable y colocamos la pila de 9 v en el conector
*modificamos el programa, cambiando los datos que hay y volvemos a transferir.
PROYECTO nº 4:
--ENCENDIDO DE 3 LEDS DE FORMA INTERMITENTE Y ALTERNATIVO--
void setup() { // inicializar los pines digitales como salidas.
pinMode(11, OUTPUT); // led rojo
pinMode(7, OUTPUT); // led verde
pinMode(8, OUTPUT); // led blanco
}
void loop() {
digitalWrite(11, HIGH); // led rojo encendido
delay(100); // tiempo
digitalWrite(11, LOW); // led rojo apagado
delay(500); // tiempo
digitalWrite(7, HIGH); // led verde encendido
delay(200); //tiempo
digitalWrite(7, LOW); // led verde apagado
delay(500); // tiempo
digitalWrite(8, HIGH); // led blanco encendido
delay(175); // tiempo
digitalWrite(8, LOW); // led blanco apagado
delay(200); // tiempo
digitalWrite(7, HIGH);
delay(100);
digitalWrite(7, LOW);
delay(350);
digitalWrite(8, HIGH); //
delay(175); //
digitalWrite(8, LOW); //
}
PROYECTO nº 5:
--SIMULACIÓN DE UN SEMÁFORO--
--SIMULACIÓN DE UN SEMÁFORO--
Tenemos tres leds que se van a ir apagando y encendiendo dependiendo del tiempo que tengamos programado
PROGRAMA DE FUNCIONAMIENTO:
void setup()
{pinMode(8,OUTPUT);//Declaramos los pines a usar y la acción que realizarán
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void loop()
{
digitalWrite(10,HIGH); //Escribimos en el pin 10 "HIGH" un uno lógico para encender Led VERDE
delay(10000); //Esperamos 10 seg.
digitalWrite(10,LOW); //Escribimos en el pin 10 "BAJO" para apagar el Led VERDEdelay(500); //Esperamos medio segundo
digitalWrite(9,HIGH); //Ahora escribimos un "1" lógico en el pin 9,
//que corresponde a nuestro Led amarillo
delay(3000); //Esperamos 3 seg.
digitalWrite(9,LOW); //Apagamos el Led amarillo
digitalWrite(9,HIGH); // Esta es la parte donde se ejecuta el parpadeo del Led, escribimos "HIGH"
delay(500); //Esperamos medio seg.
digitalWrite(9,LOW); // Apagamos el Led
delay(500); //Esperamos medio seg.
digitalWrite(9,HIGH); //Esta parte es la misma que la anterior,
delay(500); //este es el segundo parpadeo de nuestro Led
delay(500);
digitalWrite(9,HIGH);
delay(500);
digitalWrite(9,LOW);
delay(500);
digitalWrite(8,HIGH); //Escribimos un "1" lógico en el pin 8, que corresponde al Led ROJO
delay(10000); //Esperamos 10 seg.digitalWrite(8,LOW); //Escribimos un "0" lógico en el pin 8, apagando el Led ROJO
}
// para practicar puedes ir cambiando los tiempos que hemos puesto entre paréntesis
MODIFICANDO EL EJERCICIO ANTERIOR PODEMOS HACER QUE FUNCIONES DOS SEMÁFOROS.void setup() { //Declaramos los pines a usar y la acción que realizarán pinMode(2,OUTPUT); //LED ROJO pinMode(3,OUTPUT); //LED ROJO pinMode(4,OUTPUT);//LED AMARILLO pinMode(5,OUTPUT); //LED AMARILLO pinMode(6,OUTPUT); //LED VERDE pinMode(7,OUTPUT); //LED VERDE } void loop() { digitalWrite(2,HIGH); //Escribimos en el pin 10 "HIGH" un uno lógico para encender Led ROJO digitalWrite(3,HIGH); delay(10000); //Esperamos 10 seg. digitalWrite(2,LOW); //Escribimos en el pin 10 "BAJO" para apagar el Led ROJO digitalWrite(3,LOW); delay(500); //Esperamos medio segundo digitalWrite(4,HIGH); //Ahora escribimos un "1" lógico en el pin 9, digitalWrite(5,HIGH); //que corresponde a nuestro Led amarillo delay(3000); //Esperamos 3 seg. digitalWrite(4,LOW); //Apagamos el Led amarillo digitalWrite(5,LOW); delay(500); digitalWrite(4,HIGH); // Esta es la parte donde se ejecuta el parpadeo del Led, escribimos "HIGH" digitalWrite(5,HIGH); delay(500); //Esperamos medio seg. digitalWrite(4,LOW); // Apagamos el Led digitalWrite(5,LOW); delay(500); //Esperamos medio seg. digitalWrite(4,HIGH); //Esta parte es la misma que la anterior, digitalWrite(5,HIGH); delay(500); //este es el segundo parpadeo de nuestro Led digitalWrite(4,LOW); digitalWrite(5,LOW); delay(500); digitalWrite(4,HIGH); digitalWrite(5,HIGH); delay(500); digitalWrite(4,LOW); digitalWrite(5,LOW); delay(500); digitalWrite(6,HIGH); //Escribimos un "1" lógico en el pin 8 y 5, que corresponde al Led VERDE digitalWrite(7,HIGH); delay(10000); //Esperamos 10 seg. digitalWrite(6,LOW); //Escribimos un "0" lógico en el pin 8 y en el 5, apagando el Led VERDE digitalWrite(7,LOW); delay(500); }
PROYECTO nº 6:
--Conectamos un pulsador para que se encienda un LED mientras estemos pulsando--
//Declara puertos de entradas y salidas
const int buttonPin = 2; // número del pin para el botón const int ledPin = 13; // número del pin del LED int buttonState = 0; // estado del botón (0 ó LOW es apagado y 1 ó HIGH es encendido) void setup() { // Se identifica el pin 13 como salida pinMode(ledPin, OUTPUT); // Se identifica el pin 2 como entrada pinMode(buttonPin, INPUT); } void loop(){ // Leemos si el botón en pin2 está abierto o cerrado buttonState = digitalRead(buttonPin); // Si está siendo pulsado es HIGH if (buttonState == HIGH) { // Y el LED se enciende digitalWrite(ledPin, HIGH); } else { // Si no es asi, se apaga digitalWrite(ledPin, LOW); } }
const int buttonPin = 2; // número del pin para el botón const int ledPin = 13; // número del pin del LED int buttonState = 0; // estado del botón (0 ó LOW es apagado y 1 ó HIGH es encendido) void setup() { // Se identifica el pin 13 como salida pinMode(ledPin, OUTPUT); // Se identifica el pin 2 como entrada pinMode(buttonPin, INPUT); } void loop(){ // Leemos si el botón en pin2 está abierto o cerrado buttonState = digitalRead(buttonPin); // Si está siendo pulsado es HIGH if (buttonState == HIGH) { // Y el LED se enciende digitalWrite(ledPin, HIGH); } else { // Si no es asi, se apaga digitalWrite(ledPin, LOW); } }
Si en vez de utilizar el led que está en el pin 13, utilizamos el led conectado al pin 1, tenemos que modificar la programación y realizar el siguiente circuito:
VAMOS A REALIZAR UNA LIGERA MODIFICACIÓN AL EJERCICIO.
//Declara puertos de entradas y salidas
int pulsador=2; //Pin donde se encuentra el pulsador, entrada
int led=1; //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
delay(300);
}
else if(digitalRead(pulsador)==LOW);
digitalWrite(led,LOW);
delay(300);
{
//Pulsador NO oprimido
//Apaga el LED
}
}
Desde un pulsador encendemos y apagamos un led conectado al pin 13
* Enciende y apaga un led conectado al pin digital 13
* cuando se presiona el pulsador conectado al pin 7 el Led se APAGA y al volver a soltar, el Led se enciende.
*muestra el concepto de Active-Low (activo en estado bajo)
* que consiste en conectar un botón usando una resistencia
* de pull-up (entre 1 K y 10K)
*/
int ledPin = 13; // seleccionamos pin para el LED
int inPin = 7; // seleccionamos pin para el pulsador
int val = 0; // variable para leer estado del pulsador
void setup() {
pinMode(ledPin, OUTPUT); // configuramos el LED como SALIDA
pinMode(inPin, INPUT); // configuramos el pulsador como ENTRADA
}
void loop(){
val=digitalRead(inPin); //leemos el estado del pulsador
if (val== HIGH) { //verificamos si el valor es alto
//corresponde al botón sin pulsar
digitalWrite(ledPin, LOW); //apagamos el Led
} else
}
digitalWrite(ledPin, HIGH); //encendemos el Led
}
}
PROYECTO nº 8: TELERRUPTOR
PROYECTO nº 12:
Realizado por Santiago Julián
* Enciende y apaga un led conectado al pin digital 13
* cuando se presiona el pulsador conectado al pin 7 el Led se APAGA y al volver a soltar, el Led se enciende.
*muestra el concepto de Active-Low (activo en estado bajo)
* que consiste en conectar un botón usando una resistencia
* de pull-up (entre 1 K y 10K)
*/
int ledPin = 13; // seleccionamos pin para el LED
int inPin = 7; // seleccionamos pin para el pulsador
int val = 0; // variable para leer estado del pulsador
void setup() {
pinMode(ledPin, OUTPUT); // configuramos el LED como SALIDA
pinMode(inPin, INPUT); // configuramos el pulsador como ENTRADA
}
void loop(){
val=digitalRead(inPin); //leemos el estado del pulsador
if (val== HIGH) { //verificamos si el valor es alto
//corresponde al botón sin pulsar
digitalWrite(ledPin, LOW); //apagamos el Led
} else
}
digitalWrite(ledPin, HIGH); //encendemos el Led
}
}
PROYECTO nº 8: TELERRUPTOR
int Pin_pulsador = 2; // Numero del pin en el que se conecta el pulsador al Arduino
int Pin_led = 9; // Numero del pin en el que se conecta la salida al arduino
boolean Telerruptor = false; // Declaramos la variable del telerruptor y la ponemos en fase al // arranque del arduino
void setup()
{
pinMode(Pin_pulsador,INPUT); // Declaramos la variable Pin_pulsador como entrada del arduino
pinMode(Pin_led,OUTPUT); // Declaramos la variable Pin_led como salida del arduino
}
void loop()
{
if (digitalRead(Pin_pulsador) == HIGH) // comprobamos si se acciona el pulsador
{
Telerruptor=!Telerruptor; // Invertimos la salida del telerruptor desde la última pulsación
digitalWrite(Pin_led,Telerruptor); // Escribimos en la salida
delay(300); //Realizamos una pausa para evitar los rebotes de la pulsación
}
}
PROYECTO nº 9:
CONEXIÓN DE UN LED RGB
// Conectamos el LED de la siguiente forma:
// GND -> GND Esta el la patilla mas larga que tiene el led
// RED -> 13 Rojo.
// BLUE -> 12 Azul.
// GREEN -> 11 Verde.
// En cada una de las 3 patillas conectaremos una resistencia de ENTRE 150 y 200 ohmios
#define LEDR 13
#define LEDA 11
#define LEDV 12
int i = 0;
void setup()
{
pinMode(LEDV,OUTPUT);
pinMode(LEDA,OUTPUT);
pinMode(LEDR,OUTPUT);
}
void loop()
{
analogWrite(LEDR,255);
analogWrite(LEDA,255);
analogWrite(LEDV,255);
analogWrite(LEDR,0);
delay(1000);
analogWrite(LEDV,120);
delay(1000);
analogWrite(LEDR,100);
analogWrite(LEDV,120);
delay(1000);
analogWrite(LEDR,215);
analogWrite(LEDV,34);
delay(300);
analogWrite(LEDA,0);
delay(10000);
analogWrite(LEDV,255);
analogWrite(LEDA,55);
delay(10000);
analogWrite(LEDR,22);
analogWrite(LEDV,222);
delay(10000);
analogWrite(LEDV,0);
delay(10000);
analogWrite(LEDR,200);
analogWrite(LEDA,200);
analogWrite(LEDV,100);
for(i=255;i>0;i--)
{
analogWrite(LEDR,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDV,i);
delay(50);
}
for(i=0;i<255;i++)
{
analogWrite(LEDR,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDA,i);
delay(50);
}
for(i=0;i<255;i++)
{
analogWrite(LEDV,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDR,i);
delay(50);
}
analogWrite(LEDV,0);
analogWrite(LEDA,0);
analogWrite(LEDR,0);
}
//podemos ir modificando los números de los colores y ver el resultado
int Pin_led = 9; // Numero del pin en el que se conecta la salida al arduino
boolean Telerruptor = false; // Declaramos la variable del telerruptor y la ponemos en fase al // arranque del arduino
void setup()
{
pinMode(Pin_pulsador,INPUT); // Declaramos la variable Pin_pulsador como entrada del arduino
pinMode(Pin_led,OUTPUT); // Declaramos la variable Pin_led como salida del arduino
}
void loop()
{
if (digitalRead(Pin_pulsador) == HIGH) // comprobamos si se acciona el pulsador
{
Telerruptor=!Telerruptor; // Invertimos la salida del telerruptor desde la última pulsación
digitalWrite(Pin_led,Telerruptor); // Escribimos en la salida
delay(300); //Realizamos una pausa para evitar los rebotes de la pulsación
}
}
PROYECTO nº 9:
CONEXIÓN DE UN LED RGB
// Conectamos el LED de la siguiente forma:
// GND -> GND Esta el la patilla mas larga que tiene el led
// RED -> 13 Rojo.
// BLUE -> 12 Azul.
// GREEN -> 11 Verde.
// En cada una de las 3 patillas conectaremos una resistencia de ENTRE 150 y 200 ohmios
#define LEDR 13
#define LEDA 11
#define LEDV 12
int i = 0;
void setup()
{
pinMode(LEDV,OUTPUT);
pinMode(LEDA,OUTPUT);
pinMode(LEDR,OUTPUT);
}
void loop()
{
analogWrite(LEDR,255);
analogWrite(LEDA,255);
analogWrite(LEDV,255);
analogWrite(LEDR,0);
delay(1000);
analogWrite(LEDV,120);
delay(1000);
analogWrite(LEDR,100);
analogWrite(LEDV,120);
delay(1000);
analogWrite(LEDR,215);
analogWrite(LEDV,34);
delay(300);
analogWrite(LEDA,0);
delay(10000);
analogWrite(LEDV,255);
analogWrite(LEDA,55);
delay(10000);
analogWrite(LEDR,22);
analogWrite(LEDV,222);
delay(10000);
analogWrite(LEDV,0);
delay(10000);
analogWrite(LEDR,200);
analogWrite(LEDA,200);
analogWrite(LEDV,100);
for(i=255;i>0;i--)
{
analogWrite(LEDR,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDV,i);
delay(50);
}
for(i=0;i<255;i++)
{
analogWrite(LEDR,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDA,i);
delay(50);
}
for(i=0;i<255;i++)
{
analogWrite(LEDV,i);
delay(50);
}
for(i=255;i>0;i--)
{
analogWrite(LEDR,i);
delay(50);
}
analogWrite(LEDV,0);
analogWrite(LEDA,0);
analogWrite(LEDR,0);
}
//podemos ir modificando los números de los colores y ver el resultado
PROYECTO nº 10:
PROYECTO nº 11:
*/Ahora usamos dos pulsadores para iluminar más o atenuar la luz del led, para ello debemos utilizar
el Led pin 9, que usa la salida PWM, modulación por ancho de pulso, como si de una salida analógica se tratara.
/*
int ledPin = 9;
int inputPin1 = 2; // pulsador 1
int inputPin2 = 3; // pulsador 2
int p1;
int p2;
int value = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT); }
void loop(){
p1=digitalRead(inputPin1);
p2=digitalRead(inputPin2);
if (p1 == HIGH)
{ value--; }
else if (p2 == HIGH)
{value++; }
value = constrain(value, 0, 255);
analogWrite(ledPin, value);
delay(10);
}
/*
CONTADOR DE PULSOS
Programa que muestra por la pantalla (consola serial) los pulsos que hemos dado al pulsador, según el número de pulsaciones programadas se enciende
un LED.
*/
int conta = 0; //Variable para guardar el número de pulsos
void setup() // Se ejecuta cada vez que el Arduino se inicia
{
Serial.begin(9600); //Inicia comunicación serial
pinMode(2,INPUT); //Configura el pin 2 como una entrada, Pulsador
pinMode(1,OUTPUT); //Configura el pin 13 como una salida, LED
}
//Funcion cíclicla
void loop() // Esta función se mantiene ejecutando
{ // cuando esté el Arduino bajo tensión
if ( digitalRead(2) == HIGH ) // Si el pulsador esta accionado
{
if ( digitalRead(2) == LOW )// Si el pulsador no esta oprimido, flanco de bajada
{
conta++; //Incrementa el contador
Serial.println(conta); //Imprime el valor por consola
delay (200); // Retardo
}
}
if (conta==3) // Si el valor del contador es 3
{
digitalWrite(3,HIGH); //Enciende el LED
}
if (conta==5) // Si el valor del contador es 5
{
digitalWrite(3,LOW); // Apaga el LED
}
}
PROYECTO nº 12:
Realizado por Santiago Julián
Inversión de sentido de giro de un motor con dos pulsadores de marcha y uno de paro
PROYECTO nº 13:
Comenzamos con un nuevo proyecto que consiste en realizar la instalación de un motor dahlander con dos velocidades, una de 750 y otra de 1500 r.p.m.
Cada una de estas velocidades se va a controlar desde un interruptor rotativo a través de contactores y también vamos a tener la posibilidad de ponerlas en funcionamiento y pararlas mediante un teléfono móvil.
Material necesario:
1 interruptor diferencial IV polos
1 interruptor magnetotérmico III
1 interruptor magnetotérmico II
2 relés térmicos
3 contactores
1 arduino MEGA
1 módulo Ethernet shield
1 placa de 2 relés de 5 v
1 router o red wifi
1 teléfono móvil
1 bornero
1 motor III de conexión dahlander
Programa:
Esquema:
Imágenes:
PROYECTO nº 14:
Comenzamos con un nuevo proyecto que consiste en encender una lámpara mediante un sensor.
Al dar una palmada, se enciende la lámpara y al dar dos palmadas, la lámpara se apaga.
Material necesario:
1 Arduino UNO R3
1 un relé de 5 V cc
1 un portalámparas
1 lámpara de 60 W
1 sensor de sonido
Programa:
int led = 13;
int detector;
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int sensorValue = analogRead(A0);
if (sensorValue < 1000 )
{
detector = detector +1;
delay (150);
}
if (detector == 1 )
{ // una palmada(1) (enciende led)
digitalWrite(led, HIGH);
}
if (detector == 3 )
{ // dos palmadas(2+1) (apaga led)
digitalWrite(led, LOW);
delay(100);
detector = 0;
}
Serial.println(sensorValue);
Serial.println(detector);
}
PÁGINA RECOMENDADA:
https://www.youtube.com/playlist?list=PLpOqH6AE0tNgrhG4Lca75PMoE-yHrwcDq
/*INVERSIÓN DEL SENTIDO DE GIRO MEDIANTE PULSADORES DE MARCHA Y PARO*/
/*ESTE CÓDIGO PERMITE EL AUTOMATISMO DE LA INVERSIÓN DEL SENTIDO
DE GIRO DE UN MOTOR TRIFÁSICO MEDIANTE PULSADORES DE MARCHA Y PARO
CON ENCLAVAMIENTO DE LOS CONTACTORES DE GIRO IZQUIERDA Y DERECHA
EL SENTIDO DE GIRO SE SIMULARÁ MEDIANTE DOS LED. EN EL CABLEADO
DEFINITIVO, LAS SALIDAS SE CONECTARÍAN A RELÉS Y DE ESTOS A LOS RESPECTIVOS CONTACTORES*/
int Derecha=10; //Conectaremos el led rojo en el pin 10
int Izquierda=11; //Conectaremos el led rojo en el pin 11
int
Pulsador_D=7; //Conectaremos el pulsador de marcha derecha en el pin 7
int Pulsador_P=3; //Conectaremos el pulsador de paro en el pin 3
int Pulsador_I=4; //Conectaremos el pulsador de marcha izquierda en el pin 4
int Estado_Pulsador_D; //variable que leerá el estado del pulsador de marcha derecha
int Estado_Pulsador_I; //variable que leerá el estado del pulsador de marcha izquierda
int Estado_Pulsador_P; //variable que leerá el estado del pulsador de paro
int Estado_Derecha_D; //variable que leerá el estado de la salida del pin 10
int Estado_Izquierda_I; //variable que leerá el estado de la salida del pin 11
void setup()
{
Serial.begin(9600); //Determinamos que utilizaremos la comunicación serie a 9600 bps
pinMode(Derecha, OUTPUT); //Se declara el pin 10 como salida
pinMode(Izquierda, OUTPUT); //Se declara el pin 11 como salida
pinMode(Pulsador_D, INPUT); // Declara el pin 7 como entrada
pinMode(Pulsador_I, INPUT); // Declara el pin 4 como entrada
pinMode(Pulsador_P, INPUT); // Declara el pin 3 como entrada
}
void loop()
{
Estado_Pulsador_D= digitalRead(Pulsador_D); //Lee el valor del pin 7.
// sera valor alto "1", si esta pulsado
// valor bajo "0", si esta en reposo
Estado_Pulsador_I=digitalRead( Pulsador_I); //Lee el valor del pin 4.
// sera valor alto "1", si esta pulsado
// valor bajo "0", si esta en reposo
Estado_Pulsador_P=digitalRead( Pulsador_P); //Lee el valor del pin 3.
// sera valor alto "1", si esta en pulsado
// valor bajo "0", si esta en reposo
Estado_Derecha_D=digitalRead( Derecha); //Lee el valor de la salida del pin 10.
Estado_Izquierda_I= digitalRead(Izquierda);//Lee el valor de la salida del pin 11.
if (Estado_Pulsador_D==1 && Estado_Izquierda_I==0) // If, equivale a Si como condicional. En este caso
//Si el estado del pulsador marcha derecha es 1 y la salida del pin 11 es 0,
// ejecuta la siguiente instrucción
{
digitalWrite(Derecha,1); //Poner en nivel alto en el pin 10
Serial.print("MARCHA DERECHA,"); // Este es el texto que que aparecerá en la impresión
Serial.println(Estado_ Derecha_D); // imprime el valor del led verde
delay(100);//espera 100 milisegundos
}
if (Estado_Pulsador_P==1)//Si el estado del pulsador paro es 1,
//ejecuta la siguiente instrucción
{
digitalWrite(Derecha,0);// Poner en nivel bajo en el pin 10
Serial.print("PARO,"); // Este es el texto que que aparecerá en la impresión
Serial.println(Estado_ Pulsador_P); // imprime el valor del pulsador de paro
delay(100);//espera 100 milisegundos
}
if (Estado_Pulsador_I==1 && Estado_Derecha_D==0)// If, equivale a Si como condicional. En este caso
//Si el estado del pulsador marcha izquierda es 1 y la salida del pin 10 es 0,
// ejecuta la siguiente instrucción
{
digitalWrite(Izquierda,1); //Poner en nivel alto en el pin 10
Serial.print("MARCHA IZQUIERDA,"); // Este es el texto que aparecerá en la impresión
Serial.println(Estado_ Izquierda_I); // imprime el valor del led rojo
delay(100);//espera 100 milisegundos
}
if (Estado_Pulsador_P==1)//Si el estado del pulsador paro es 1,
//ejecuta la siguiente instrucción
{
digitalWrite(Izquierda,0);// Poner en nivel bajo en el pin 10
Serial.print("PARO,"); // Este es el texto que que aparecerá en la impresión
Serial.println(Estado_ Pulsador_P); // imprime el valor del pulsador de paro
delay(100);//espera 100 milisegundos
}
}
PROYECTO nº 13:
Comenzamos con un nuevo proyecto que consiste en realizar la instalación de un motor dahlander con dos velocidades, una de 750 y otra de 1500 r.p.m.
Cada una de estas velocidades se va a controlar desde un interruptor rotativo a través de contactores y también vamos a tener la posibilidad de ponerlas en funcionamiento y pararlas mediante un teléfono móvil.
Material necesario:
1 interruptor diferencial IV polos
1 interruptor magnetotérmico III
1 interruptor magnetotérmico II
2 relés térmicos
3 contactores
1 arduino MEGA
1 módulo Ethernet shield
1 placa de 2 relés de 5 v
1 router o red wifi
1 teléfono móvil
1 bornero
1 motor III de conexión dahlander
Programa:
Esquema:
Imágenes:
PROYECTO nº 14:
Comenzamos con un nuevo proyecto que consiste en encender una lámpara mediante un sensor.
Al dar una palmada, se enciende la lámpara y al dar dos palmadas, la lámpara se apaga.
Material necesario:
1 Arduino UNO R3
1 un relé de 5 V cc
1 un portalámparas
1 lámpara de 60 W
1 sensor de sonido
Programa:
int led = 13;
int detector;
void setup()
{
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int sensorValue = analogRead(A0);
if (sensorValue < 1000 )
{
detector = detector +1;
delay (150);
}
if (detector == 1 )
{ // una palmada(1) (enciende led)
digitalWrite(led, HIGH);
}
if (detector == 3 )
{ // dos palmadas(2+1) (apaga led)
digitalWrite(led, LOW);
delay(100);
detector = 0;
}
Serial.println(sensorValue);
Serial.println(detector);
}
PROYECTO nº 15:
/*
SENSOR DE COLOR
Programa que muestra por la pantalla (consola serial) el color que está en ese momento delante del sensor, a la vez que se enciende un Led indicando el color.
Para poder establecer los valores del color, colocamos el objeto delante del sensor y según los datos que marque la pantalla serial, así establecemos la configuración.
*/
const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
// LED pins conectados a Arduino
int Ledrojo = 2;
int Ledverde = 3;
int Ledazul = 4;
// Variables
int rojo = 0;
int verde = 0;
int azul = 0;
void setup()
{
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
pinMode(Ledrojo, OUTPUT);
pinMode(Ledverde, OUTPUT);
pinMode(Ledazul, OUTPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
}
void loop()
{
color();
Serial.print("Intensidad Rojo:");
Serial.print(rojo, DEC);
Serial.print(" Intensitad Verde:");
Serial.print(verde, DEC);
Serial.print(" Intensidad Azul:");
Serial.print(azul, DEC);
//Serial.println();
if (rojo >7 && rojo <azul && rojo < verde && rojo < 10)
{
Serial.println(" - (Color Rojo)");
digitalWrite(Ledrojo, HIGH); // LED ROJO ENCENDIDO
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, LOW);
}
else if (azul < rojo && azul < verde)
{
Serial.println(" - (Color Azul)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, HIGH); // LED AZUL ENCENDIDO
}
else if (verde < rojo && verde <azul)
{
Serial.println(" - (Color Verde)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED VERDE ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else if (rojo >30 && azul >38 && verde >45)
{
Serial.println(" - (No hay objeto)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW); // TODOS LOS LEDS APAGADOS
digitalWrite(Ledazul, LOW);
}
else if (rojo >3 && rojo <azul && rojo <verde && rojo <8 && azul <10 && verde <20)
{
Serial.println(" - (Color Rosa)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED ROSA ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else if (rojo >4 && rojo <azul && rojo <verde && rojo <8 && azul <20 && verde <15)
{
Serial.println(" - (Color Naranja)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED NARANJA ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else
{Serial.println();}
delay(400);
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, LOW);
}
void color()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
rojo = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
azul = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
verde = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
PROYECTO nº 16:
Nuestro próximo trabajo consiste en hacer un cubo 4x4x4 con 64 diodos leds.
En este proyecto han participado 5 alumnos y ha realizado cada uno un cubo con leds de distintos colores y resistencias de distintos valores para poder observar su funcionamiento.
A cada cubo se le ha pasado una programación diferente para poder comparar la facilidad de control de los leds de forma individual.
A cada uno de los cubos le hemos preparado una base en la que hemos realizado un circuito impreso para facilitar la estabilidad y el conexionado de la estructura.
Relación de matriales utilizados:
1 Arduino UNO R3
64 leds
4 transistores NPN (2N3904)
16 resistencias 220 ohmios 1/4 de W (con resistencias de 100 ohmios es suficiente)
4 resistencias 1 K ohmio 1/4 de W
1 placa de cobre para hacer el circuito impreso de 10 x 15
Varios conectores macho para Arduino
Hilo de cobre de 0,5 mm2
Estaño
Soldador de 15 W
PROGRAMA:
//CUBO FORMADO POR 64 LEDS 4x4 LED
int C1 = 0;
int C2 = 1;
int C3 = 2;
int C4 = 3;
int C5 = 4;
int C6 = 5;
int C7 = 6;
int C8 = 7;
int C9 = 8;
int C10 = 9;
int C11 = 10;
int C12 = 11;
int C13 = 12;
int C14 = 13;
int C15 = 14;
int C16 = 15;
int L1 = 16;
int L2 = 17;
int L3 = 18;
int L4 = 19;
void setup() {
pinMode(C1, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(C4, OUTPUT);
pinMode(C5, OUTPUT);
pinMode(C6, OUTPUT);
pinMode(C7, OUTPUT);
pinMode(C8, OUTPUT);
pinMode(C9, OUTPUT);
pinMode(C10, OUTPUT);
pinMode(C11, OUTPUT);
pinMode(C12, OUTPUT);
pinMode(C13, OUTPUT);
pinMode(C14, OUTPUT);
pinMode(C15, OUTPUT);
pinMode(C16, OUTPUT);
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
}
void loop() {
digitalWrite(L1, HIGH); //comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(50);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(50);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(50);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(50);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(50);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(50);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(50);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(50);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(50);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(50);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(50);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(50);
digitalWrite(L1, LOW); //entra capa 2
digitalWrite(L2, HIGH);
delay(100);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(100);
digitalWrite(L2, LOW); //entra la capa 3
digitalWrite(L3, HIGH);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(100);
digitalWrite(L3, LOW); //entra la capa 4
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);
delay(250);
digitalWrite(L1, HIGH); //TODOS ENCENDIDOS comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(L1, LOW); //apaga 1ª capa
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L2, HIGH); //enciende 2ª capa
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L2, LOW); // apaga 2ª capa
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L3, HIGH); //comienza 3ª capa
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(L3, LOW); //se apaga capa 3
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L4, HIGH); //se enciende capa 4
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);// se apaga capa 4
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(C1, HIGH); //3ª fase, comienzan las lineas verticales 1 arriba
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C2, HIGH); //2 arriba
delay(250);
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C3, HIGH); //3 arriba
delay(250);
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C4, HIGH); //4 arriba
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(500);
digitalWrite(L1, HIGH); //comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(50);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(50);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(50);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(50);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(50);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(50);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(50);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(50);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(50);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(50);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(50);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(50);
digitalWrite(L1, LOW); //entra capa 2
digitalWrite(L2, HIGH);
delay(100);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(100);
digitalWrite(L2, LOW); //entra la capa 3
digitalWrite(L3, HIGH);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(100);
digitalWrite(L3, LOW); //entra la capa 4
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);
delay(250);
digitalWrite(L1, LOW);// se apaga todo
delay(100);
digitalWrite(L2, LOW);
delay(100);
digitalWrite(L3, LOW);
delay(100);
digitalWrite(L4, LOW);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW); // nueva secuencia
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
digitalWrite(C1, HIGH); //3ª fase, comienzan las lineas verticales 1 arriba
delay(500);
digitalWrite(C1, LOW);
delay(250);
digitalWrite(C2, HIGH); //2 arriba
delay(500);
digitalWrite(C2, LOW);
delay(250);
digitalWrite(C3, HIGH);
delay(500);
digitalWrite(C3, LOW);
delay(250);
digitalWrite(C4, HIGH);
delay(500);
digitalWrite(C4, LOW);
delay(250);
digitalWrite(C8, HIGH); //3 arriba
delay(500);
digitalWrite(C8, LOW);
delay(250);
digitalWrite(C12, HIGH);
delay(500);
digitalWrite(C12, LOW);
delay(250);
digitalWrite(C16, HIGH);
delay(500);
digitalWrite(C16, LOW); //4 arriba
delay(250);
digitalWrite(C15, HIGH);
delay(500);
digitalWrite(C15, LOW);
delay(250);
digitalWrite(C14, HIGH);
delay(500);
digitalWrite(C14, LOW);
delay(250);
digitalWrite(C13, HIGH);
delay(500);
digitalWrite(C13, LOW);
delay(250);
digitalWrite(C9, HIGH);
delay(500);
digitalWrite(C9, LOW);
delay(250);
digitalWrite(C5, HIGH);
delay(500);
digitalWrite(C5, LOW);
delay(250);
digitalWrite(C6, HIGH); // comienzan las 4 del centro
delay(250);
digitalWrite(C6, LOW);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
delay(200);
digitalWrite(C6, HIGH); // repiten las 4 del centro
delay(150);
digitalWrite(C6, LOW);
delay(150);
digitalWrite(C7, HIGH);
delay(150);
digitalWrite(C7, LOW);
delay(100);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
delay(75);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
delay(50);
digitalWrite(C6, HIGH); // repiten las 4 del centro
delay(50);
digitalWrite(C6, LOW);
delay(50);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
delay(50);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
delay(50);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
delay(50);
digitalWrite(L1, LOW); //apagamos todo
delay(100);
digitalWrite(L2, LOW);
delay(100);
digitalWrite(L3, LOW);
delay(100);
digitalWrite(L4, LOW);
delay(100);
}
Imágenes:
PROYECTO nº 17:
EN ESTE PROYECTO VAMOS A ENCENDER VARIAS LÁMPARAS CON EL MANDO DE LA TELEVISIÓN.
Materiales:
*Arduino UNO
*placa con relés para conectar las lámparas
*sensor IR
*varios cables con conectores
*mando a distancia
Programa:
Lo primero que hay que hacer es obtener el código de cada uno de los pulsadores del mando.
Sketch:
Pasamos al Arduino el programa final con los códigos correspondientes a las teclas a accionar.
#include <Arduino.h>
#include <NECIRrcv.h>
#define PIN 3 // pin al que vamos a conectar la patilla de salida del sensor
int led1 = 6;
int led2 = 7;
static int aux = 1;
NECIRrcv ir(IRPIN) ;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
ir.begin() ;
}
void loop()
{
unsigned long ircode ;
while (ir.available()) {
ircode = ir.read() ;
if(ircode == 4010852096){ //en nuestro caso, corresponde con el botón encendido/apagado del //mando para el primer relé, al que hemos conectado un fluorescente de 20 W
if(aux == 0){
digitalWrite(led1, LOW);
aux = 1;
}
else{
digitalWrite(led1, HIGH);
aux = 0;
}
}
if(ircode == 3994140416){ //en nuestro caso, corresponde con el botón encendido/apagado del //mando para el segundo relé, al que hemos conectado una lámpara de 100 W
if(aux == 0){
digitalWrite(led2, LOW);
aux = 1;
}
else{
digitalWrite(led2, HIGH);
aux = 0;
}
}
}
}
Imágenes:
PROYECTO nº 18:
INVERSIÓN DEL SENTIDO DE GIRO DE UN MOTOR TRIFÁSICO CONTROLADO CON EL
Bluetooth DESDE EL TELÉFONO MÓVIL.
Materiales:
*Arduino UNO
*placa con 2 relés para controlar los motores
*módulo HC 05
*varios cables con conectores
*teléfono con el programa BlueTerm
Programa:
//con este programa se controlan los dos relés
#define LED_PIN1 4
#define LED_PIN2 5
int firstSensor = 0; // primer sensor analógico
int secondSensor = 0; // segundo sensor analógico
int inByte = 0; // entrada de byte
boolean status_unlock;
boolean status_bluetooth;
long interval = 1000; // intervalo al abrir y cerrar (milisegundos)
long previousMillis = 0; // almacenará la última vez que fue actualizado LED
int minite,sec;
void setup()
{
// iniciar puerto serie a 19200 bps:
Serial.begin(19200);
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
digitalWrite(LED_PIN1, LOW); // cambiar el LED a:
digitalWrite(LED_PIN2, LOW); //
status_bluetooth = true;
status_unlock = false;
sec = 0;
}
void loop()
{
if (Serial.available() > 0) {
inByte = Serial.read(); // Obtiene byte de entrada:
if(inByte == 'M'){
digitalWrite(LED_PIN1, HIGH); // cambia a:
Serial.print('M'); // marcar
delay(800);
digitalWrite(LED_PIN1, LOW); // cambia a:
status_unlock = false;
inByte = 0;
}
if(inByte == 'P'){
digitalWrite(LED_PIN2, HIGH); // cambia a:
Serial.print('P'); // marcar
delay(800);
digitalWrite(LED_PIN2, LOW); // cambia a:
status_unlock = false;
inByte = 0;
} }
}
Imágenes:
PROYECTO nº 19:
CONTROL DE UN MOTOR TRIFÁSICO CON UN SENSOR DE SONIDO
CON UNA PALMADA SE PONE EN MARCHA Y CON DOS SE PARA.
Materiales:
*Arduino UNO
*placa con 2 relés para controlar el motor
*módulo HC20
*varios cables con conectores
Programa:
-------------------------------------------------
--------------------------------------------------------------------------------
Sensores a utilizar en los siguientes proyectos:
:
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
// LED pins conectados a Arduino
int Ledrojo = 2;
int Ledverde = 3;
int Ledazul = 4;
// Variables
int rojo = 0;
int verde = 0;
int azul = 0;
void setup()
{
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
pinMode(Ledrojo, OUTPUT);
pinMode(Ledverde, OUTPUT);
pinMode(Ledazul, OUTPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
}
void loop()
{
color();
Serial.print("Intensidad Rojo:");
Serial.print(rojo, DEC);
Serial.print(" Intensitad Verde:");
Serial.print(verde, DEC);
Serial.print(" Intensidad Azul:");
Serial.print(azul, DEC);
//Serial.println();
if (rojo >7 && rojo <azul && rojo < verde && rojo < 10)
{
Serial.println(" - (Color Rojo)");
digitalWrite(Ledrojo, HIGH); // LED ROJO ENCENDIDO
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, LOW);
}
else if (azul < rojo && azul < verde)
{
Serial.println(" - (Color Azul)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, HIGH); // LED AZUL ENCENDIDO
}
else if (verde < rojo && verde <azul)
{
Serial.println(" - (Color Verde)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED VERDE ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else if (rojo >30 && azul >38 && verde >45)
{
Serial.println(" - (No hay objeto)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW); // TODOS LOS LEDS APAGADOS
digitalWrite(Ledazul, LOW);
}
else if (rojo >3 && rojo <azul && rojo <verde && rojo <8 && azul <10 && verde <20)
{
Serial.println(" - (Color Rosa)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED ROSA ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else if (rojo >4 && rojo <azul && rojo <verde && rojo <8 && azul <20 && verde <15)
{
Serial.println(" - (Color Naranja)");
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, HIGH); // LED NARANJA ENCENDIDO
digitalWrite(Ledazul, LOW);
}
else
{Serial.println();}
delay(400);
digitalWrite(Ledrojo, LOW);
digitalWrite(Ledverde, LOW);
digitalWrite(Ledazul, LOW);
}
void color()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
rojo = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
azul = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
verde = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
PROYECTO nº 16:
Nuestro próximo trabajo consiste en hacer un cubo 4x4x4 con 64 diodos leds.
En este proyecto han participado 5 alumnos y ha realizado cada uno un cubo con leds de distintos colores y resistencias de distintos valores para poder observar su funcionamiento.
A cada cubo se le ha pasado una programación diferente para poder comparar la facilidad de control de los leds de forma individual.
A cada uno de los cubos le hemos preparado una base en la que hemos realizado un circuito impreso para facilitar la estabilidad y el conexionado de la estructura.
Relación de matriales utilizados:
1 Arduino UNO R3
64 leds
4 transistores NPN (2N3904)
16 resistencias 220 ohmios 1/4 de W (con resistencias de 100 ohmios es suficiente)
4 resistencias 1 K ohmio 1/4 de W
1 placa de cobre para hacer el circuito impreso de 10 x 15
Varios conectores macho para Arduino
Hilo de cobre de 0,5 mm2
Estaño
Soldador de 15 W
PROGRAMA:
//CUBO FORMADO POR 64 LEDS 4x4 LED
int C1 = 0;
int C2 = 1;
int C3 = 2;
int C4 = 3;
int C5 = 4;
int C6 = 5;
int C7 = 6;
int C8 = 7;
int C9 = 8;
int C10 = 9;
int C11 = 10;
int C12 = 11;
int C13 = 12;
int C14 = 13;
int C15 = 14;
int C16 = 15;
int L1 = 16;
int L2 = 17;
int L3 = 18;
int L4 = 19;
void setup() {
pinMode(C1, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(C4, OUTPUT);
pinMode(C5, OUTPUT);
pinMode(C6, OUTPUT);
pinMode(C7, OUTPUT);
pinMode(C8, OUTPUT);
pinMode(C9, OUTPUT);
pinMode(C10, OUTPUT);
pinMode(C11, OUTPUT);
pinMode(C12, OUTPUT);
pinMode(C13, OUTPUT);
pinMode(C14, OUTPUT);
pinMode(C15, OUTPUT);
pinMode(C16, OUTPUT);
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
}
void loop() {
digitalWrite(L1, HIGH); //comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(50);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(50);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(50);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(50);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(50);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(50);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(50);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(50);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(50);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(50);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(50);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(50);
digitalWrite(L1, LOW); //entra capa 2
digitalWrite(L2, HIGH);
delay(100);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(100);
digitalWrite(L2, LOW); //entra la capa 3
digitalWrite(L3, HIGH);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(100);
digitalWrite(L3, LOW); //entra la capa 4
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);
delay(250);
digitalWrite(L1, HIGH); //TODOS ENCENDIDOS comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(L1, LOW); //apaga 1ª capa
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L2, HIGH); //enciende 2ª capa
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L2, LOW); // apaga 2ª capa
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L3, HIGH); //comienza 3ª capa
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(L3, LOW); //se apaga capa 3
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(L4, HIGH); //se enciende capa 4
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);// se apaga capa 4
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW);
digitalWrite(C1, HIGH); //3ª fase, comienzan las lineas verticales 1 arriba
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C2, HIGH); //2 arriba
delay(250);
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C3, HIGH); //3 arriba
delay(250);
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C4, HIGH); //4 arriba
delay(250);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C13, HIGH);
delay(250);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C16, HIGH);
delay(500);
digitalWrite(L1, HIGH); //comienza capa 1 arriba
digitalWrite(C1, HIGH);
delay(500);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(50);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(50);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(50);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(50);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(50);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(50);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(50);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(50);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(50);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(50);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(50);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(50);
digitalWrite(L1, LOW); //entra capa 2
digitalWrite(L2, HIGH);
delay(100);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(100);
digitalWrite(L2, LOW); //entra la capa 3
digitalWrite(L3, HIGH);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, HIGH);
delay(100);
digitalWrite(C2, LOW);
digitalWrite(C3, HIGH);
delay(100);
digitalWrite(C3, LOW);
digitalWrite(C4, HIGH);
delay(100);
digitalWrite(C4, LOW);
digitalWrite(C8, HIGH);
delay(100);
digitalWrite(C8, LOW);
digitalWrite(C7, HIGH);
delay(100);
digitalWrite(C7, LOW);
digitalWrite(C6, HIGH);
delay(100);
digitalWrite(C6, LOW);
digitalWrite(C5, HIGH);
delay(100);
digitalWrite(C5, LOW);
digitalWrite(C9, HIGH);
delay(100);
digitalWrite(C9, LOW);
digitalWrite(C10, HIGH);
delay(100);
digitalWrite(C10, LOW);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
digitalWrite(C12, HIGH);
delay(100);
digitalWrite(C12, LOW);
digitalWrite(C16, HIGH);
delay(100);
digitalWrite(C16, LOW);
digitalWrite(C15, HIGH);
delay(100);
digitalWrite(C15, LOW);
digitalWrite(C14, HIGH);
delay(100);
digitalWrite(C14, LOW);
digitalWrite(C13, HIGH);
delay(100);
digitalWrite(L3, LOW); //entra la capa 4
digitalWrite(L4, HIGH);
delay(250);
digitalWrite(C13, LOW);
digitalWrite(C14, HIGH);
delay(250);
digitalWrite(C14, LOW);
digitalWrite(C15, HIGH);
delay(250);
digitalWrite(C15, LOW);
digitalWrite(C16, HIGH);
delay(250);
digitalWrite(C16, LOW);
digitalWrite(C12, HIGH);
delay(250);
digitalWrite(C12, LOW);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
digitalWrite(C9, HIGH);
delay(250);
digitalWrite(C9, LOW);
digitalWrite(C5, HIGH);
delay(250);
digitalWrite(C5, LOW);
digitalWrite(C6, HIGH);
delay(250);
digitalWrite(C6, LOW);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
digitalWrite(C8, HIGH);
delay(250);
digitalWrite(C8, LOW);
digitalWrite(C4, HIGH);
delay(250);
digitalWrite(C4, LOW);
digitalWrite(C3, HIGH);
delay(250);
digitalWrite(C3, LOW);
digitalWrite(C2, HIGH);
delay(250);
digitalWrite(C2, LOW);
digitalWrite(C1, HIGH);
delay(250);
digitalWrite(L4, LOW);
delay(250);
digitalWrite(L1, LOW);// se apaga todo
delay(100);
digitalWrite(L2, LOW);
delay(100);
digitalWrite(L3, LOW);
delay(100);
digitalWrite(L4, LOW);
delay(100);
digitalWrite(C1, LOW);
digitalWrite(C2, LOW);
digitalWrite(C3, LOW);
digitalWrite(C4, LOW);
digitalWrite(C5, LOW);
digitalWrite(C6, LOW);
digitalWrite(C7, LOW);
digitalWrite(C8, LOW);
digitalWrite(C9, LOW);
digitalWrite(C10, LOW);
digitalWrite(C11, LOW);
digitalWrite(C12, LOW);
digitalWrite(C13, LOW);
digitalWrite(C14, LOW);
digitalWrite(C15, LOW);
digitalWrite(C16, LOW); // nueva secuencia
digitalWrite(L1, HIGH);
delay(250);
digitalWrite(L2, HIGH);
delay(250);
digitalWrite(L3, HIGH);
delay(250);
digitalWrite(L4, HIGH);
digitalWrite(C1, HIGH); //3ª fase, comienzan las lineas verticales 1 arriba
delay(500);
digitalWrite(C1, LOW);
delay(250);
digitalWrite(C2, HIGH); //2 arriba
delay(500);
digitalWrite(C2, LOW);
delay(250);
digitalWrite(C3, HIGH);
delay(500);
digitalWrite(C3, LOW);
delay(250);
digitalWrite(C4, HIGH);
delay(500);
digitalWrite(C4, LOW);
delay(250);
digitalWrite(C8, HIGH); //3 arriba
delay(500);
digitalWrite(C8, LOW);
delay(250);
digitalWrite(C12, HIGH);
delay(500);
digitalWrite(C12, LOW);
delay(250);
digitalWrite(C16, HIGH);
delay(500);
digitalWrite(C16, LOW); //4 arriba
delay(250);
digitalWrite(C15, HIGH);
delay(500);
digitalWrite(C15, LOW);
delay(250);
digitalWrite(C14, HIGH);
delay(500);
digitalWrite(C14, LOW);
delay(250);
digitalWrite(C13, HIGH);
delay(500);
digitalWrite(C13, LOW);
delay(250);
digitalWrite(C9, HIGH);
delay(500);
digitalWrite(C9, LOW);
delay(250);
digitalWrite(C5, HIGH);
delay(500);
digitalWrite(C5, LOW);
delay(250);
digitalWrite(C6, HIGH); // comienzan las 4 del centro
delay(250);
digitalWrite(C6, LOW);
delay(250);
digitalWrite(C7, HIGH);
delay(250);
digitalWrite(C7, LOW);
delay(250);
digitalWrite(C11, HIGH);
delay(250);
digitalWrite(C11, LOW);
delay(250);
digitalWrite(C10, HIGH);
delay(250);
digitalWrite(C10, LOW);
delay(200);
digitalWrite(C6, HIGH); // repiten las 4 del centro
delay(150);
digitalWrite(C6, LOW);
delay(150);
digitalWrite(C7, HIGH);
delay(150);
digitalWrite(C7, LOW);
delay(100);
digitalWrite(C11, HIGH);
delay(100);
digitalWrite(C11, LOW);
delay(75);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
delay(50);
digitalWrite(C6, HIGH); // repiten las 4 del centro
delay(50);
digitalWrite(C6, LOW);
delay(50);
digitalWrite(C7, HIGH);
delay(50);
digitalWrite(C7, LOW);
delay(50);
digitalWrite(C11, HIGH);
delay(50);
digitalWrite(C11, LOW);
delay(50);
digitalWrite(C10, HIGH);
delay(50);
digitalWrite(C10, LOW);
delay(50);
digitalWrite(L1, LOW); //apagamos todo
delay(100);
digitalWrite(L2, LOW);
delay(100);
digitalWrite(L3, LOW);
delay(100);
digitalWrite(L4, LOW);
delay(100);
}
Imágenes:
PROYECTO nº 17:
EN ESTE PROYECTO VAMOS A ENCENDER VARIAS LÁMPARAS CON EL MANDO DE LA TELEVISIÓN.
Materiales:
*Arduino UNO
*placa con relés para conectar las lámparas
*sensor IR
*varios cables con conectores
*mando a distancia
Programa:
Lo primero que hay que hacer es obtener el código de cada uno de los pulsadores del mando.
Sketch:
#include <Arduino.h>
#include <NECIRrcv.h>
#define PIN 3 // pin al que conectamos la patilla de salida del receptor de IR
static int aux = 1;
NECIRrcv ir(IRPIN) ;
void setup()
{
Serial.begin(9600) ;
Serial.println("NEC IR codigo recepcion") ;//obtenemos el código
ir.begin() ;
}
void loop()
{
unsigned long ircode ;
while (ir.available()) {
ircode = ir.read() ;
Serial.println(ircode) ;
}
}
Anotamos los códigos obtenidos, hay que tener en cuenta que cada mando tiene un código diferente.Pasamos al Arduino el programa final con los códigos correspondientes a las teclas a accionar.
#include <Arduino.h>
#include <NECIRrcv.h>
#define PIN 3 // pin al que vamos a conectar la patilla de salida del sensor
int led1 = 6;
int led2 = 7;
static int aux = 1;
NECIRrcv ir(IRPIN) ;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
ir.begin() ;
}
void loop()
{
unsigned long ircode ;
while (ir.available()) {
ircode = ir.read() ;
if(ircode == 4010852096){ //en nuestro caso, corresponde con el botón encendido/apagado del //mando para el primer relé, al que hemos conectado un fluorescente de 20 W
if(aux == 0){
digitalWrite(led1, LOW);
aux = 1;
}
else{
digitalWrite(led1, HIGH);
aux = 0;
}
}
if(ircode == 3994140416){ //en nuestro caso, corresponde con el botón encendido/apagado del //mando para el segundo relé, al que hemos conectado una lámpara de 100 W
if(aux == 0){
digitalWrite(led2, LOW);
aux = 1;
}
else{
digitalWrite(led2, HIGH);
aux = 0;
}
}
}
}
Imágenes:
PROYECTO nº 18:
INVERSIÓN DEL SENTIDO DE GIRO DE UN MOTOR TRIFÁSICO CONTROLADO CON EL
Bluetooth DESDE EL TELÉFONO MÓVIL.
Materiales:
*Arduino UNO
*placa con 2 relés para controlar los motores
*módulo HC 05
*varios cables con conectores
*teléfono con el programa BlueTerm
Programa:
//con este programa se controlan los dos relés
#define LED_PIN1 4
#define LED_PIN2 5
int firstSensor = 0; // primer sensor analógico
int secondSensor = 0; // segundo sensor analógico
int inByte = 0; // entrada de byte
boolean status_unlock;
boolean status_bluetooth;
long interval = 1000; // intervalo al abrir y cerrar (milisegundos)
long previousMillis = 0; // almacenará la última vez que fue actualizado LED
int minite,sec;
void setup()
{
// iniciar puerto serie a 19200 bps:
Serial.begin(19200);
pinMode(LED_PIN1, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
digitalWrite(LED_PIN1, LOW); // cambiar el LED a:
digitalWrite(LED_PIN2, LOW); //
status_bluetooth = true;
status_unlock = false;
sec = 0;
}
void loop()
{
if (Serial.available() > 0) {
inByte = Serial.read(); // Obtiene byte de entrada:
if(inByte == 'M'){
digitalWrite(LED_PIN1, HIGH); // cambia a:
Serial.print('M'); // marcar
delay(800);
digitalWrite(LED_PIN1, LOW); // cambia a:
status_unlock = false;
inByte = 0;
}
if(inByte == 'P'){
digitalWrite(LED_PIN2, HIGH); // cambia a:
Serial.print('P'); // marcar
delay(800);
digitalWrite(LED_PIN2, LOW); // cambia a:
status_unlock = false;
inByte = 0;
} }
}
Imágenes:
PROYECTO nº 19:
CONTROL DE UN MOTOR TRIFÁSICO CON UN SENSOR DE SONIDO
CON UNA PALMADA SE PONE EN MARCHA Y CON DOS SE PARA.
Materiales:
*Arduino UNO
*placa con 2 relés para controlar el motor
*módulo HC20
*varios cables con conectores
Programa:
-------------------------------------------------
--------------------------------------------------------------------------------
Sensores a utilizar en los siguientes proyectos:
:
PÁGINA RECOMENDADA:
https://www.youtube.com/playlist?list=PLpOqH6AE0tNgrhG4Lca75PMoE-yHrwcDq