3 floor elevator arduino (2 / 7 steg)
Steg 2: Arduino kod
För att programmera mini behöver du en usb till seriell modul.
/*
Hiss-projektet med arduino pro mini 328 5v 8mhz - detta är en enkel hiss projekt med en 1-fas ac-motor. -Det finns 3 våningar och en knapp placeras i varje våning och förbinds i paraller med 3 knapp inne i hissen. -3 induktiva brytare fästas på varje våning där hissen är och att stoppa den. -En Summer är anslutet för att varna för rörelse - eller larm stoppa inuti hissen är fäst direkt på reset-knappen. kod av: Fanis Katmadas site:oramasolutions.com fanisk * /
CONST int floor1 = 7; //proximity switch fäst på floor1 const int floor2 = 6; //proximity switch fäst på floor2 const int floor3 = 5; //proximity switch fäst på floor3 const int callbutton1 = 4; //push knappen på floor1 och i paraller för plan 1 i hiss const int callbutton2 = 3; //push knappen på floor2 och i paraller på knappen för våning 2 i hiss const int callbutton3 = 2; //push knappen på floor3 och i paraller den knappen för våning 3 i hiss const int relayup = 12; //the relä som driver upp hiss const int relaydown = 10; //the relä som driver ner hiss const int summern = 11. //a Summer varning rörelse eller larm stoppa const int poweron = 13.
variabler som ändras: int callelevator1 = 0; variabel för att läsa golv int callelevator2 tryckknapp status = 0; variabel för att läsa golv int callelevator3 tryckknapp status = 0; variabel för att läsa golv int floor1sense tryckknapp status = 0; variabel för att läsa närhet status för golv int floor2sense = 0; variabel för att läsa närhet status för golv int floor3sense = 0; variabel för att läsa närhet status för golv
Rutinen installationsprogrammet körs en gång när du trycker på reset: Tom setup()
{/ / initiera digital pins ingångar. pinMode (floor1, ingång), pinMode (floor2, ingång), pinMode (floor3, ingång), pinMode (callbutton1, ingång); pinMode (callbutton2, ingång); pinMode (callbutton3, ingång);
initiera digital pins utgångarna. pinMode (relayup, produktionen); pinMode (relaydown, produktionen); pinMode (Summer, produktionen); }
Rutinen loop kör om och om igen för alltid: Tom loop()
{digitalWrite (poweron, hög); / / läsa statligt av tryckknappar värdet: callelevator1 = digitalRead(callbutton1); callelevator2 = digitalRead(callbutton2); callelevator3 = digitalRead(callbutton3); / / Läs tillståndet i närheten värdet: floor1sense = digitalRead(floor1); floor2sense = digitalRead(floor2); floor3sense = digitalRead(floor3);
börja med att kontrollera knapparna 3 samtal. Vi läser indata och om vi har signal vi vänta versionen innan du börjar. efter släppet läggs en paus av en sekund innan du börjar rörelse i hissen om (callelevator1 == hög) / / om på våningen 1 Ring-knappen trycks {fördröjning (200); //software debounce om knappen while(callelevator1 == HIGH) {callelevator1 = digitalRead (callbutton1); //check värdet av knappen igen fördröjning (10), //keep friktionsfritt} //wait för relese av knappen för att fortsätta delay(1000); floor1function (); //go till plan 1 fuction av hissen} annat if(callelevator2 == HIGH) / / om den våning 2 Ring-knappen trycks {delay(200); //software debounce knappens while(callelevator2 == HIGH) {callelevator2 = digitalRead (callbutton2); //check värdet av knappen igen fördröjning (10), //keep friktionsfritt} //wait för relese av knappen för att fortsätta delay(1000); floor2function (); //go till våning 2 fuction av hissen} annat if(callelevator3 == HIGH) / / om på våningen 1 Ring-knappen trycks {delay(200); //software debounce knappens while(callelevator3 == HIGH) {callelevator3 = digitalRead (callbutton3); //check värdet Om knappen igen fördröjning (10), //keep friktionsfritt} //wait för relese av knappen för att fortsätta delay(1000); floor3function (); //go till plan 3 fuction av hissen} digitalWrite (relayup, låg); hålla reläet för upp motion inaktiva digitalWrite (relaydown, låg); hålla den som bryter ner rörelse inaktiva digitalWrite (Summer, låg); //keep Summer ganska förseningen (10). //a få skjuta bara att hålla igång smidigt}
void floor1function() {om (floor1sense! = hög) / / kontrollera Närhetssensor första våningen om hissen är det {//if hissen finns det inte kalla det samtidigt (floor1sense == låg) //check att närheten till första våningen är låg //the motor börjar och slutar när lämpliga golv närheten ger signal {digitalWrite (relaydown, hög), //drive i hissen ner digitalWrite (Summer HÖG); //some buller i mic floor1sense = digitalRead(floor1); fördröjning (10). //a få skjuta för att hålla igång rutinen smidigt}}}
void floor2function() {
IF(floor3sense == High) / / kontrollera Närhetssensor tredje våningen om hissen är det {//if hissen är det kalla det samtidigt (floor2sense == låg) //the motor börjar och slutar när lämpliga golv närheten ger signal {digitalWrite (relaydown, hög); //drive hissen ner digitalWrite (Summer, hög); //some buller i mic floor2sense = digitalRead(floor2); fördröjning (10). //a få skjuta för att hålla igång rutinen smidigt}} annat if(floor1sense == HIGH) / / kontrollera Närhetssensor den första våningen om hissen är det {//if hissen är det kalla det samtidigt (floor2sense == låg) //the motor börjar och slutar när lämpliga golv närheten ger signal {digitalWrite (relayup, hög); //drive hissen upp digitalWrite (Summer, hög); //some buller i mic floor2sense = digitalRead(floor2); fördröjning (10). //a få skjuta för att hålla igång rutinen smidigt}
} }
void floor3function() {om (floor2sense == hög || floor1sense == hög) / / kontrollera Närhetssensor av första och andra våningen om hissen är det {//if hissen är det kalla det samtidigt (floor3sense == låg) //the motor börjar och slutar när lämpliga golv närheten ger signal {digitalWrite (relayup, hög); //drive hissen upp digitalWrite (Summer, hög); //some buller i mic floor3sense = digitalRead(floor3); fördröjning (10). //a få skjuta för att hålla igång rutinen smidigt}
} }