Stap 6: De MCP
Nu een beetje over de Arduino software die alle hardware banden samen en maakt alles werken zoals we zouden willen. De Quiz-O-Tron 3000 Master Control Program (knipoog naar TRON) voortdurend controleert de status van de 4 input pinnen. Wanneer een staat verandering wordt ontdekt vervolgens wijzigt de status van de bijbehorende uitgang pins (het draaien van de LEDs) en wacht gedurende vijf seconden. De uitgang-pins staat is dan reset (LEDs uit) en de lus om te controleren dat de staat van de input pinnen wordt herhaald. Vanuit een programmeertaal oogpunt is dit zeer eenvoudig verwerken. Hier is een lijst van de Arduino C programmacode waarmee u deze taken uitvoert.
/*
Quiz-O-Tron 3000 MCP
Door Roy Rabey
Versie 1.0 6-DEC-2010
*//*
-Arrays op de Arduino pin sets die zijn gekoppeld aan de knop vakken definiëren.
Zoals gedefinieerd onder de eerste deelnemer knop (element 0 van beide arrays) gebruikt pin 5 als invoer op te sporen een schakeloptie pers en uitgang pin 13 tot en met de LED power control te rijden.
*/
int inputPins [4] = {5,4,3,2}; De nummers van de schakelaar pinnen.
int outputPins [4] = {13,12,11,10}; De nummers van de pennen van de LED.Sommige variabelen te verwerking
int maxPins = 4; Max aantal pin sets
unsigned long WinDelayTime = 5000; Aantal milliseconden aan het licht LEDsnietig winner(int); Functie-definitie.
//
Beginnen verwerken
//
VOID Setup {}
/*
Setup wordt uitgevoerd zodra wanneer de Arduino is ingeschakeld of op beginstand zetten.
*/Initialiseren van de pennen van de LED.
Dit vertelt de Arduino hoe de pinnen zullen worden gebruikt.
voor (int p = 0; p < maxPins; p ++) {}
pinMode (inputPins [p], INPUT); Maken dit een invoer pin.
pinMode (outputPins [p], OUTPUT); Maken dit een uitgang Pins.
}
}void loop {}
/*
De loop-functie wordt uitgevoerd nadat de functie Setup is voltooid.
Zoals de naam de loop functie lussen impliceert voor eeuwig of tot de Arduino opnieuw wordt ingesteld.
*/int val = hoog; Gebruikt om te bepalen of een invoer pin staat is gewijzigd.
voor (int p = 0; p < maxPins; p ++) {}
Lees de status van elke invoer pin.
Val = digitalRead(inputPins[p]); Leest de waarde van de invoer pin.Als (val == LOW) {}
Als een pin laag gaat dan iemand op een knop gedrukt.
Winner(p); Roept de functie winner() met het winnen van de pin set.
}
}
}VOID winnaar (int p) {}
Stel de output pin HIGH power om naar te sturen van de knop LED circuit.
digitalWrite (outputPins [p], hoge); De LED's inschakelenWinDelayTime milliseconden wacht
delay(WinDelayTime);Stel de uitgang pins laag om te doden van de macht van de knop LED circuit.
digitalWrite (outputPins [p], laag); De LED's uitschakelen
}
(Merk op dat ik deze code hebben opgenomen in zowel de Arduino IDE-bestandsindeling en als een tekstbestand hieronder voor uw gemak.)
Een van de leuke dingen over het doen van elektronica met microcontrollers is dat sommige van de project-functionaliteit is geïmplementeerd in software; Dit maakt het zeer eenvoudig om te veranderen. Bijvoorbeeld, als ik wilde flash van de LED's op de grote knop vakken voor 10 seconden ik zou gewoon wijzigen van de waarde van de variabele "WinDelayTime" dan compile/upload de nieuwe software aan de Arduino en ik ben klaar. Dit is veel gemakkelijker dan moetend berekenen van waarden voor elektronische componenten gebruikt om te doen de timing en vervangt u de bijbehorende hardware. Terwijl dit project een vrij eenvoudige toepassing van de Arduino is, kan je enkele verbazingwekkende dingen met de Arduino. En bent u geïnteresseerd in het leren over elektronica zijn er vele Arduino gebaseerde projecten die u kunnen helpen. Ik zou niet geweest kundig voor lichaamsbouw van dit project in de tijd had ik zonder de Arduino platform beschikbaar.
Bent u geïnteresseerd in het leren die meer over deze microcontroller-ontwikkelplatform Bekijk de Arduino project op http://www.arduino.cc.