Automatiserad Cigar Cutter (4 / 7 steg)
Steg 4: Ladda upp källkoden Cigar Cutter
Nu när vi är säkra på att vi har våra set av brödunderläggen wired korrekt och att alla våra servon fungerar och vi kommer att ladda upp källkod projekt. Nedan har jag källkoden visas och kommenterade förklarar dess funktioner.
/*******************************************************
SYFTE: Ljus-A-Bull göra kursen projekt
Skapad av Karl Lewis
DATUM: 11/2014
*******************************************************/
/****************************************************************************************************************************
Här kommer jag använda funktionen #define tilldela en igenkännlig variabel till stiften på Arduino. Definiera funktionen kommer att göra en lättare erkännande av vad varje funktion gör. Utan denna alla funktioner skulle läsas upp från av pin-koder som är mindre kända och kräver hänvisar till vad är ansluten till det klämmer fast.
****************************************************************************************************************************/
#include //Includes servo biblioteket ingår i Arduino IDE
Detta är min servon
Servo vänster, höger, transport. blir vänster på vänster sida av skäraren, rätt på rätten, och transport flyttar cigarren
#define switchPin 13 //this definiera funktion tillåter mig att placera "switchPin" i koden i stället för 13
#define debounceTime 200
lång tid;
int lpos = 0; definiera heltal som ska användas med servon
int rpos = 55.
int cpos = 0;
void setup() {
Left.attach(5); vänstra servo kommer att kontrolleras av stift 5
Right.attach(6); rätt servo kommer att kontrolleras av stift 6
transport.attach(3); servo flytta cigarren kommer att kontrolleras av stift 3
pinMode (switchPin, ingång); Detta anger switchPin som indata
}
void loop() {
Left.write(lpos); Detta kommer att göra vänster servo är vinkeln lika heltal lpos
Right.write(RPOS); jämväl kommer att detta motsvara heltal rpos
transport.write(cpos); och detta är heltalet som cpos
om (readSwitch(debounceTime) == true) {//If loop börjar funktionerna enheter när ingående läser låg
Delay(1000);
Först kommer vi att öppna cigar fräsar med hjälp av en för funktion
Det gick inte att komma med en smart metod att flytta båda servon samtidigt så jag flytta halvvägs
med alla och sedan den andra hälften.
för (lpos = 0; lpos < = 30; lpos += 1) {//half vänsterns rörlighet
Left.write(lpos);
Delay(15);
}
för (rpos = 55; rpos > = 25; rpos-= 1) {//half vänsterns rörlighet
Right.write(RPOS);
Delay(15);
}
Andra halvan av rörelse
för (lpos = 30; lpos < = 65, + lpos = 1) {//secong hälften av vänsterns rörelse
Left.write(lpos);
Delay(15);
}
för (rpos = 25; rpos > = 0; rpos-= 1) {//second hälften av högerns rörelse
Right.write(RPOS);
Delay(15);
}
Delay(2000);
Nu har vi Kontrolltabell cigarren i position att skära
för (cpos = 0; cpos < = 90; cpos + = 1) {
transport.write(cpos);
Delay(15);
}
Detta kommer att nu minska cigarren med hjälp av vänster och höger servon
för (lpos = 65, lpos > = 30; lpos-= 1) {//First hälften av vänster
Left.write(lpos);
Delay(15);
}
för (rpos = 0; rpos < = 25; rpos += 1) {//First hälften av rätten
Right.write(RPOS);
Delay(15);
}
Andra halvan av rörelse
för (lpos = 30; lpos > = 0; lpos-= 1) {//Second hälften av vänster
Left.write(lpos);
Delay(15);
}
för (rpos = 25; rpos < = 55; rpos += 1) {//Second hälften av rätten
Right.write(RPOS);
Delay(15);
}
Delay(2000);
Nu återgår cigarren till utgångsläget
för (cpos = 90; cpos > = 0; cpos-=1) {
transport.write(cpos);
Delay(15);
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ny flik som heter funktioner
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/****************************************************************************************************************************
Denna del används för att läsa min input switch (capacative touch) för att aktivera kretsen. Jag hittade att pekplattan fungerar identiskt till en mekanisk input switch så jag har lämnat denna debounce process på denna ingång.
****************************************************************************************************************************/
byte readSwitch (lång debounce) {//The debounce variabel definieras på huvudsidan
statiska lång lastTime; Ny variabel kallas lastTime, den representerar förra gången växeln var aktiva
statiska byte previousState; Ny variabel kallas previousState representerar det tidigare tillståndet indata
byte currentState = digitalRead(switchPin); Ny variabel currentState som använder en digital läsa av input
om (currentState == låg & & previousState == hög & & millis ()-lastTime > Dämpningstid) {//If min ingångsstift gick bara från hög till låg och dess varit längre än den bounce tid sedan
lastTime=millis(); Detta ställer in lastTime till sista gången och återställer debounce timer previousState = låg; Ange previousState till låg
Return(true); Returnera SANT eller 1 betyder indata har faktiskt inträffat. Detta returneras värdet "true" används för att aktivera om uttalande på föregående sida
}
annat {//If "om"-uttrycket inte var mött det kommer att utföra uppgifter i uttrycket 'else'
Obs: "elseif() {} kommer att skapa en sekundär om uttalande att prestera, med"annan"det kommer att utföras / / om"if"inte.
previousState = hög; PreviousState har angetts till hög
Return(false); Returnera "falska" som anger att växeln inte var tryckte
}
}