Hola a todos. Estoy haciendo mi primer proyecto con arduino.
El proyecto consiste en una puerta de un garaje.
Dispone de un botón de apertura, 2 finales de carrera y una fotocelula.
El numero de los pines los he puesto a boleo, ahora mismo solo me importa la parte de la programación.
Resulta que quiero depurar el programa a través del puerto serie del ordenador. Solo quiero que me envíe el nuevo mensaje, en vez de que me estén saliendo un montón de lineas que me digan lo mismo. El error es el que se muestra en el titulo. Sospecho que es algo relacionado con punteros (aún no los he estudiado). Os dejo el código para que me echeis una mano.
int boton = 4;
int fc_arriba =3;
int fc_abajo =2;
int fotocelula =5;
int led_verde = 7;
int led_rojo =6;
int motord =8;
int motori =9;
int tiempo = 15000;
int x=0;
int arriba=0;
void fenviar (char dato);
char dato;
char envio;void setup()
{
Serial.begin(9600);
pinMode(motord,OUTPUT);
pinMode(motori, OUTPUT);
pinMode(led_verde, OUTPUT);
pinMode(led_rojo,OUTPUT);
digitalWrite(led_rojo,LOW);
digitalWrite(led_verde,LOW);
digitalWrite(motord, LOW);
digitalWrite(motori, LOW);
}
void fenviar (char dato)
{
if (dato!=envio);
{
Serial.println(dato);
envio=dato;
}
}void loop()
{
if (digitalRead(boton)==HIGH && digitalRead(fc_abajo)==HIGH)
{
dato="Abriendose puerta";
fenviar(dato);
digitalWrite(led_rojo,HIGH);
digitalWrite(motord,HIGH);
}
if (digitalRead(motord)==1 && digitalRead(fc_arriba)==1)
{
dato="Puerta abierta";
fenviar(dato);
digitalWrite(motord,LOW);
digitalWrite(led_rojo,LOW);
digitalWrite(led_verde, HIGH);
delay(tiempo);
arriba=1;
}
if (arriba==1 && digitalRead(fc_arriba)==1)
{
dato="Bajando puerta";
fenviar(dato);
digitalWrite(led_verde,LOW);
digitalWrite(led_rojo,HIGH);
digitalWrite(motori,HIGH);
}
if (digitalRead(motori)==1 && digitalRead(fc_abajo)==1)
{
dato="Puerta cerrada";
fenviar(dato);
digitalWrite(motori, LOW);
digitalWrite(led_rojo,LOW);
}
if (digitalRead(fotocelula)==HIGH && (digitalRead(motord)==HIGH ||digitalRead(motori)==HIGH))
{
arriba=0;
digitalWrite(motord,HIGH);
digitalWrite(led_verde,LOW);
digitalWrite(led_rojo,HIGH);
dato="Subiendo puerta (fotocelula)";
fenviar(dato);
}
}
Gracias de antemano.
Un saludo: eduardogi