Paso 2: Código de Arduino
Para programar el mini necesita una usb para módulo de serie.
/*
Proyecto de ascensor con arduino pro mini 328 5v 8mhz - este es un proyecto de ascensor simple utilizando un motor de corriente alterna monofásica. -Hay 3 pisos y un botón se coloca en cada piso y están conectadas en paraller con 3 botones en el ascensor. -3 interruptores de proximidad se unen en cada piso para indicar dónde está el ascensor y detenerlo. -Un zumbador está conectado para advertir para el movimiento o alarma parada dentro del ascensor se une directamente al botón de reset. Código: Fanis Katmadas site:oramasolutions.com fanisk * /
const int floor1 = 7; //proximity interruptor conectado en floor1 const int floor2 = 6; //proximity interruptor conectado en floor2 const int floor3 = 5; //proximity interruptor conectado en floor3 const int callbutton1 = 4; //push botón en el floor1 y paraller la palabra 1 en el ascensor const int callbutton2 = 3; //push botón en el floor2 y paraller el piso 2 en el ascensor const int callbutton3 = 2; el floor3 y en paraller botón de //push la botón para piso 3 en el ascensor const int relayup = 12; //the relé que hace subir el ascensor const int relaydown = 10; //the relé que conduce abajo del zumbador de int const ascensor = 11; //a zumbador ADVERTENCIA movimiento o alarma parada const int poweron = 13;
cambiarán las variables: int callelevator1 = 0; variable para lectura del estado de pulsador de los pisos int callelevator2 = 0; variable para lectura del estado de pulsador de los pisos int callelevator3 = 0; variable para lectura del estado de pulsador de los pisos int floor1sense = 0; variable para lectura del estado de la proximidad de los pisos int floor2sense = 0; variable para lectura del estado de la proximidad de los pisos int floor3sense = 0; variable para lectura del estado de la proximidad de las plantas
la rutina de instalación se ejecuta una vez al presionar reset: void setup()
{/ / inicializar lo pines digitales entradas. pinMode (floor1, entrada); pinMode (floor2, entrada); pinMode (floor3, entrada); pinMode (callbutton1, entrada); pinMode (callbutton2, entrada); pinMode (callbutton3, entrada);
inicializar las salidas de los pines digitales. pinMode (relayup, salida); pinMode (relaydown, salida); pinMode (zumbador, salida); }
la rutina de loop se ejecuta una y otra vez para siempre: void loop()
{digitalWrite (poweron, HIGH); / / leer el estado del valor de pulsadores: callelevator1 = digitalRead(callbutton1); callelevator2 = digitalRead(callbutton2); callelevator3 = digitalRead(callbutton3); / leer el estado del valor de proximidad: floor1sense = digitalRead(floor1); floor2sense = digitalRead(floor2); floor3sense = digitalRead(floor3);
comenzar marcando los botones de 3 llamada. leemos la entrada y si tenemos señal de esperar para el lanzamiento antes de comenzar. después del lanzamiento se agrega una pausa de un segundo antes de comenzar el movimiento del ascensor si (callelevator1 == HIGH) / / si se pulsa el botón de llamada 1 piso {delay (200); //software debounce del botón de while(callelevator1 == HIGH) {callelevator1 = digitalRead (callbutton1); //check el valor del botón nuevo delay (10); //keep sin problemas} //wait por el comunicado del botón continuar delay(1000); floor1function (); //go para el fuction del piso 1 del elevador} más if(callelevator2 == HIGH) / si el se presiona el botón de llamada de piso 2 {delay(200); //software debounce del botón while(callelevator2 == HIGH) {callelevator2 = digitalRead (callbutton2); //check el valor del botón nuevo delay (10); //keep sin problemas} //wait por el comunicado del botón continuar delay(1000); floor2function (); //go para el fuction del piso 2 del elevador} mas if(callelevator3 == HIGH) / / si se pulsa el botón de llamada 1 piso {delay(200); //software debounce del botón while(callelevator3 == HIGH) {callelevator3 = digitalRead (callbutton3); //check el valor el botón nuevo delay (10); //keep funcionamiento} //wait por el comunicado del botón continuar delay(1000); floor3function (); //go para el fuction del piso 3 del elevador} digitalWrite (relayup, bajo); mantener el relé para arriba movimiento inactivo digitalWrite (relaydown, bajo); mantener el relé para abajo movimiento inactivo digitalWrite (zumbador, LOW); //keep la demora bastante zumbador (10); //a pocos retrasan simplemente para seguir funcionando sin problemas}
void floor1function() {si (floor1sense! = alta) / Compruebe el sensor de proximidad de la primera planta para ver si el ascensor está allí {//if el elevador no está allí lo llaman mientras (floor1sense == LOW) //check que la proximidad de la planta es //the baja motor comienza y se detiene cuando la proximidad del piso adecuado dar la señal {digitalWrite (relaydown, HIGH); //drive el elevador abajo digitalWrite (zumbador ALTO); //some de ruido en el mic floor1sense = digitalRead(floor1); Delay (10); //a pocos retrasan para mantener funcionando la rutina sin problemas}}}
void floor2function() {}
if(floor3sense == High) / Compruebe el sensor de proximidad del tercer piso para ver si el ascensor está allí {//if el ascensor allí es llamarlo mientras (floor2sense == baja) //the motor comienza y se detiene cuando la proximidad del piso adecuado dar la señal {digitalWrite (relaydown, HIGH); //drive el elevador abajo digitalWrite (zumbador, HIGH); //some de ruido en el mic floor2sense = digitalRead(floor2); delay (10); //a pocos retrasan para mantener funcionando la rutina sin problemas}} más if(floor1sense == HIGH) / Compruebe el sensor de proximidad de la primer piso para ver si el ascensor está allí {//if el ascensor allí es llamarlo mientras (floor2sense == LOW) //the motor comienza y se detiene cuando la proximidad del piso adecuado dar la señal {digitalWrite (relayup, HIGH); //drive el elevador hasta digitalWrite (zumbador, HIGH); ruido de //some en la floor2sense del mic = digitalRead(floor2); delay (10); //a pocos retrasan para mantener funcionando la rutina sin problemas}
} }
void floor3function() {si (floor2sense == alta || floor1sense == HIGH) / Compruebe el sensor de proximidad de la primera y segunda planta para ver si el ascensor está allí {//if el ascensor allí es llamarlo mientras (floor3sense == baja) //the motor comienza y se detiene cuando la proximidad del piso adecuado dar la señal {digitalWrite (relayup, HIGH); //drive el elevador hasta digitalWrite (zumbador, HIGH); ruido de //some en la floor3sense del mic = digitalRead(floor3); delay (10); //a pocos retrasan para mantener funcionando la rutina sin problemas}
} }