Stap 4: Uploaden de Cigar Cutter Source Code
Nu dat we ervan overtuigd zijn dat we onze breadboard correct bedraad hebben en dat al onze servo's zijn werking en wij zijn zal uploaden broncode de projecten. Ik heb hieronder de Source code getoond en commentaar zijn functies uit te leggen.
/*******************************************************
DOEL: Licht-A-Bull maken cursus Project
Gemaakt door Karl Lewis
DATUM: 11/2014
*******************************************************/
/****************************************************************************************************************************
Ik zal hier de #define-functie gebruiken om een herkenbaar variabele toewijzen aan pinnen op de Arduino. Deze functie definiëren zorgt voor een eenvoudiger erkenning van wat elke functie doet. Zonder deze alle functies zou worden gelezen off van door pin-codes die minder herkenbaar en vereisen verwijzen naar wat is verbonden met deze pin.
****************************************************************************************************************************/
#include //Includes de servo-bibliotheek opgenomen met de Arduino IDE
Dit zijn mijn Servos
Servo links, rechts, vervoer; links zal worden aan de linkerzijde van de cutter, recht op rechts en vervoer beweegt de sigaar
#define switchPin 13 //this functie definiëren zal ik wil plaats van 'switchPin' in code in plaats van 13
#define debounceTime 200
lange tijd;
int lpos = 0; gehele getallen worden gebruikt met de servo's definiëren
int productoutput = 55;
int onderverdeling = 0;
VOID Setup {}
Left.attach(5); de linker servo zal worden gecontroleerd door pin 5
right.attach(6); de juiste servo zal worden gecontroleerd door pin 6
transport.attach(3); het verplaatsen van de sigaar servo zal worden gecontroleerd door pin 3
pinMode (switchPin, INPUT); Dit zal de switchPin ingesteld als input
}
void loop {}
Left.write(lpos); Hierdoor wordt de linker servo's hoek gelijk de integer-lpos
right.write(rpos); ook komt dit overeen met integer productoutput
transport.write(cpos); en dit zal het gehele getal onderverdeling
Als (readSwitch(debounceTime) == true) {//If lus begint de apparaten functies wanneer de input laag leest
delay(1000);
Eerst openen we de sigaar cutters met behulp van een functie
Ik was niet in staat om te komen met een slimme methode om beide servo's tegelijkertijd verplaatsen zodat ik gaan halverwege
met elk en vervolgens de andere helft.
voor (lpos = 0; lpos < = 30; lpos += 1) {//half van links verkeer
Left.write(lpos);
delay(15);
}
voor (productoutput = 55; productoutput > = 25; productoutput-= 1) {//half van links verkeer
right.write(rpos);
delay(15);
}
Tweede helft van de beweging
voor (lpos = 30; lpos < = 65; lpos += 1) {//secong helft van links verkeer
Left.write(lpos);
delay(15);
}
voor (productoutput = 25; productoutput > = 0; productoutput-= 1) {//second helft van recht van verkeer
right.write(rpos);
delay(15);
}
delay(2000);
Nu zijn we Controletaqbellen de sigaar in positie te snijden
voor (onderverdeling = 0; onderverdeling < = 90; onderverdeling += 1) {}
transport.write(cpos);
delay(15);
}
Dit zal nu de verlaging van de sigaar met behulp van de linker en rechter servos
voor (lpos = 65; lpos > = 30; lpos-= 1) {//First helft van links
Left.write(lpos);
delay(15);
}
voor (productoutput = 0; productoutput < = 25; productoutput += 1) {//First helft van rechts
right.write(rpos);
delay(15);
}
Tweede helft van de beweging
voor (lpos = 30; lpos > = 0; lpos-= 1) {//Second helft van links
Left.write(lpos);
delay(15);
}
voor (productoutput = 25; productoutput < = 55; productoutput += 1) {//Second helft van rechts
right.write(rpos);
delay(15);
}
delay(2000);
Nu zal de sigaar terug naar de home positie
voor (onderverdeling = 90; onderverdeling > = 0; onderverdeling-=1) {}
transport.write(cpos);
delay(15);
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nieuwe tabblad functies
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/****************************************************************************************************************************
Dit gedeelte wordt gebruikt om te lezen mijn input schakelaar (capacative aanraking) om te activeren van het circuit. Ik vond dat de touchpad identiek aan een mechanische input schakelaar, werkt dus ik heb dit ontdendering proces op deze ingang verlaten.
****************************************************************************************************************************/
byte readSwitch (lange ontdendering) {//The ontdendering wisselend zit preciseren op Hoofdpagina
statische lange lastTime; Nieuwe variabele met de naam lastTime, het vertegenwoordigt de laatste keer dat de schakelaar actief was
statische byte previousState; Nieuwe variabele genaamd previousState vertegenwoordigt de eerdere toestand van de input
byte currentStatus = digitalRead(switchPin); Nieuwe variabele currentStatus, die gebruik van een digitaal maken zal lezen van input
Als (currentStatus == LOW & & previousState == HIGH & & millis ()-lastTime > debounce) {//If mijn invoer pin ging gewoon van hoog naar laag en zijn al langer dan de bounce keer dan
lastTime=millis(); Dit wordt lastTime ingesteld op de laatste tijd en stelt de ontdendering timer previousState = laag; Set previousState op laag
Return(true); In feite terugkeren waar of 1 betekent een input opgetreden. Dit terug 'echte' waarde wordt gebruikt om het activeren van de als verklaring op de vorige pagina
}
Else {//If de instructie 'als' niet was voldaan aan het zal het uitvoeren van de taken in de instructie 'else'
Opmerking: ' {elseif()} ontstaat een secundaire als verklaring aan het uitvoeren, met 'anders' het zal worden uitgevoerd / / als de 'if' niet.
previousState = hoog; De previousState ingesteld op hoog
Return(false); Resultaat 'false' die zal aangeven dat de schakelaar niet werd ingedrukt
}
}