Go Down

Topic: [SOLUCIONADO] Cambiar pin de salida con pulsador (Read 139 times) previous topic - next topic

enriquerebolledo

Mar 09, 2018, 05:25 am Last Edit: Mar 09, 2018, 08:11 am by enriquerebolledo
Hola!, gusto escribir nuevamente, les cuento que tengo un problema que me está matando (quizás les parezca fácil, sin reír por favor jajaja).

Lo que necesito es que al accionar un pulsador cambie la salida de una señal desde un pin a otro, quiero accionar un buzzer y un motor vibrador por separado, pero que para alternar haya que presionar el pulsador.

Lo que tengo hasta ahora de código es lo siguiente:

Code: [Select]

#define led1 12
#define led2 11
#define pulsador 3


void setup() {
   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);
   pinMode(pulsador, INPUT);
}
void loop() {
   if (digitalRead(pulsador) == HIGH){
      digitalWrite(led1, HIGH);
      digitalWrite(led2, HIGH);
   }
}


Hasta ahora, lo que estoy haciendo es que al presionar el pulsador envía la señal HIGH al led1 declarado en el pin 12, pero no sé qué aplicar para que cuando presione nuevamente el pulsador envíe la señal al pin11

Por favor sí alguien pudiese orientarme, se lo agradecería mucho

enriquerebolledo

He construido otro en base a un video que hace algo "similar", pero aun no puedo compilar bien, alguna ayuda ?

Code: [Select]

const int buzzer = 2;
const int vibrador = 3;
const int pulsador = 4;

//estados
const int estado_buzzer = 0;
const int estado_vibrador = 1;

//variables
//int estado = ESTADO_OFF;
int pulsadorCambioAntes = LOW;
int pulsadorCambioAhora = LOW;
int pulsadorONoffantes = LOW;
int pulsadorONoffahora = LOW;

//inicio
void setup()
{
  pinMode(buzzer, OUTPUT);
  pinMode(vibrador, OUTPUT);
  pinMode(pulsador, INPUT);

//  cambiar();
}

//función
void loop()
{
  obtenerDatos();
  controlarCircuito();
}
void obtenerDatos()
{
  pulsadorCambioAntes = PulsadorCambioAhora;
  pulsadorCambioAhora = digitalRead(pulsador);
  delay(50);
}
void controlarCircuito()
{
  switch (estado)
  {
    case estado_buzzer;
    controlarestado_buzzer();
    break;
    case estado_vibrador;
    controlarestado_vibrador();
    break;
  }

}
void controlarestadobuzzer()
{
  if ((pulsadorCambioAntes == HIGH) && (pulsadorCambioAhora == LOW))
  {
    encenderBuzzer();
  }
}
void controlarestado_buzzer()
{
  if ((pulsadorCambioAntes == HIGH) && (pulsadorCambioAhora == LOW))
  {
   // cambiar();
  }
}
void encenderBuzzer();
{
  digitalWrite(buzzer; HIGH);
  digitalWrite(vibrador; LOW);
}
void encenderVibradorr();
{
  digitalWrite(vibrador; HIGH);
  digitalWrite(buzzer; LOW);
}

enriquerebolledo

Después de 4 horas lo logré, y ahora que veo era muuucho más sencillo de lo que pensé, les dejo el código que armé

Code: [Select]

#define buzzer 4
#define vibrador 2
#define pulsador 8

int estado = 0;
int salida = 0;
int estadoAnterior = 0; //estado anterior del botón
void setup() {
  pinMode(pulsador, INPUT);
  pinMode(vibrador, OUTPUT);
  pinMode(buzzer, OUTPUT);
}

void loop() {
  estado = digitalRead(8);

  if((estado == HIGH) && (estadoAnterior == LOW)){
    salida = 1 - salida;
    delay(20);
  }

  estadoAnterior = estado;
 
  if(salida == 1){
    digitalWrite(vibrador, LOW);
    delay(10);
    digitalWrite(buzzer, HIGH);
    }
  else {
    digitalWrite(buzzer, LOW);
    delay(10);
    digitalWrite(vibrador, HIGH);
    }
}


¡Saludos!

Go Up