Go Down

Topic: Activar 6 reles con un pulsador y cada rele con su propio pulsador. (Read 10867 times) previous topic - next topic

plasrer

Esta en las normas del foro, te he mandado varios Privados al respecto. No es posible que vayas por el post 28 y aún no uses tags.
Solo pegas tu código, lo seleccionas todo, y luego click en </>
Ahora no me preguntes donde esta </>, porque es la barra de íconos del editor que usas para responder.
Vamos que no es tan dificil. En las Normas esta muy bien explicado. Acaso no las leíste?
Pensaba que me decias una instruccion para el arduino usa  los tags, ya ya eso ya lo se hacer pero no me dejaba porque me decia que como maximo 9000 caracteres y no me dejaba el programa voy dividirlo ahora haber que pasa


plasrer

primera parte del programa

Code: [Select]
#include <Bounce2.h>

#define pinBoton1 2
#define pinBoton2 3
#define pinBoton3 4
#define pinBoton4 5
#define pinBoton5 6
#define pinBoton6 7
#define pinBoton7 8

#define srele1 A1
#define srele1 12
#define srele1 11
#define srele1 19
#define srele1 9
#define srele1 A0

// Instantiate a Bounce object
Bounce debouncer1 = Bounce();

// Instantiate another Bounce object
Bounce debouncer2 = Bounce();



// 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    = A1;   // 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, Btn3Activado = false, Btn4Activado = false, Btn5Activado = false, Btn6Activado = false, Btn7Activado = false;

void setup() {
  
  
    // Setup the first button with an internal pull-up :
  pinMode(pinBoton1,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer1.attach(pinBoton1);
  debouncer1.interval(20); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton2,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton2);
  debouncer2.interval(5); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton3,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton3);
  debouncer2.interval(5); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton4,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton4);
  debouncer2.interval(5); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton5,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton5);
  debouncer2.interval(5); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton6,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton6);
  debouncer2.interval(5); // interval in ms
  
   // Setup the second button with an internal pull-up :
  pinMode(pinBoton7,INPUT_PULLUP);
  // After setting up the button, setup the Bounce instance :
  debouncer2.attach(pinBoton7);
  debouncer2.interval(5); // interval in ms
  
   //Setup the LED :
  pinMode(srele1,OUTPUT);
  pinMode(srele2,OUTPUT);
  pinMode(srele3,OUTPUT);
  pinMode(srele4,OUTPUT);
  pinMode(srele5,OUTPUT);
  pinMode(srele6,OUTPUT);
  
  
  // 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_PULLUP);
  pinMode(pinBoton2, INPUT_PULLUP);
  pinMode(pinBoton3, INPUT_PULLUP);
  pinMode(pinBoton4, INPUT_PULLUP);
  pinMode(pinBoton5, INPUT_PULLUP);
  pinMode(pinBoton6, INPUT_PULLUP);
  pinMode(pinBoton7, INPUT_PULLUP);
  Serial.begin(9600);
}





plasrer

segunda parte

Code: [Select]
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;
    
    
    estBtn3 = digitalRead(pinBoton3);

    // Chequea si el botón está pulsado:
    if (estBtn3 == HIGH && estBtn3Ant == LOW) {
       statusBtn3 = !statusBtn3;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn3Activado = true;
      
    }
    
    estBtn3Ant = estBtn3;
      
    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 (statusBtn3 && Btn3Activado)
        digitalWrite(srele3, HIGH);
    if (!statusBtn3 && Btn3Activado)
        digitalWrite(srele3, LOW);
    Btn3Activado = false;
    
    
    
    
    
    
    
    
    estBtn4 = digitalRead(pinBoton4);

    // Chequea si el botón está pulsado:
    if (estBtn4 == HIGH && estBtn4Ant == LOW) {
       statusBtn4 = !statusBtn4;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn4Activado = true;
      
    }
    
    estBtn4Ant = estBtn4;
      
    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 (statusBtn4 && Btn4Activado)
        digitalWrite(srele4, HIGH);
    if (!statusBtn4 && Btn4Activado)
        digitalWrite(srele4, LOW);
    Btn4Activado = false;
    
    
    estBtn5 = digitalRead(pinBoton5);

    // Chequea si el botón está pulsado:
    if (estBtn5 == HIGH && estBtn5Ant == LOW) {
       statusBtn5 = !statusBtn5;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn5Activado = true;
      
    }
    
    estBtn5Ant = estBtn5;
      
    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 (statusBtn5 && Btn5Activado)
        digitalWrite(srele5, HIGH);
    if (!statusBtn5 && Btn5Activado)
        digitalWrite(srele5, LOW);
    Btn5Activado = false;
    
  
  
    estBtn6 = digitalRead(pinBoton6);

    // Chequea si el botón está pulsado:
    if (estBtn6 == HIGH && estBtn6Ant == LOW) {
       statusBtn6 = !statusBtn6;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn6Activado = true;
      
    }
    
    estBtn6Ant = estBtn6;
      
    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 (statusBtn6 && Btn6Activado)
        digitalWrite(srele6, HIGH);
    if (!statusBtn6 && Btn6Activado)
        digitalWrite(srele6, LOW);
    Btn6Activado = false;
    
    
    
    
    
    
    
    
    estBtn7 = digitalRead(pinBoton7);

    // Chequea si el botón está pulsado:
    if (estBtn7 == HIGH && estBtn7Ant == LOW) {
       statusBtn7 = !statusBtn7;
       Serial.print("Status Btn1:");
       Serial.println(statusBtn1);
       Btn7Activado = true;
      
    }
    
    estBtn7Ant = estBtn7;
      
    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 (statusBtn7 && Btn7Activado)
        digitalWrite(srele1, HIGH);
    if (!statusBtn7 && Btn7Activado)
        digitalWrite(srele1, LOW);
    Btn7Activado = false;
    
     // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  

plasrer

y tercera parte


Code: [Select]
// Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele5, HIGH );
  }
  else {
    digitalWrite(srele5, LOW );
  }

 // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  // Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele6, HIGH );
  }
  else {
    digitalWrite(srele6, LOW );
  }

 // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  // Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele1, HIGH );
  }
  else {
    digitalWrite(srele1, LOW );
  }

 // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  // Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele2, HIGH );
  }
  else {
    digitalWrite(srele2, LOW );
  }

 // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  // Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele3, HIGH );
  }
  else {
    digitalWrite(srele3, LOW );
  }

 // Update the Bounce instances :
  debouncer1.update();
  debouncer2.update();

  // Get the updated value :
  int value1 = debouncer1.read();
  int value2 = debouncer2.read();

  // Turn on the LED if either button is pressed :
  if ( value1 == LOW || value2 == LOW ) {
    digitalWrite(srele4, HIGH );
  }
  else {
    digitalWrite(srele4, LOW );
  }


}


}

plasrer


surbyte

El problema que tienes es que no sabes ver el ejemplo de la librería bounce2
Esta muy clarito. Aca tu solución pero con un poco de atención lo hubieras resuelto.

Code: [Select]

#include <Bounce2.h>

// 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;

Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
Bounce debouncer3 = Bounce();
Bounce debouncer4 = Bounce();
Bounce debouncer5 = Bounce();
Bounce debouncer6 = Bounce();
Bounce debouncer7 = Bounce();

// Variables dinámicas
bool statusBtn1 = false, statusBtn2 = false, statusBtn3 = false, statusBtn4 = false,
     statusBtn5 = false, statusBtn6 = false, statusBtn7 = false;
bool todosActivados = false;
int contador = 0;

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_PULLUP);
  pinMode(pinBoton2, INPUT_PULLUP);
  pinMode(pinBoton3, INPUT_PULLUP);
  pinMode(pinBoton4, INPUT_PULLUP);
  pinMode(pinBoton5, INPUT_PULLUP);
  pinMode(pinBoton6, INPUT_PULLUP);
  pinMode(pinBoton7, INPUT_PULLUP);
  digitalWrite( pinBoton1 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton2 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton3 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton4 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton5 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton6 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton7 ,HIGH);   // activar PULL UP interno

  Serial.begin(9600);

  // After setting up the button, setup the Bounce instance :
  debouncer1.attach(pinBoton1);
  debouncer1.interval(20); // interval in ms
  debouncer2.attach(pinBoton2);
  debouncer2.interval(20); // interval in ms
  debouncer3.attach(pinBoton3);
  debouncer3.interval(20); // interval in ms
  debouncer4.attach(pinBoton4);
  debouncer4.interval(20); // interval in ms
  debouncer5.attach(pinBoton5);
  debouncer5.interval(20); // interval in ms
  debouncer6.attach(pinBoton6);
  debouncer6.interval(20); // interval in ms
  debouncer7.attach(pinBoton7);
  debouncer7.interval(20); // interval in ms
}

void loop(){

    // Update the Bounce instance :
    debouncer1.update();

    // Chequea si el botón está pulsado:
    if (debouncer1.fell()) {
       
       statusBtn1 = !statusBtn1;
       Serial.print("Status Btn1:");
       Serial.print(statusBtn1);
       Serial.print("cuenta:");
       Serial.println(contador++);
       todosActivados = true;   // permito que el accionamiento de todos los botones funcione 1 vez
    }
   
   
    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;
    }

    debouncer2.update();
    // Chequea si el botón está pulsado:
    if (debouncer2.fell()) {
       statusBtn2 = !statusBtn2;
       Serial.print("Status Btn2:");
       Serial.println(statusBtn2);
 
       if (statusBtn2)
          digitalWrite(srele1, HIGH);
       else
          digitalWrite(srele1, LOW);
    }

    debouncer3.update();
    // Chequea si el botón está pulsado:
    if (debouncer3.fell()) {
       statusBtn3 = !statusBtn3;
       Serial.print("Status Btn3:");
       Serial.println(statusBtn3);

       if (statusBtn3)
          digitalWrite(srele2, HIGH);
       else
          digitalWrite(srele2, LOW);
    }
   
    debouncer4.update();
    // Chequea si el botón está pulsado:
    if (debouncer4.fell()) {
       statusBtn4 = !statusBtn4;
       Serial.print("Status Btn4:");
       Serial.println(statusBtn4);

       if (statusBtn4)
          digitalWrite(srele3, HIGH);
       else
          digitalWrite(srele3, LOW);
    }
    debouncer5.update();
    // Chequea si el botón está pulsado:
    if (debouncer5.fell()) {
       statusBtn5 = !statusBtn5;
       Serial.print("Status Btn5:");
       Serial.println(statusBtn5);

       if (statusBtn5)
          digitalWrite(srele4, HIGH);
       else
          digitalWrite(srele4, LOW);
    }
    debouncer6.update();
    // Chequea si el botón está pulsado:
    if (debouncer6.fell()) {
       statusBtn6 = !statusBtn2;
       Serial.print("Status Btn6:");
       Serial.println(statusBtn6);

       if (statusBtn6)
          digitalWrite(srele5, HIGH);
       else
          digitalWrite(srele5, LOW);
    }
    debouncer7.update();
    // Chequea si el botón está pulsado:
    if (debouncer7.fell()) {
       statusBtn7 = !statusBtn7;
       Serial.print("Status Btn7:");
       Serial.println(statusBtn7);

       if (statusBtn7)
          digitalWrite(srele6, HIGH);
       else
          digitalWrite(srele6, LOW);
    }
}


por cierto, todo el código entró en un solo post.

sonofsilent

Hola , buenos días , soy nuevo en el foro , llevo días probando y no he conseguido solucionar el problema que se me presenta ,
He probado el programa de surbyte y funciona perfectamente, tan solo quiero activar 8 reles cada uno con su pulsador , como si fueran telerruptores, pero después de un corte de corriente los reles se activan, he estado leyendo referente a electrónica inversa , pero nadie explica como solucionarlo.
Agradecería si alguien ya le ha pasado y pudiera compartir conmigo su experiencia.
Un saludo y muchas gracias de antemano.

Go Up