Go Down

Topic: NECESITO AYUDA CON UN CONTROL DE LUCES (Read 3992 times) previous topic - next topic

airian

Estimados, soy nuevo en arduino pero eh hecho algunas cosas, pero esto me gano definitivamente, les cuento necesito hacer lo siguiente :


teniendo 4 botones y 4 leds, necesito hacer que el boto 1 prenda led 1 , boton 2 encienda led 2 y asi con los 4, espero me puedan ayudar con el programa, vale decir que tengo un arduino UNO

Marcial


airian

si eh tratado de modificar el ejemplo buton, pero no me resulta D=

Marcial

Pon los numero de pin que te convengan, y ojo con el esquema electrico

Code: [Select]

byte Pin_Pulsador[]={2,3,4,5};  // Pines de los pulsadores
byte      Pin_Led[]={6,7,8,9};  // Pines de los led
boolean Pulsador[4];            // Para almecenar el estado de las entradas

void setup()
{  
 for (int x=0;x<4;x++)
 {
   pinMode (Pin_Pulsador[x], INPUT);  // Establecer pines de entrada
   pinMode (Pin_Led[x], OUTPUT);      // Establecer pines de salida
   digitalWrite(Pin_Led[x], LOW);     // Pines de salida a low para iniciar programa
 }
}

void loop()
{
 for (int x=0;x<4;x++)
 {
   Pulsador[x]=digitalRead(Pin_Pulsador[x]);  // Almacenar el estado de los pines de entrada
   digitalWrite(Pin_Led[x], Pulsador[x]);     // Escribir pines de salida
 }
}


PD: Hay una cosa que se llama interruptor que hace lo mismo sin tanta complicación  :smiley-mr-green:

airian

disculpa por no haber agradecido antes es por que no estuve con internet, una cosa que me pregunto, esta programacion esta lista para usarla, me refiero a que si activo 2 se enciende en 6 o hay que programar mas este archivo???

Marcial

Tienes que cambiarle los números de los pines que vallas a usar

airian

me resulto=D muchas gracias, la otra duda que tengo es como hacer un blink a 2 de estas luces para hacer el funcionamiento del intermitente

Marcial

aquí tienes un parapdeo,  échale una mirada, si no lo pillas dime que te lo adapto
http://forum.arduino.cc/index.php?topic=201162.0

airian

Esto es lo que tengo, pero necesito en el led 10 y 13 generar un parpadeo como en los automoviles



Code: [Select]
byte Pin_Pulsador[]={1,2,3,4};  // Pines de los pulsadores
byte      Pin_Led[]={10,11,12,13};  // Pines de los led
boolean Pulsador[4];            // Para almecenar el estado de las entradas

void setup()
{   
  for (int x=0;x<4;x++)
  {
    pinMode (Pin_Pulsador[x], INPUT);  // Establecer pines de entrada
    pinMode (Pin_Led[x], OUTPUT);      // Establecer pines de salida
    digitalWrite(Pin_Led[x], LOW);     // Pines de salida a low para iniciar programa
  }
}

void loop()
{
  for (int x=0;x<4;x++)
  {
    Pulsador[x]=digitalRead(Pin_Pulsador[x]);  // Almacenar el estado de los pines de entrada
    digitalWrite(Pin_Led[x], Pulsador[x]);     // Escribir pines de salida
  }
}

Marcial

#9
Dec 08, 2013, 04:25 pm Last Edit: Dec 08, 2013, 04:35 pm by Marcial Reason: 1
No tengo en casa con que probarlo, pero creo que funcionara

Code: [Select]
unsigned long Parpadeo=3000;           // Tiempo en milisegundos que va a durar el parpadeo de cada led
unsigned long Tiempo_Almacenado;       // Tiempo en milisegundos para controlar el parpadeo
boolean Permiso_Encender=true;         // Para controlar si puede encender o no
byte Pin_Pulsador[]={1,2,3,4};         // Pines de los pulsadores
byte      Pin_Led[]={10,11,12,13};     // Pines de los led
boolean Pulsador[4];                   // Para almecenar el estado de las entradas
void setup()
{  
 for (int x=0;x<4;x++)                // Recorremos las 4 entradas
 {
   pinMode (Pin_Pulsador[x], INPUT);  // Establecer pines de entrada
   pinMode (Pin_Led[x], OUTPUT);      // Establecer pines de salida
   digitalWrite(Pin_Led[x], LOW);     // Pines de salida a low para iniciar programa
 }
 Tiempo_Almacenado=millis()+Parpadeo; // Tiempo con permiso para encender
}
void loop()
{
 if (Permiso_Encender && millis()>Tiempo_Almacenado)  // Hay permiso encender y finalizo tiempo de permiso
 {
   Permiso_Encender=false;                            // Ya no hay permiso encender
   Tiempo_Almacenado=millis()+Parpadeo;               // Tiempo sin permiso para encender
 }
 if (!Permiso_Encender && millis()>Tiempo_Almacenado) // No hay permiso encender y finalizo tiempo sin permiso
 {
   Permiso_Encender=true;                             // Ya no hay permiso encender
   Tiempo_Almacenado=millis()+Parpadeo;               // Tiempo con permiso para encender
 }
 for (int x=0;x<4;x++)                
 {  
   Pulsador[x]=digitalRead(Pin_Pulsador[x]);          // Almacenar el estado de los pines de entrada
   if (!Permiso_Encender && (x==0 || x==3))           // Si no hay permiso para encender y estamos con primer o ultimo pin
   {
     Pulsador[x]=false;                               // Cambiamos el estado del pulsador para evitar el estado high
   }
   digitalWrite(Pin_Led[x], Pulsador[x]);     // Escribir pines de salida
 }
}

airian

REVISANDO NO EJECUTA EL PARPADEO EN LOS PINES SOLICITADOS

Marcial

Revisarlo mejor  :P

Tienes que poner los pines correctos para tu arduino, cambia:

byte Pin_Pulsador[]={A0,A1,A2,A3};     // Pines de los pulsadores
byte      Pin_Led[]={13,12,11,10};     // Pines de los led

Si no te funciona, revisa el circuito de entrada (pusadores) y de salida (leds)

PD: NOESNECESARIOGRITAR

airian

sorry, por las mayúsculas pero se me olvida que eso significa gritar. Provare en un rato mas eso que me dijiste

airian

estimado cambie los pines como me dijiste y el circuito esta bien, pero aun así no me hace la intermitencia de las luces

Marcial

Pon una foto o esquema del circuito.
yo lo monte en un mega, use otros pines, pero es el mismo código y funciona sin problema

Go Up