Buenas.
Soy novato y estoy intentando hacer algun proyecto sencillo, pero hay que ver como lo sencillo a veces se complica.
Os dejo al final del mensaje los errores que me da al compilar.
Os pongo el codigo, a ver si veis donde puede estar el problema:
/*Programa subir parar bajar persiana con dos pulsadores.
Si mantenemos el boton presionado menos de 2 segundos, subira o
bajara hasta que soltemos el pulsador, si pulsamos más de dos
segundos, subira o bajara hasta el final de carrera o pulso del
pulsador contrario.
*/
const int FCarriba = 2; // Final de carrera superior en pin 2
const int FCabajo = 3; //Final de carrera inferior en pin 3
const int SWarriba = 4; //Pulsador para subir en pin 4
const int SWabajo = 5; //Pulsador para bajar en pin 5
const int arriba = 6; //rele de subir en pin 6
const int abajo = 7; //rele de bajar en pin 7
const int antirrebote = 10; //Tiempo para evitar rebote
const int tiempoAuto = 2000; //tiempo en ms para que pase automatico
int estadoSWabajo; //Estado del pulsador de bajada
int estadoAnteriorSWabajo; //Estado anterior del pulsador de bajada
int estadoSWarriba; //Estado del pulsador de subida
int estdoAnteriorSWarriba; //Estado anteior del pulsador de subida
boolean antirrebote(int pin) { //funcion antirrebote
int contador = 0; //variable contador y la ponemos a 0
boolean estado; //variable estado
boolean estadoAnterior; //variable estado anterior
do {
estado = digitalRead(pin); //Leemos y ponemos al esto del pulsador
if(estado != estadoAnterior){ // Si el estado acual y al anteior no son iguales
contador = 0; //Ponemos el contador a 0
estadoAnterior = estado; //Igualamos el estado anterior y el actual
}
else {
contador = contador + 1; //Sumanos uno al contador
}
delay(1); //Esperamos 1 ms
}
while (contadorAuto < tiempoAuto); //Permanecemos en el bucle mientras contador sea menor que tiempoauto
return estado; //Devuelve estado
}
boolean auto(int pinAuto) { //Funcion movimiento automatico
int contadorAuto = 0;
boolean estadoAuto;
boolean estadoAutoAnterior;
do {
estadoAuto = digitalRead(pinAuto); //Leemos y ponemos al estado del pulsador
if(estadoAuto != estadoAutoAnterior){ // Si el estado acual y al anteior no son iguales
contadorAuto = 0; //Ponemos el contador a 0
estadoAutoAnterior = estadoAuto; //Igualamos el estado anterior y el actual
}
else {
contadorAuto = contadorAuto + 1; //Sumanos uno al contador
}
delay(1); //Esperamos 1 ms
}
while (contadorAuto < tiempoAuto); //Permanecemos en el bucle mientras contador sea menor que tiempoauto
return estadoAuto; //Devuelve estado
}
void setup() {
pinMode (FCarriba, INPUT);
pinMode (FCabajo, INPUT);
pinMode (SWarriba, INPUT);
pinMode (SWabajo, INPUT);
pinMode (arriba, OUTPUT);
pinMode (abajo, OUTPUT);
}
void loop() {
//Declaramos la seguridad y finales de carrera
if (arriba == HIGH) digitalWrite(abajo, LOW);//si esta subiendo, bajar esta desactivado
if (abajo == HIGH) digitalWrite(arriba, LOW);//si esta bajando, subir esta desactivado
if (FCarriba == HIGH) digitalWrite(arriba, LOW);
if (FCabajo == HIGH) digitalWrite(abajo, LOW);
if (SWarriba == HIGH) digitalWrite(abajo, LOW);
if (SWabajo == HIGH) digitalWrite (arriba, LOW);
//Si mantenemos los puldores al mismo tiempo, pone a LOW las salidas
if (SWarriba == SWabajo){
digitalWrite(abajo, LOW);
digitalWrite(arriba, LOW);
}
//si pulsamos arriba
estadoSWarriba = digitalRead(SWarriba)
if(estadoSWarriba != estadoAnteiorSWarriba){
digitalWrite(abajo, LOW);
if(antirrebote(SWarriba)) digitalWrite(arriba, HIGH);//antirrebote y subimos
else{
digitalWrite(arriba, LOW);//si soltamos subir, para
}
if(auto(SWarriba)){//si pulsamos más de X tiempo
digitalWrite(arriba, HIGH)//sube automaticamente
if(SWabajo == HIGH) digitalWrite(arriba, LOW)//si pulsamos bajar, para
}
}
estadoSWabajo = digitalRead(SWabajo)
if(estadoSWabajo != estadoAnteiorSWabajo){
digitalWrite(arriba, LOW);
if(antirrebote(SWabajo)) digitalWrite(abajo, HIGH);
else{
digitalWrite(abajo, LOW);
}
if(auto(SWabajo)){
digitalWrite(abajo, HIGH)
if(SWarriba == HIGH) digitalWrite(abajo, LOW)
}
}
//Declaramos la seguridad y finales de carrera
if (arriba == HIGH) digitalWrite(abajo, LOW);//si esta subiendo, bajar esta desactivado
if (abajo == HIGH) digitalWrite(arriba, LOW);//si esta bajando, subir esta desactivado
if (FCarriba == HIGH) digitalWrite(arriba, LOW);
if (FCabajo == HIGH) digitalWrite(abajo, LOW);
if (SWarriba == HIGH) digitalWrite(abajo, LOW);
if (SWabajo == HIGH) digitalWrite (arriba, LOW);
//Si mantenemos los puldores al mismo tiempo, pone a LOW las salidas
if (SWarriba == SWabajo){
digitalWrite(abajo, LOW);
digitalWrite(arriba, LOW);
}
Errores:
Motor_persiana:9: error: expected unqualified-id before 'int'
Motor_persiana:9: error: expected `)' before 'int'
Motor_persiana:13: error: 'const int antirrebote' redeclared as different kind of symbol
Motor_persiana:8: error: previous declaration of 'boolean antirrebote(int)'
Motor_persiana.ino: In function 'boolean antirrebote(int)':
Motor_persiana:36: error: 'contadorAuto' was not declared in this scope
Motor_persiana.ino: At global scope:
Motor_persiana:41: error: expected unqualified-id before 'int'
Motor_persiana:41: error: expected `)' before 'int'