Activar 6 reles con un pulsador y cada rele con su propio pulsador.

Os cuento lo que necesito, pero que no soy capaz.

Necesito que con el pulsador 1 encienda 6 salidas de rele

un pulso del pulsador 1 se activan los 6 reles, otro pulso se apagan los 6 reles.

luego con el pulsador 2 activo el rele 1
pulsador 3 activo el rele 2
pulsador 4 activo el rele 3
pulsador 5 activo el rele 4
pulsador 6 activo el rele 5
pulsador 7 activo el rele 6

ose con el pulsador 1 activo todos y con los demas pulsadores actico de rele en rele.

alguien sabria hacerme el programa, porque yo me vuelvo loco, muchas gracias

alguien sabria hacerme el programa

Apuesto a que sí xD

Ahora bien que haz investigado por tu cuenta, ya tienes el modulo hecho, lo compraste, tienes algún avance? Este es un foro de Ayuda, no de hacerte los proyectos, investiga un poco por tu cuenta y cuando tengas algo vuelve.

Si tengo todo, lo necesario, pero se lo básico encender un les, ósea una salida de Rele con un pulsador, el problema viene cuando quieres encender varios relés con un sólo pulsador, como hacéis para que con un pulso en una entrada actives 1,2, o más salidas a la vez???
*/

// Variables estáticas
int pinBoton = 2; // Declaramos la variable pin del Botón
int pinBoton2 = 3; // la otra entrada
int pinBoton3 = 4; otra entrada
int srele = 12; // Declaramos la variable pin para relé.
int srele2 = 11; // la otra salida

// Variables dinámicas
int estadoBoton = 0; // Variable para estado del botón

void setup() {
// Inicializa el pin del LED como salida:
pinMode(srele, OUTPUT);
// Inicializa el pin del botón como entrada:
pinMode(pinBoton, INPUT);
}

void loop(){
// Lee el valor del pin del botón y lo almacena
// en la variable estadoBoton
estadoBoton = digitalRead(pinBoton);

// Chequea si el botón está pulsado:
if (estadoBoton == HIGH) {
// Si es así, enciende el LED:
digitalWrite(srelee, HIGH);
}

else {
// Si no, lo mantiene apagado:
digitalWrite(srele, LOW);
}
}

Esto vale para activar una salida sola en el momento que le pongo otro srele me da error.

Como hago ahora para que con pin 2 encienda las dos salidas, con el pin 3 una salida y con el pin4 la otra??

Que un pulsador controle si se van a activar todos si o no, está en contra con lo demás
Porque mira la situacion.
Boton1 activa con un pulso todos...
Luego que estan todos ON, presionas Boton2 que no va a apagarlo hasta que este en la situación del segundo pulso.
O sea, la primera vez de Boton2 volvera a poner en ON la salida correspondiente y la segunda vez lo pondra en OFF
Pero Boton1 y su status, vuelven a decirle que se ponga en ON ya que esta activo.
O sea que este programa parece un trabajo de instituto, es así?

Esta es la solución para accionar todos los reles y ademas controlar 1 individualmente.

// Variables estáticas
const byte pinBoton1 = 2;      // Declaramos la variable pin del Botón
const byte pinBoton2 = 3;      // la otra entrada
const byte pinBoton3 = 4;      
const byte pinBoton4 = 5;      
const byte pinBoton5 = 6;      
const byte pinBoton6 = 7;      
const byte pinBoton7 = 8;      

const byte srele1    = 13;   // Declaramos la variable pin para relé.
const byte srele2    = 12; // la otra salida
const byte srele3    = 11;
const byte srele4    = 10;
const byte srele5    =  9;
const byte srele6    = A0;


// Variables dinámicas
int estadoBoton = 0;  // Variable para estado del botón
bool estBtn1, estBtn2, estBtn3, estBtn4, estBtn5, estBtn6, estBtn7;
bool estBtn1Ant, estBtn2Ant, estBtn3Ant,estBtn4Ant, estBtn5Ant, estBtn6Ant, estBtn7Ant;
bool statusBtn1 = false, statusBtn2 = false, statusBtn3 = false, statusBtn4 = false,
     statusBtn5 = false, statusBtn6 = false, statusBtn7 = false; 
bool todosActivados = false, Btn2Activado = false;

void setup() {
  // Inicializa el pin del LED como salida:
  pinMode(srele1, OUTPUT);
  pinMode(srele2, OUTPUT);
  pinMode(srele3, OUTPUT);
  pinMode(srele4, OUTPUT);
  pinMode(srele5, OUTPUT);
  pinMode(srele6, OUTPUT);

  // Inicializa el pin del botón como entrada:
  pinMode(pinBoton1, INPUT);
  pinMode(pinBoton2, INPUT);
  pinMode(pinBoton3, INPUT);
  pinMode(pinBoton4, INPUT);
  pinMode(pinBoton5, INPUT);
  pinMode(pinBoton6, INPUT);
  pinMode(pinBoton7, INPUT);
  Serial.begin(9600);
}

void loop(){
    // Lee el valor del pin del botón y lo almacena
    // en la variable estadoBoton
    estBtn1 = digitalRead(pinBoton1);

    // Chequea si el botón está pulsado:
    if (estBtn1 == HIGH && estBtn1Ant == LOW) {
       statusBtn1 = !statusBtn1;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       todosActivados = true;   // permito que el accionamiento de todos los botones funcione 1 vez
    }
    estBtn1Ant = estBtn1;
    
    estBtn2 = digitalRead(pinBoton2);

    // Chequea si el botón está pulsado:
    if (estBtn2 == HIGH && estBtn2Ant == LOW) {
       statusBtn2 = !statusBtn2;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn2Activado = true;
    }
    estBtn2Ant = estBtn2;
    
    if (statusBtn1 && todosActivados) {
       digitalWrite(srele1, HIGH);
       digitalWrite(srele2, HIGH);
       digitalWrite(srele3, HIGH);
       digitalWrite(srele4, HIGH);
       digitalWrite(srele5, HIGH);
       digitalWrite(srele6, HIGH);
       Serial.println("Todos activados");
       todosActivados = false;
    }
    
    if (!statusBtn1 && todosActivados) {
       digitalWrite(srele1, LOW);
       digitalWrite(srele2, LOW);
       digitalWrite(srele3, LOW);
       digitalWrite(srele4, LOW);
       digitalWrite(srele5, LOW);
       digitalWrite(srele6, LOW);
       Serial.println("Todos desactivados");
       todosActivados = false;
    }
    if (statusBtn2 && Btn2Activado)
        digitalWrite(srele2, HIGH);
    if (!statusBtn2 && Btn2Activado)
        digitalWrite(srele2, LOW);
    Btn2Activado = false;
}

muchas gracias estaba con esta programacion y no me funcionaba voy intentar leer la que tu me has enviado, buffff muchisimas gracias

p1.txt (808 Bytes)

no no que va soy un novato, no es un trabajo de instituto, tenia un logo programado para encenderme las luces de un pequeño almacen y se me ha estropeado, y tenia un arduino porque con excontrol es muy facil de programar para encender desde el movil, y estuve cachareando con el arduino, y lo deje parado, ahora se me estropeo el logo, y pense porque no lo hago con el arduino, pense que seria mas facil, y no lo es, jejejeeeee me estoy volviendo un poco loco. pero haber si con vuestra ayuda lo hago funcionar, muchas gracias

surbyte:
Que un pulsador controle si se van a activar todos si o no, está en contra con lo demás
Porque mira la situacion.
Boton1 activa con un pulso todos...
Luego que estan todos ON, presionas Boton2 que no va a apagarlo hasta que este en la situación del segundo pulso.
O sea, la primera vez de Boton2 volvera a poner en ON la salida correspondiente y la segunda vez lo pondra en OFF
Pero Boton1 y su status, vuelven a decirle que se ponga en ON ya que esta activo.
O sea que este programa parece un trabajo de instituto, es así?

Esta es la solución para accionar todos los reles y ademas controlar 1 individualmente.

// Variables estáticas

const byte pinBoton1 = 2;      // Declaramos la variable pin del Botón
const byte pinBoton2 = 3;      // la otra entrada
const byte pinBoton3 = 4;      
const byte pinBoton4 = 5;      
const byte pinBoton5 = 6;      
const byte pinBoton6 = 7;      
const byte pinBoton7 = 8;

const byte srele1    = 13;   // Declaramos la variable pin para relé.
const byte srele2    = 12; // la otra salida
const byte srele3    = 11;
const byte srele4    = 10;
const byte srele5    =  9;
const byte srele6    = A0;

// Variables dinámicas
int estadoBoton = 0;  // Variable para estado del botón
bool estBtn1, estBtn2, estBtn3, estBtn4, estBtn5, estBtn6, estBtn7;
bool estBtn1Ant, estBtn2Ant, estBtn3Ant,estBtn4Ant, estBtn5Ant, estBtn6Ant, estBtn7Ant;
bool statusBtn1 = false, statusBtn2 = false, statusBtn3 = false, statusBtn4 = false,
    statusBtn5 = false, statusBtn6 = false, statusBtn7 = false;
bool todosActivados = false, Btn2Activado = false;

void setup() {
 // Inicializa el pin del LED como salida:
 pinMode(srele1, OUTPUT);
 pinMode(srele2, OUTPUT);
 pinMode(srele3, OUTPUT);
 pinMode(srele4, OUTPUT);
 pinMode(srele5, OUTPUT);
 pinMode(srele6, OUTPUT);

// Inicializa el pin del botón como entrada:
 pinMode(pinBoton1, INPUT);
 pinMode(pinBoton2, INPUT);
 pinMode(pinBoton3, INPUT);
 pinMode(pinBoton4, INPUT);
 pinMode(pinBoton5, INPUT);
 pinMode(pinBoton6, INPUT);
 pinMode(pinBoton7, INPUT);
}

void loop(){
   // Lee el valor del pin del botón y lo almacena
   // en la variable estadoBoton
   estBtn1 = digitalRead(pinBoton1);

// Chequea si el botón está pulsado:
   if (estBtn1 == HIGH && estBtn1Ant == LOW) {
      statusBtn1 = !statusBtn1;
      todosActivados = true;   // permito que el accionamiento de todos los botones funcione 1 vez
   }
   estBtn1Ant = estBtn1;
   
   estBtn2 = digitalRead(pinBoton2);

// Chequea si el botón está pulsado:
   if (estBtn2 == HIGH && estBtn2Ant == LOW) {
      statusBtn2 = !statusBtn2;
      Btn2Activado = true;
   }
   estBtn2Ant = estBtn2;
   
   if (statusBtn1 && todosActivados) {
      digitalWrite(srele1, HIGH);
      digitalWrite(srele2, HIGH);
      digitalWrite(srele3, HIGH);
      digitalWrite(srele4, HIGH);
      digitalWrite(srele5, HIGH);
      digitalWrite(srele6, HIGH);
      todosActivados = false;
   }
   else {
      digitalWrite(srele1, LOW);
      digitalWrite(srele2, LOW);
      digitalWrite(srele3, LOW);
      digitalWrite(srele4, LOW);
      digitalWrite(srele5, LOW);
      digitalWrite(srele6, LOW);
      todosActivados = false;
   }
   if (statusBtn1 && Btn2Activado)
       digitalWrite(srele1, HIGH);
   else
       digitalWrite(srele1, LOW);
   Btn2Activado = false;
}

como mañana me funcione, te invito a lo que quieras, gracias, un saludo.

Solo te resolví el caso general y un pulsador... te faltan varios.
Y a menos que te tomes un avión dudo que puedas invitarme algo.. jajaja

okk bueno haber si lo hecho andar osea que solo funciona un pulsador no??

luego tendre que activar los otros, buffffffffffffffff

jejeee, bueno muchisimas gracias

surbyte:
Solo te resolví el caso general y un pulsador... te faltan varios.
Y a menos que te tomes un avión dudo que puedas invitarme algo.. jajaja

hola compy he metido el programa en el arduino y no me funciona, error no da al compilarlo, lo unico que me hace es encender todos los reles nada mas lo programa luego le meto algun pulso por cualquier entrada y no funciona, sabrias decirme porque, o si es que aun tengo que meterle alguna cosa mas, muchas gracias

hola he conseguido hacer un programa que sigo poniendole datos, os explico lo que me pasa he conseguido que al meter un pulso en el pin 6 se me activen los 6 reles de salida y al meterle otro pulso se me desactiven los 6 reles de salida, pero aveces hace cosas raras. depende y no se porque aveces se activan solo 4 otras veces se activan todos otras veces se desactivan 2, pero bueno aveces no se porque funciona bien, luego he activado otro pin de entrada, el 5 entonces pulso elpin 6 se me encienden todos los reles pulso el pin 5 y se me apaga solo el rele 1, perfecto funciona, si lo vuelvo a pulsar se vuelve a encender el rele 1, cual es el problema el problema es que si esta todo apagado y pulso el pin 5 enciendo un rele perfecto, pero ahora quiero pulsar el pin 6 para encender todo, y claro se me enciende todo pero se me apafa el rele 1

os pongo aqui mi programa

int LED = 10 ; int LED2 = 11 ; int LED3 = 12 ; int LED4 = 13 ; int LED5 = 9 ; int LED6 = 8 ; int boton = 6 ; int boton2 = 5 ; int boton3 = 4 ; int boton4 = 3 ;

bool estado = true ;
bool estado_anterior = true ;
bool estado2 = true ;
bool estado_anterior2 = true ;
bool estado3 = true ;
bool estado_anterior3 = true ;
bool estado4 = true ;
bool estado_anterior4 = true ;
bool estado5 = true ;
bool estado_anterior5 = true ;
bool estado6 = true ;
bool estado_anterior6 = true ;
bool estado7 = true ;
bool estado_anterior7 = true ;

void setup()
{
pinMode(boton, INPUT_PULLUP); //Hemos eliminado R3
pinMode(boton2, INPUT_PULLUP);
pinMode(boton3, INPUT_PULLUP);
pinMode(boton4, INPUT_PULLUP);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
}

void loop()
{
estado = digitalRead(boton);
if (estado != estado_anterior) //hay cambio : Han pulsado o soltado
{
if (estado == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED, !digitalRead(LED));
delay(20);
estado_anterior = estado ; // Para recordar el ultimo valor
}

estado2 = digitalRead(boton);
if (estado2 != estado_anterior2) //hay cambio : Han pulsado o soltado
{
if (estado2 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED2, !digitalRead(LED2));
delay(20);
estado_anterior2 = estado2 ; // Para recordar el ultimo valor
}

estado3 = digitalRead(boton);
if (estado3 != estado_anterior3) //hay cambio : Han pulsado o soltado
{
if (estado3 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED3, !digitalRead(LED3));
delay(20);
estado_anterior3 = estado3 ; // Para recordar el ultimo valor
}

estado4 = digitalRead(boton);
if (estado4 != estado_anterior4) //hay cambio : Han pulsado o soltado
{
if (estado4 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED4, !digitalRead(LED4));
delay(30);
estado_anterior4 = estado4 ; // Para recordar el ultimo valor
}

estado5 = digitalRead(boton);
if (estado5 != estado_anterior5) //hay cambio : Han pulsado o soltado
{
if (estado5 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED5, !digitalRead(LED5));
delay(30);
estado_anterior5 = estado5 ; // Para recordar el ultimo valor
}

estado6 = digitalRead(boton);
if (estado6 != estado_anterior6) //hay cambio : Han pulsado o soltado
{
if (estado6 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED6, !digitalRead(LED6));
delay(30);
estado_anterior6 = estado6 ; // Para recordar el ultimo valor
}

estado7 = digitalRead(boton2);
if (estado7 != estado_anterior7) //hay cambio : Han pulsado o soltado
{
if (estado7 == LOW) //Al pulsar botón cambiar LED, pero no al soltar

digitalWrite(LED, !digitalRead(LED));
delay(30);
estado_anterior7 = estado7 ; // Para recordar el ultimo valor
}

}

Te pedi que insertes los códigos usando tags.
Lee las normas del foroy luego edita tus post.
Ya veré el programa. Dudo que no funcione. Lo reviso y te respondo.
Lo primero que veo es que no usas resistencias, y que lo has conectado usando la resistencia interna del Arduino.

El programa si funciona y TE EXPLIQUE que solo funcionaba con el boton 1 y 2 solamente y que el resto lo tienes que completar tu. Entonces tu comentario que activas las entradas y nada pasa es lógico.
boton1 conectado a pin 2 y boton2 conectado a pin 3.

Bueno si ya hiciste tu programa me alegro. Pero si comparas un programa que esta configurado de un modo al ejecutarlo de otro modo obtienes resultados distintos. Por ende tu prueba de mi programa no fue la apropiada.

surbyte:
Te pedi que insertes los códigos usando tags.
Lee las normas del foroy luego edita tus post.
Ya veré el programa. Dudo que no funcione. Lo reviso y te respondo.

que me quieres decir con esto:

Te pedi que insertes los códigos usando tags.

no te entiendo.

Por otra parte perdonarme por no haberme leido las normas antes, gracias

surbyte:
Te pedi que insertes los códigos usando tags.
Lee las normas del foroy luego edita tus post.
Ya veré el programa. Dudo que no funcione. Lo reviso y te respondo.
Lo primero que veo es que no usas resistencias, y que lo has conectado usando la resistencia interna del Arduino.

El programa si funciona y TE EXPLIQUE que solo funcionaba con el boton 1 y 2 solamente y que el resto lo tienes que completar tu. Entonces tu comentario que activas las entradas y nada pasa es lógico.
boton1 conectado a pin 2 y boton2 conectado a pin 3.

Bueno si ya hiciste tu programa me alegro. Pero si comparas un programa que esta configurado de un modo al ejecutarlo de otro modo obtienes resultados distintos. Por ende tu prueba de mi programa no fue la apropiada.
[/quote

bufff se me hace grande, si yo quiero tu programa, pero es que me pierdo, intento saber lo que has escrito, pero se me va.

voy otra vez a probarlo, deverdad que estoy muy agradecido.

Por fin ya me funciona tu programa pero solo me funciona con el pin1 cuando le doy al pin1 se activa todo menos el rele1 no entiendo porque y el pin 2 no hace nada, que puede estar pasando??

hola compy he modificado tu programa para que me funcione, si entener muy bien lo que hago pero me va a medias

poniendo asi los valores he logrado que cuando pulsas p1 se enciendo todo lo vuelves a pulsar y se apaga

ahora si esta apagado y pulso p2 se me enciende la salida de rele 6 que esta programada y se vuelve a apagar.

Ahora viene el problema activo pulsador p2 encendido rele 6 pulso el p1 y se me encienden todos pero vuelvo a pulsar p1 para que se me apague todo y el R6 no se me apaga hasta que pulso el p2.

Porque??

p1.txt (2.81 KB)

Tu dijiste:

un pulso del pulsador 1 se activan los 6 reles, otro pulso se apagan los 6 reles.

luego con el pulsador 2 activo el rele 1
pulsador 3 activo el rele 2
pulsador 4 activo el rele 3
pulsador 5 activo el rele 4
pulsador 6 activo el rele 5
pulsador 7 activo el rele 6

no es eso lo que hace boton1 con todos y boton2 con rele1?

Si es lo que hace pero y ahora que tengo que hacer para que con el pulsador uno enciendo todo perfecto hay mucha luz apagó un relé con el p2 y sigue lo demás encendido ahora me voy a marchar y pulso el p1 para apagar todo pero claro el relé del p2 no lo apaga, como hago para que con p1 encienda o apague todo aunque se halla pulsado algún otro pulsador??

Revisa el código que te había puesto, cometí 2 errores, que ahora estan resueltos y funciona como tu quieres.
Completa para boton3, a boton 7.

okk amigo, mañana lo probare muchas gracias