Hola y gracias de antemano.
Somos un grupo de estudiantes de segundo de bachillerato a los que nos han mandado un proyecto de Arduino. Debido al Estado de Alarma, nos hemos visto obligados a realizar el trabajo desde nuestros hogares, con todas las dificultades que ello conlleva para unos novatos cuyo conocimiento de electrónica es prácticamente nulo. Agradeceríamos si alguien nos pudiera prestar algo de ayuda.
Las instrucciones del proyecto son:
-Una puerta se abre cuando detecta la presencia de una persona haciendo parpadear una luz
-Al llegar al final del recorrido la puerta se para, espera 10 segundos y se cierra parpadeando una luz y emitiendo un sonido
-Si hay algún obstáculo la puerta no se cierra y si esta libre se cierra al llegar a la posición original.
Debido al confinamiento, tampoco disponemos de todo el material que nos gustaría. Estamos usando un motor paso a paso y un sensor PIR para detectar la presencia.
El código de programación ya lo tenemos escrito.
//PINES
int sensorInfra=2; //Detector de presencia de infrarrojos
int ledParpa=4; //Hace parpadear la luz
int sonido=3;
int luz=A0;
//------------------------MOTOR------------------------
//funcionamiento motor en https://www.prometec.net/motor-28byj-48/
int abriendo=0;
int fase=7;
int IN1=9; //Entrada motor 1
int IN2=10; //Entrada motor 2
int IN3=11; //Entrada motor 3
int IN4=12; //Entrada motor 4
int recorrido_puerta=0;
int fases [ 8 ][ 4 ] =
{ {1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
void setup() {
// put your setup code here, to run once:
pinMode(sensorInfra,INPUT);
pinMode(ledParpa, OUTPUT);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(sonido,OUTPUT);
pinMode(luz,INPUT);
digitalWrite(ledParpa,LOW);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(sensorInfra)==HIGH){
delay(1000);
if (abriendo==0){
abriendo=1;
}
else
{
abriendo=0;
}
//digitalWrite(ledParpa,HIGH);
}
if (abriendo==1) {
Serial.write("abriendo");
Serial.println();
noTone(sonido);
if (recorrido_puerta<120)
{
//Serial.write(fase);
movimientoMotor();
delay (1) ;
fase--;
if (fase<0)
{fase=7;}
recorrido_puerta++;
if (recorrido_puerta==119)
{abriendo=0;
delay(10000);}
if (digitalRead(ledParpa)==LOW) {
digitalWrite(ledParpa,HIGH);
}else{
digitalWrite(ledParpa,LOW);
}
delay(100);
}
}
else{
if (recorrido_puerta>0)
{
Serial.write("cerrando");
Serial.println();
int v = analogRead(A0);
Serial.println(v);
if (v<2)
{abriendo=1;
Serial.write("interferencia");
Serial.println();
}
//Serial.write(fase);
movimientoMotor();
fase++;
if (fase>7)
{fase=0;}
recorrido_puerta--;
tone(sonido,100);
if (digitalRead(ledParpa)==LOW) {
digitalWrite(ledParpa,HIGH);
}else{
digitalWrite(ledParpa,LOW);
}
delay(100);
}
else
{
Serial.write("cerrado no hace nada");
Serial.println();
noTone(sonido);
}
}
}
void movimientoMotor()
{ digitalWrite( IN1, fases[fase][ 0] );
digitalWrite( IN2, fases[fase][ 1] );
digitalWrite( IN3, fases[fase][ 2] );
digitalWrite( IN4, fases[fase][ 3] );
}
Nuestros mayores problemas llegan a la hora del montaje, puesto que por alguna razón que desconocemos, al compilar el programa lo único que sucede es que el buzzer hace sonidos.
Muchas gracias