He diseñado un circuito con un motor que controla una puerta de apertura / cierre (de una cuadro de Skinner ). A continuación se adjunta una figura del circuito.
Los interruptores son para la puerta, no para seguir moviéndose cuando ya está en la posición deseada. (es decir, no continuar la apertura cuando ya está abierta, y no continuar cerrando cuando ya está cerrada). Cuando la puerta está completamente abierta, se oprime el interruptor de operación y cuando está completamente cerrada, se presiona el interruptor de presión.
El problema es que quiero que los interruptores no sean controlados por el arduino. Quiero que estén conectados mecánicamente al circuito.
- Si se presiona el interruptor_Cl, quiero que la puerta no pueda seguir cerrando (pero para poder seguir abriendo).
- Si se presiona el interruptor_Cl, quiero que la puerta no pueda seguir cerrando (pero para poder seguir abriendo).
¿Hay alguna manera de hacerlo sin el arduino? (Adjunto también mi programa arduino).
Aquíestáelcódigocompletodearduino:
intIN1=8;intIN2=9;intIN4=4;intENA=7;constintIRLEDpin=3;constintPhotoPins=A1;intthr=0;inttemp;intnumPorts=1;intPhotoSensor=0;intswtch_open=2;intswtch_close=1;intswtch_stat=0;//0meanspressed1meansnotpressedintmotor=2;voidsetup(){Serial.begin(9600);initPorts();reset();pinMode(IN1,OUTPUT);pinMode(IN2,OUTPUT);pinMode(IN4,OUTPUT);pinMode(swtch_open,INPUT);digitalWrite(IN4,HIGH);//pinMode(swtch_close,INPUT);}voidloop(){analogWrite(ENA,250);//motorspeedreadmyPorts();if(PhotoSensor==1){motor=0;}if(motor==2){OpenDoor();}if(motor==1){readswtch();if(swtch_stat==0){//0meansswitchpressedmotor=0;}}if(motor==0){StopDoor();}//delay(3000);//motor=2;}voidOpenDoor(){motor=1;digitalWrite(IN1,HIGH);//rotateforwarddigitalWrite(IN2,LOW);}voidCloseDoor(){motor=1;digitalWrite(IN1,LOW);//rotatebackwardsdigitalWrite(IN2,HIGH);}voidStopDoor(){motor=0;digitalWrite(IN1,LOW);//stopmotordigitalWrite(IN2,LOW);}voidinitPorts(){pinMode(IRLEDpin,OUTPUT);digitalWrite(IRLEDpin,HIGH);}voidreset(){thr=0;for(intj=0;j<5;j++){temp=analogRead(PhotoPins);if(temp>thr){thr=temp;}}thr=thr-20;}voidreadswtch(){if(digitalRead(swtch_open)==HIGH){swtch_stat=1;}elseif(digitalRead(swtch_open)==LOW){swtch_stat=0;}}voidreadmyPorts(){intvalue=analogRead(PhotoPins);if(value<thr){Serial.println("object in the way");
PhotoSensor = 1;
}
else {
Serial.println("clear to go");
PhotoSensor = 0;
}
}