ayuda con arduino y leds

que tal amigos, buen dia antes que nada, tengo un problema
no se como hacer con un trabajo que me encargaron en arduino uno
por eso acudo a los expertos
tengo que hacer funionar 2 leds con 2 switch, pero el codigo no se como hacerlo

debe funcionar asi

con el switch 1, cada que lo presione debe encender un led, y el otro apagarse
asi sucesivamente lo presiono enciende uno se paga el otro,

segundo, cuando presione el switch 2 los leds deben encender y apagar de la manera que se haria con el boton uno
mientras mantengo presionado, al soltar deben de quedarse en el estado actual

tercero, al presionar los 2 switch deben encender los leds juntos, y al soltarlo apagarse

algua idea que me den llevo 2 dias intentando pero no me sale, les agradezco de antemano

Bienvenido al foro.

Mira a ver si funciona correctamente, yo no pude probar

#define ON HIGH              // Cambiar para logica positiva/negativa
#define OF LOW               // Cambiar para logica positiva/negativa
byte Inp[2]={2,3};           // Pines de entrada 
byte Out[2]={4,5};           // Pines de salida
unsigned long T_Pulsa=2000;  // tiempo en ms que durara el parpadeo
unsigned long T_Esp=0;       // Para controlar el tiempo de parpadeo
boolean Pul_1=false;         // Para almacenar el estado del pulsador 1
boolean Pul_2=false;         // Para almacenar el estado del pulsador 2
boolean Apul_1=false;        // Para almacenar el estado anterior del pulsador 1
boolean Apul_2=false;        // Para almacenar el estado anterior del pulsador 2
boolean Led_1=false;         // Para almacenar el estado del led 1
boolean Led_2=false;         // Para almacenar el estado del led 2
bool Apagar=false;           // Para controlar pulsar 2 y soltar     
void setup()   
{
  for (int x=0;x++;x<2)      // Configurar pines
  {
    pinMode (Inp[x], INPUT);
    pinMode (Out[x], OUTPUT);
  }
  GrabarSalidas();           // Salidas a off
}

void loop() 
{
  LeerEntradas();
  if (Pul_1 & Pul_2)                      // Los dos pulsadores pulsados
  {                                                                            
    Led_1=true;                           // Encenderemos  el led 1  
    Led_2=true;                           // Encenderemos  el led 2
    Apagar=true;                          // Permiso para apagar al soltarlos
  }
  if (!Pul_1 & !Pul_2 && Apagar )         // Los dos pulsadores despulsados y ha pasado por los dos pulsados
  {
    Led_1=false;                          // Encenderemos  el led 1  
    Led_2=false;                          // Encenderemos  el led 2
    Apagar=false;                         // Fin permiso apagar
  }
  if (Pul_1 & !Pul_2 & Apul_1!=Pul_1)     // Pulsador 1 cambia a pulsado y no pulsamos el 2
  {                                                                            
    if (!Led_1 && !Led_2) {Led_1=true;}   // Si ambos led estan apagados, empezamos encendiendo el 1                                            
    else                                  // si ya hay alguno encendido, los intercambaimos
    {
      Led_1=!Led_1;                       
      Led_2=!Led_2;
    }                            
  } 
  if (Pul_2 & !Pul_1 & !Apagar)           // Pulsador 2 pulsado, 2 despulsado y no pulsamos los 2 a la vez antes
  {
    if (millis()>T_Esp)                   // Ha sobrepasado el tiempo para parpadeo de leds
    {
      Led_1=!Led_1;                       // Intercambiamos el estado de los led
      Led_2=!Led_2;
      T_Esp=millis()+T_Pulsa;             // Cargamos tiempo para cambio de leds
    }
  }  
  Apul_1=Pul_1;                           // Modificamos estado anterior de los pulsadores
  Apul_2=Pul_2;                           // Modificamos estado anterior de los pulsadores
  GrabarSalidas();
}

void LeerEntradas() 
{
  Pul_1=digitalRead(Inp[0]);              // Leer pin con pull down        
  Pul_2=digitalRead(Inp[1]);              // Leer pin con pull down
  //Pul_1=!digitalRead(Inp[0]);              // Leer pin con pull up        
  //Pul_2=!digitalRead(Inp[1]);              // Leer pin con pull up
}

void GrabarSalidas() 
{
  if (Pul_1) {digitalWrite(Inp[0], ON);} else  {digitalWrite(Inp[0], OF);}       
  if (Pul_2) {digitalWrite(Inp[1], ON);} else  {digitalWrite(Inp[1], OF);}  
}

hola gracias, ya lo probe no hace nada :S, aparte el codigo esta muy completo, no habra algo mas sencillo, que pueda interpretar?
no se mucho de programacion

freddy_267:
hola gracias, ya lo probe no hace nada :S

Error humano, tanto Ctrl+c-Ctrl+v no puede ser bueno :grin:
aquí tienes corregido el error.

#define ON HIGH              // Cambiar para logica positiva/negativa
#define OF LOW               // Cambiar para logica positiva/negativa
byte Inp[2]={2,3};           // Pines de entrada 
byte Out[2]={4,5};           // Pines de salida
unsigned long T_Pulsa=500;   // tiempo en ms que durara el parpadeo
unsigned long T_Esp=0;       // Para controlar el tiempo de parpadeo
boolean Pul_1=false;         // Para almacenar el estado del pulsador 1
boolean Pul_2=false;         // Para almacenar el estado del pulsador 2
boolean Apul_1=false;        // Para almacenar el estado anterior del pulsador 1
boolean Apul_2=false;        // Para almacenar el estado anterior del pulsador 2
boolean Led_1=false;         // Para almacenar el estado del led 1
boolean Led_2=false;         // Para almacenar el estado del led 2
bool Apagar=false;           // Para controlar pulsar 2 y soltar     
void setup()   
{
  for (int x=0;x++;x<2)      // Configurar pines
  {
    pinMode (Inp[x], INPUT);
    pinMode (Out[x], OUTPUT);
  }
  GrabarSalidas();           // Salidas a off
}

void loop() 
{
  LeerEntradas();
  if (Pul_1 & Pul_2)                      // Los dos pulsadores pulsados
  {                                                                            
    Led_1=true;                           // Encenderemos  el led 1  
    Led_2=true;                           // Encenderemos  el led 2
    Apagar=true;                          // Permiso para apagar al soltarlos
  }
  if (!Pul_1 & !Pul_2 && Apagar )         // Los dos pulsadores despulsados y ha pasado por los dos pulsados
  {
    Led_1=false;                          // Encenderemos  el led 1  
    Led_2=false;                          // Encenderemos  el led 2
    Apagar=false;                         // Fin permiso apagar
  }
  if (Pul_1 & !Pul_2 & Apul_1!=Pul_1)     // Pulsador 1 cambia a pulsado y no pulsamos el 2
  {                                                                            
    if (!Led_1 && !Led_2) {Led_1=true;}   // Si ambos led estan apagados, empezamos encendiendo el 1                                            
    else                                  // si ya hay alguno encendido, los intercambaimos
    {
      Led_1=!Led_1;                       
      Led_2=!Led_2;
    }                            
  } 
  if (Pul_2 & !Pul_1 & !Apagar)           // Pulsador 2 pulsado, 2 despulsado y no pulsamos los 2 a la vez antes
  {
    if (millis()>T_Esp)                   // Ha sobrepasado el tiempo para parpadeo de leds
    {
      Led_1=!Led_1;                       // Intercambiamos el estado de los led
      Led_2=!Led_2;
      T_Esp=millis()+T_Pulsa;             // Cargamos tiempo para cambio de leds
    }
  }  
  Apul_1=Pul_1;                           // Modificamos estado anterior de los pulsadores
  Apul_2=Pul_2;                           // Modificamos estado anterior de los pulsadores
  GrabarSalidas();
}

void LeerEntradas() 
{
  Pul_1=digitalRead(Inp[0]);              // Leer pin con pull down        
  Pul_2=digitalRead(Inp[1]);              // Leer pin con pull down
  //Pul_1=!digitalRead(Inp[0]);              // Leer pin con pull up        
  //Pul_2=!digitalRead(Inp[1]);              // Leer pin con pull up
}

void GrabarSalidas() 
{
  if (Led_1) {digitalWrite(Out[0], ON);} else  {digitalWrite(Out[0], OF);}       
  if (Led_2) {digitalWrite(Out[1], ON);} else  {digitalWrite(Out[1], OF);}  
}

freddy_267:
no habra algo mas sencillo, que pueda interpretar?

Si, pero que haga menos cosas :stuck_out_tongue:

Lo que no entiendas pregúntalo.

Un saludo

Necesitaria ayuda con un sencillo proyecto,digo sencillo para gente con una buena base como ustedes....
La idea es la siguiente,necesitaria encender un led con un pulsador,pero se deben cumplir dos requisitos.
Para que este led se encienda,el pulsador debe de estar pulsado al menos dos segundos y dicho led permanecera encendido aunque se pulse nuevamente dicho pulsador.

Danielflores, por favor, lee las normas del foro. Si fuera Moderador ya te hubiera puesto un WARNING por postear lo mismo en mas de 5 Hilos.
No puedes hacerlo. Crea el tuyo y espera las respuestas.
Paciencia y sino, estudia tu problema y consulta las dudas.