Error en programa de un boton para controlar dos relevadores

Buenas noches Forum

Es mi primer proyecto con Arduino (Arduino nano) que estoy intentando desarrollar, actualmente tengo la necesidad de controlar con un boton dos relevadores, uno se activara al momento y el otro 6 segundos, este ciclo se repetira cada que apriete el boton

Desafortunadamente no lo e logrado y el sistema me muestra un error en la compilacion

Este es el codigo que tengo al dia de hoy

boolean x=false;
void setup() {
pinMode(2,OUTPUT);
pinMode(4,OUTPUT);
pinMode(3,INPUT);
Serial.begin(9600);
}

void loop() {
int valor=digitalRead(3);//se lee el valor de push 0/1
Serial.print("Push: ");//se imprime el valor del push
Serial.println(valor);
delay(1);
//si el valor es 1 se cambia la variable boleana
if(valor==1){
x=!x;
}
//Si es true se prende el foco
//si es false se apaga el foco
if(x){
digitalWrite(2,HIGH);
digitalWrite(2,LOW);
delay(6000)
digitalWrite(4,HIGH);
digitalWrite(4,LOW);
}else{
digitalWrite(2,LOW);
digitalWrite(4,LOW);
}
delay(200);//RETARDO
}

Alguien ha realizado un programa similar? que con un solo boton pueda activar dos reles con delay

Saludos y agradezco su apoyo Forum

Varias cosas.

  1. Revisa tu casilla para editar el código de acuerdo a las normas del foro.
  2. No uses mayúsculas. Las mayúsculas en un chat o foro significan diferentes cosas. En este caso es hablar en voz alta o gritar. En programación se usan para indicar constantes pero no comentarios.
  3. veamos tu código
digitalWrite(2,HIGH);
digitalWrite(2,LOW);

Esto le dice al foco que se prenda y se apague en apenas microsegundos asi que ahi esta todo tu problema
O prendes o apagass
asi que

		if (x) {
			digitalWrite(Foco1Pin,HIGH);
			digitalWrite(Foco2Pin,HIGH);
			delay(6000)
			digitalWrite(Foco1Pin,LOW);
			digitalWrite(Foco2Pin,LOW);
		} else {
			digitalWrite(Foco1Pin,LOW);
			digitalWrite(Foco2Pin,LOW);
		}

Podría ser algo asi aunque no me gusta del todo, eso deberia funcionar.
Ahh que son Foco1Pin y Foco2Pin pues he definido al comienzo las constantes

#define BotonPin 3
#define Foco1Pin 2
#define Foco2Pin 4

Y este el código con algunos cambios, resta quitar ese delay(6000) que te dejará el pulsador como bloqueado x 6 segundos pero vamos de a poco.

#define BotonPin 3
#define Foco1Pin 2
#define Foco2Pin 4
boolean x = false, xAnt = true;
int valor, valorAnt = 0;

void setup() {
	pinMode(2,OUTPUT);
	pinMode(4,OUTPUT);
	pinMode(3,INPUT);
	Serial.begin(9600);
}

void loop() {
	valor = digitalRead(BotonPin);//SE LEE VALOR DE PUSH 0/1
	Serial.print("Push: ");//SE IMPRIME VALOR DE PUSH
	Serial.println(valor);
	
	//SI EL VALOR ES 1 SE CAMBIA VARIABLE BOOLEANA
	if (valor && !valorAnt) {
		x=!x;
	}
	valorAnt = valor;
	
	//SI ES TRUE SE PRENDE FOCO
	//SI ES FLASE SE APAGA FOCO
	if (x != xAnt){
		if (x) {
			digitalWrite(Foco1Pin,HIGH);
			digitalWrite(Foco2Pin,HIGH);
			delay(6000)
			digitalWrite(Foco1Pin,LOW);
			digitalWrite(Foco2Pin,LOW);
		} else {
			digitalWrite(Foco1Pin,LOW);
			digitalWrite(Foco2Pin,LOW);
		}
	}
	xAnt = x;
	
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.