Stap 4: Schrijf uw test-schets
Je moet nu het schrijven van een schets op de Arduino test uw knoppen. U wilt om de code te schrijven debug output naar de seriële poort te laten zien dat elke knop werkt zoals verwacht. Kortom, voor elke invoer pin moet gewoon u de pincode instellen om te laten invoeren en kijken naar de PIN-code om te zien wanneer het gaat van hoge (+ 5v/Vcc) naar laag (0v/Gnd). Doe dit 12 keer en je gouden, recht? Het leven is helaas niet zo eenvoudig.
Ten eerste moet u ervoor zorgen dat wanneer de knop niet is ingedrukt, de PIN-code krijgt een gestage 5v, en wanneer deze wordt ingedrukt 0v krijgt. Dit vereist het gebruik van een pull-up weerstand. Als je nieuw bij elektronica bent dit klinkt misschien een beetje vreemd, maar het is zinvol als u erover nadenkt. Meer informatie over pull-up weerstanden hier: https://learn.sparkfun.com/tutorials/pull-up-resistors. De Arduino Micro heeft gelukkig de mogelijkheid om interne pull-up weerstanden, zodat u niet hoeft te doen het zelf. Voor elke invoer pin zoals set de PIN-code in de functie void setup:
pinMode(2, INPUT_PULLUP); // The number represents the pin number
Dus in mijn geval doorlopen ik een array van pinnen als volgt:
const int switchCount = 12; void setup() { for (int i=0; i <= (switchCount -1); i++) { // Make the pushButton pin an input pinMode(i, INPUT_PULLUP); } }
Nu moet je om te lezen van de status van de knoppen. In theorie is dit een eenvoudige. Om te lezen van de Braziliaanse deelstaat pin 2 functie u enkel de digitalRead():
switch2State = digitalRead(2);
Echter wanneer een knop is gedrukt krijg je over het algemeen een beetje ruis voor een paar milliseconden en dit kan worden weergegeven als de knop snel wordt ingedrukt. Hierdoor leven vaak moeilijk om te zeggen het minst. Wat u moet doen is naar 'debounce' van de knop. In wezen leest u de toestand van een knop, als de Braziliaanse veranderd dan u een beetje wachten voordat opnieuw wordt gelezen. Dit moet geven u de werkelijke status van de knop zonder het klapperen waanzinnig. Zie http://arduino.cc/en/Tutorial/Debounce voor meer info.
Dit krijgt een beetje harig voor meer dan een paar knoppen dus ik gebruik gemaakt van de Bounce2 bibliotheek zaken te vereenvoudigen. Zie http://playground.arduino.cc/Code/Bounce voor meer details. Alles wat u hoeft te doen is download het bestand Bounce2-master.zip van de vorige koppeling en zet deze neer in de omslag van de bibliotheken van de Arduino voordat de IDE. Vervolgens deze regel toe te voegen aan de bovenkant van uw schets:
#include <Bounce2.h> // http://playground.arduino.cc/Code/Bounce
U kunt vervolgens een uitsmijter-object koppelen aan elke pin aan het debounce en een schone lezing te krijgen wanneer de knop wordt ingedrukt of losgelaten.
// create a bouncer objectBounce tempBouncer = Bounce(); tempBouncer.attach(2); // Attach pin 2 to the Bouncer object tempBouncer.interval(10); // Set the DeBounce timeout in milliseconds
Nu u netjes elke knop vindt hoeft je alleen te houden een nota van het de stand telkens wanneer u lezen de pin en iets te doen als de status wordt gewijzigd. De bijgevoegde schets toestaat u om te lezen 12 knoppen en zal output een debug-lijn telkens wanneer een knop wordt ingedrukt of losgelaten. Alleen het uploaden van de schets aan de Raad, en zodra u de LED licht druk op CMD + SHIFT + M (Mac) of CTRL + SHIFT + M (Win) om te openen de seriële Monitor ziet. Er zijn tal van opmerkingen inline u te laten weten wat er gaande is.