Stap 2: Arduino code
Om te programmeren van de mini moet u een usb naar seriële module.
/*
Lift project met arduino pro mini 328 5v 8mhz - dit is een eenvoudige Lift-project met behulp van een Enkelfasige ac-motor. -Er zijn 3 verdiepingen en een knop wordt geplaatst in elke verdieping en in paraller met 3 knoppen in de lift zijn aangesloten. -3 naderingsschakelaars zijn aangesloten op elke verdieping om aan te geven waar de lift is en om het te stoppen. -Een zoemer is aangesloten om te waarschuwen voor beweging of - alarm stop in de lift rechtstreeks is aangesloten op de reset-knop. code door: Fanis Katmadas site:oramasolutions.com fanisk * /
Const int floor1 = 7; //proximity switch is aangesloten op floor1 const int floor2 = 6; //proximity switch is aangesloten op floor2 const int floor3 = 5; //proximity switch is aangesloten op floor3 const int callbutton1 = 4; //push knop op de floor1 en in paraller voor vloer 1 in de lift const int callbutton2 = 3; //push knop op de floor2 en in paraller voor floor 2 in de lift const int callbutton3 = 2; //push knop op de floor3 en in paraller de knop voor vloer 3 in de lift const int relayup = 12; //the relay, dat de lift const int relaydown rijdt = 10; //the relay, dat naar beneden de lift const int zoemer rijdt = 11; //a zoemer waarschuwing verkeer of alarm stoppen const int poweron = 13;
variabelen zal veranderen: int callelevator1 = 0; variabele voor het lezen van de drukknop status van de vloeren int callelevator2 = 0; variabele voor het lezen van de drukknop status van de vloeren int callelevator3 = 0; variabele voor het lezen van de drukknop status van de vloeren int floor1sense = 0; variabele voor het lezen van de status van de nabijheid van de vloeren int floor2sense = 0; variabele voor het lezen van de status van de nabijheid van de vloeren int floor3sense = 0; variabele voor het lezen van de status van de nabijheid van de verdiepingen
de setup-routine wordt uitgevoerd zodra wanneer u drukt op reset: void setup
{/ / initialiseren van de digitale pinnen ingangen. pinMode (floor1, INPUT); pinMode (floor2, INPUT); pinMode (floor3, INPUT); pinMode (callbutton1, INPUT); pinMode (callbutton2, INPUT); pinMode (callbutton3, INPUT);
Initialiseer de uitgangen digitale pinnen. pinMode (relayup, OUTPUT); pinMode (relaydown, OUTPUT); pinMode (zoemer, OUTPUT); }
de routine van de lus loopt over en weer forever: void loop
{digitalWrite (poweron, hoge); / / Lees de staat van de drukknoppen-waarde: callelevator1 = digitalRead(callbutton1); callelevator2 = digitalRead(callbutton2); callelevator3 = digitalRead(callbutton3); / / Lees de staat van de nabijheid van waarde: floor1sense = digitalRead(floor1); floor2sense = digitalRead(floor2); floor3sense = digitalRead(floor3);
Start door het controleren van de oproep van de 3 knoppen. We lezen de ingang en als we signaal hebben we wachten op de release voordat u begint. na de release een pauze van een seconde is toegevoegd voordat u begint met de beweging van de lift als (callelevator1 == HIGH) / / als de vloer 1 call-knop wordt ingedrukt {vertraging (200); //software ontdendering van de knop while(callelevator1 == HIGH) {callelevator1 = digitalRead (callbutton1); //check de waarde van de knop weer vertraging (10); //keep soepel} //wait voor de relese van de knop te blijven //go om de vloer 1 fuction van de Lift, delay(1000); floor1function ()} anders if(callelevator2 == HIGH) / / als de verdieping 2 belknop ingedrukt is {delay(200); //software ontdendering van de knop while(callelevator2 == HIGH) {callelevator2 = digitalRead (callbutton2); //check de waarde van de knop weer vertraging (10); //keep soepel} //wait voor de relese van de knop voort te zetten (floor2function), delay(1000); //go aan de vloer 2 fuction van de lift} anders if(callelevator3 == HIGH) / / als de vloer 1 call-knop wordt ingedrukt {delay(200); //software ontdendering van de knop while(callelevator3 == HIGH) {callelevator3 = digitalRead (callbutton3); //check de waarde van de knop weer vertraging (10); //keep soepel} //wait voor de relese van de knop te blijven van de delay(1000); floor3function (); //go aan de vloer 3 fuction van de lift} digitalWrite (relayup, laag); houden van de estafette voor omhoog beweging inactieve digitalWrite (relaydown, laag); Houd de estafette voor neer beweging inactieve digitalWrite (zoemer, laag); //keep de zoemer heel vertraging (10); //a weinig vertraging gewoon soepel blijven uitvoeren}
VOID floor1function() {als (floor1sense! = hoog) / / check de sensor van de nabijheid van de eerste verdieping om te zien of de lift er {//if de lift is er niet noemen terwijl (floor1sense == LOW) //check dat de nabijheid van de eerste verdieping laag //the motor is begint en stopt wanneer de juiste vloer nabijheid geven het signaal {digitalWrite (relaydown, hoge); //drive de lift naar beneden digitalWrite (zoemer HOGE); //some lawaai in de mic-floor1sense = digitalRead(floor1); vertraging (10); //a weinig vertraging om te houden de routine soepel}}}
ongeldig floor2function() {}
if(floor3sense == High) / / check de sensor van de nabijheid van de derde verdieping te zien als de lift er is {//if de lift is er noemen terwijl (floor2sense == LOW) //the motor begint en stopt wanneer de juiste vloer nabijheid geven het signaal {digitalWrite (relaydown, hoge); //drive de lift naar beneden digitalWrite (zoemer, hoge); //some lawaai in de mic-floor2sense = digitalRead(floor2); vertraging (10); //a weinig vertraging om te houden de routine soepel}} anders if(floor1sense == HIGH) / / check de sensor van de nabijheid van de eerste verdieping om te zien of de lift er {//if de lift is er noemen terwijl (floor2sense == LOW) //the motor begint en stopt wanneer de juiste vloer nabijheid geven het signaal {digitalWrite (relayup, hoge); //drive de lift omhoog digitalWrite (zoemer, hoge); //some lawaai in de mic-floor2sense = digitalRead(floor2); vertraging (10); //a weinig vertraging om te houden de routine soepel}
} }
VOID floor3function() {als (floor2sense == HIGH || floor1sense == HIGH) / / check de sensor van de nabijheid van de eerste en tweede verdieping om te zien of de lift er {//if de lift is er noemen terwijl (floor3sense == LOW) //the motor begint en stopt wanneer de juiste vloer nabijheid geven het signaal {digitalWrite (relayup, hoge); //drive de lift omhoog digitalWrite (zoemer, hoge); //some lawaai in de mic floor3sense = digitalRead(floor3); vertraging (10); //a weinig vertraging om te houden de routine soepel}
} }