Quiz-O-Tron 3000: Arduino frågesport tävlande lockout system (6 / 8 steg)
Steg 6: MCP
Nu lite om Arduino programvara som knyter samman all hårdvara och gör allt arbete som vi skulle vilja. Quiz-O-Tron 3000 Master Control Program (nicka till TRON) kontinuerligt kontrollerar status för 4 input stiften. När en ändring i nätverkstillståndet upptäcks därefter ändrar status för den associerade utgångsstiftet (vrida på lysdioderna) och väntar på fem sekunder. Den utgångsstiftet tillstånd är sedan återställa (LEDs av) och öglan för att kontrollera tillståndet för indata stift repetitioner. Från en programmering perspektiv är detta mycket enkel bearbetning. Här är en lista på Arduino C programmeringskod som utför dessa uppgifter.
/*
Quiz-O-Tron 3000 MCP
Av Roy Rabey
Version 1.0 6-DEC-2010
*//*
Matriser för att definiera Arduino pin uppsättningar är associerade med knappen rutorna.
Enligt definitionen under knappen första tävlande (element 0 från båda matriser) använder stift 5 som indata till upptäcka en switch press och produktionen stift 13 att köra LED power control.
*/
int inputPins [4] = {5,4,3,2}. Numrerar av switch stiften.
int outputPins [4] = {13,12,11,10}. Antal LED stift.Vissa variabler att kontrollera bearbetning
int maxPins = 4; Max antal pin uppsättningar
osignerade långa WinDelayTime = 5000; Antal millisekunders light lysdiodervoid winner(int); Funktionsdefinitionen.
//
Börja bearbetning
//
void setup() {
/*
Setup() utförs en gång när Arduino är påslagen eller återställa.
*/Initiera LED stift.
Detta säger Arduino hur stiften kommer att användas.
för (int p = 0; p < maxPins; p ++) {
pinMode (inputPins [p], ingång); Gör detta till en ingångsstift.
pinMode (outputPins [p], produktionen); Gör detta till en utgångsstiftet.
}
}void loop() {
/*
Funktionen loop() körs efter funktionen setup() är klar.
Som namnet antyder loop() funktion öglor för alltid eller tills Arduino återställs.
*/int val = hög; För att fastställa om en ingångsstift staten har ändrats.
för (int p = 0; p < maxPins; p ++) {
Läs tillståndet för varje ingångsstift.
Val = digitalRead(inputPins[p]); Läser värdet av ingångsstiftet.om (val == låg) {
Om en PIN-kod går låg sedan någon tryckte en knapp.
Winner(p); Anropa funktionen winner() med vinnande pin uppsättning.
}
}
}ogiltigförklara vinnaren (int p) {
Ställ in utgångsstiftet högt att skicka ström till knappens LED krets.
digitalWrite (outputPins [p], hög); Tänds lysdiodernaVänta WinDelayTime millisekunder
Delay(WinDelayTime);Ställ in utgångsstiftet låg döda makt till knappens LED krets.
digitalWrite (outputPins [p], låg); Inaktivera lysdioderna
}
(Observera att jag har tagit denna kod i båda Arduino IDE-format och som en textfil nedan för din bekvämlighet.)
En av de trevliga sakerna om att göra elektronik med mikrokontroller är att vissa projekt funktioner har implementerats i programvara. Detta gör det mycket lätt att ändra. Till exempel, om jag ville flash lysdioderna på rutorna stora knappen i 10 sekunder jag skulle bara ändra värdet på variabeln "WinDelayTime" sedan kompilera/ladda upp den nya mjukvaran till Arduino och jag är klar. Detta är mycket lättare än att behöva räkna om värden för elektroniska komponenter används för att göra timing och sedan ersätta den tillhörande maskinvaran. Detta projekt är ett ganska enkla Arduino program, kan du göra några fantastiska saker med Arduino. Och om du är intresserad av lärande om elektronik finns det många Arduino projekt som kan hjälpa dig. Jag skulle inte ha kunnat bygga detta projekt i den tid jag hade tillgänglig utan Arduino plattformen.
Om du vill veta mer om denna microcontroller utvecklingsplattformen kolla in Arduino projektet på http://www.arduino.cc.