Med uttrycket Switch() som sekvensering kontroll (5 / 6 steg)
Steg 5: Lägga det alla tillsammans
Eftersom vi har nu sett alla ingångar och utgångar i aktion, låt oss sätta ihop allt!
Vi kommer att simulera en del rör sig längs en monteringslinje, med olika åtgärder tillämpas. Vi kommer använda gränslägesbrytarna och potentiometer feedback från manöverdonet. Detta är den sekvens som vi kommer att följa:
-Vänta på knappen input för att börja cykla
-Utöka första manöverdonet med full fart i 5 sekunder för att flytta del till rätt plats
-Slå på lampan att simulera en tvätt cykel startas
-Vänta 5 sekunder för tvätt, sedan stänga av LED
-Dra tillbaka första manöverdonet på halvfart i 10 sekunder för att torka delen
-Utöka andra manöverdonet i full fart till läge 1
-Slå på andra LED, vänta 2 sekunder, stänger av LED
-Utöka andra manöverdonet i full fart till position 2
-Slå på andra LED, vänta 2 sekunder, stänger av LED
-Utöka andra manöverdonet med full fart i läge 3
-Slå på andra LED, vänta 2 sekunder, stänger av LED
-Dra tillbaka andra manöverdonet med full fart i 5 sekunder att slutföra cykeln.
-Vänta på knappen input till starta om cykeln
Wire systemet enligt diagrammet, och ladda upp koden för att se hur det fungerar!
Eftersom dessa är bara test program, kan du lämna styrelsen plugg in i computern så Arduino kan få makt.
/ * Denna kod är att visa hur utgångar används i en switch-sats. Koden
flyttar ett ställdon in och ut vid olika hastigheter, enligt operationssekvensen.
Skrivet av progressiva automatiseringar
21 sept, 2015
Denna kod är offentlig
*/
CONST int enable1 = 8;
CONST int PWMA1 = 11;
CONST int PWMB1 = 3; //pins för den första MegaMoto(Actuator)
CONST int enable2 = 12;
CONST int PWMA2 = 9;
CONST int PWMB2 = 10; //pins för den andra MegaMoto(Actuator)
CONST int potFeedback = A0; //pin för andra manöverdon potentiometern
CONST int LED1 = 7.
CONST int LED2 = 13. //two stift för lysdioder
CONST int knappen = 6; //restart knapp
int programCount = 0; //variable att flytta genom programmet
int buttonState = 1; //vairable att lagra staten om knappen initiera så hög
int pos1 = 100;
int pos2 = 500.
int pos3 = 1000; //three positioner att flytta till
void setup() {
Serial.BEGIN(9600); / / initiera seriell kommunikation:
programCount = 0; //start i början
pinMode (enable1, produktionen);
pinMode (PWMA1, OUTPUT);
pinMode (PWMB1, OUTPUT); //set första MegaMoto som utgångar
pinMode (enable2, produktionen);
pinMode (PWMA2, OUTPUT);
pinMode (PWMB2, OUTPUT); //set andra MegaMoto utgångar
pinMode (LED1, OUTPUT);
pinMode (LED2, OUTPUT); //set lysdioder som resultat
pinMode (knapp, indata); //set knappen som indata
digitalWrite (knappen, hög), //enable inre pullup
pinMode (potFeedback, ingång); //set potentiometer som indata
} //end setup
void loop() {
växel (programCount) {
fall 0:
digitalWrite(enable1,LOW);
digitalWrite (enable2, låg); //disable båda kontrollera styrelser så manöverdonen inte kan flytta
Serial.println ("väntar på att starta sekvens");
medan (digitalRead(button) == 1) {} //wait här tills knappen trycks
programCount = 1; //once knappen trycks, advance
bryta;
fall 1:
digitalWrite (enable1, hög), //enable den första manöverdon kontrollstyrelsen
Serial.println ("första ställdonet rör sig framåt med full fart");
analogWrite (PWMA1, 255);
analogWrite (PWMB1, 0); //set hastigheten på manöverdonet
fördröjning (5000); //Move i 5 sekunder
analogWrite (PWMA1, 0);
analogWrite (PWMB1, 0); //stop manöverdonet
programCount = 2;
bryta;
fall 2:
Serial.println ("tvätta delen");
digitalWrite (LED1, hög), //turn på LED
programCount = 3;
bryta;
fall 3:
Delay(5000);
Serial.println ("tvätt kompletta");
digitalWrite (LED2, låg), //turn av LED
programCount = 4;
bryta;
fall 4:
Serial.println ("första ställdonet rör sig bakåt på halvfart");
analogWrite (PWMA1, 0);
analogWrite (PWMB1, 128); //set hastigheten på manöverdonet
fördröjning (10000); //Move i 10 sekunder
analogWrite (PWMA1, 0);
analogWrite (PWMB1, 0); //stop manöverdonet
programCount = 5;
bryta;
fall 5:
Serial.println ("andra manöverdon går i full fart till Position 1");
digitalWrite (enable2, hög), //enable andra manöverdon kontrollstyrelsen
medan (analogRead(potFeedback) < = pos1)
{
analogWrite (PWMA2, 255);
analogWrite (PWMB2, 0); //set hastigheten på manöverdonet
}
analogWrite (PWMA2, 0);
analogWrite (PWMB2, 0); //stop manöverdonet
programCount = 6;
bryta;
fall 6:
Serial.println ("första dekal tillämpas");
digitalWrite (LED2, hög);
Delay(2000);
digitalWrite (LED2, låg);
programCount = 7.
bryta;
fall 7:
Serial.println ("andra manöverdon går i full fart till Position 2");
medan (analogRead(potFeedback) < = pos2)
{
analogWrite (PWMA2, 255);
analogWrite (PWMB2, 0); //set hastigheten på manöverdonet
}
analogWrite (PWMA2, 0);
analogWrite (PWMB2, 0); //stop manöverdonet
programCount = 8;
bryta;
mål 8:
Serial.println ("andra dekal tillämpas");
digitalWrite (LED2, hög);
Delay(2000);
digitalWrite (LED2, låg);
programCount = 9;
bryta;
mål 9:
Serial.println ("andra manöverdon går i full fart till Position 3");
medan (analogRead(potFeedback) < = pos3)
{
analogWrite (PWMA2, 255);
analogWrite (PWMB2, 0); //set hastigheten på manöverdonet
}
analogWrite (PWMA2, 0);
analogWrite (PWMB2, 0); //stop manöverdonet
programCount = 10;
bryta;
mål 10:
Serial.println ("tredje dekal tillämpas");
digitalWrite (LED2, hög);
Delay(2000);
digitalWrite (LED2, låg);
programCount = 11;
bryta;
mål 11:
Serial.println ("andra ställdonet rör sig bakåt med full hastighet");
analogWrite (PWMA2, 0);
analogWrite (PWMB2, 255); //set hastigheten på manöverdonet
fördröjning (5000); //Move i 5 sekunder
analogWrite (PWMA2, 0);
analogWrite (PWMB2, 0); //stop manöverdonet
Serial.println ("sekvens komplett");
Serial.println("");
Serial.println(""); //print några tomma utrymmen att göra seriell övervaka mer Läs-stånd
programCount = 0; //loop tillbaka till början
bryta;
standard:
Serial.Print("Error");
samtidigt (1). frysa programmet här
} //end switch
} //end loop