LED Pong (10 / 20 steg)
Steg 10: Initiering/Setup
De flesta av denna kod är ganska självförklarande, men det finns vissa delar som jag ska förtydliga.Dessa två linjer är hexadecimala siffrorna som visar varje siffra på resultattavlor (0-9).
byte digitOne [10] = {0x6F, 0x09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F}; //Player 1 nummer byte digitTwo [10] = {0x6F, 0x09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F}; //Player 2 nummer Till exempel, om du vill visa numret "3" på en resultattavla, skickar du 0x3B till skiftregister. Detta blir SKIFT register stiften 1,3,4,5 och 15 låg, som fullbordar kretsen och orsakar ljusdioderna trådbunden till dessa stift till ljus upp. Om du följt schematiskt när du bygger dina resultattavlor, är dessa lysdioder orienterade i '3' position. Den här koden definierar hur många lampor är LED strängen. int nLEDs = 30. //Number LED Om du inte ändrar din LED string alls, kommer du använda nummer 32 här, inte 30. Jag har bara 30 lysdioder i min sträng eftersom jag var tvungen att klippa två ut (mer om det i avsnittet Felsökning).
Denna kod anger båda resultattavlor visar siffran "0". //Sets resultattavlor '0' digitalWrite (latch1, låg); shiftOut (data1, clock1, MSBFIRST, ~ digitOne[0]); shiftOut (data1, clock1, MSBFIRST, ~ digitTwo[0]); digitalWrite (latch1, hög); Vi skriver spärr stiftet låg och sedan skicka in informationen och sedan skriva spärr stiftet hög så att den "låser in" nummer och kommer inte att ändra dem tills vi vill att de ska ändra. digitOne motsvarar spelare 1's resultattavla och digitTwo till spelare 2's resultattavlan. Vi skickar den siffran "0" som är det hexadecimala värdet 0x6F och innehar stift 1, 2, 3, 5, 6 och 15 låg - orsakar de lysdioder för att belysa.
Nästa, jag gjorde det så spelare 1's och spelare 2 lysdioder var avstängd. //Turns av player1 och spelare2 lysdioder digitalWrite (latch2, låg);
shiftOut (data2, clock2, MSBFIRST, 255);
digitalWrite (latch2, hög);
digitalWrite (latch3, låg);
shiftOut (uppgifter3, Klocka3, MSBFIRST, 255);
digitalWrite (latch3, hög), Detta är verkligen liknar initierar resultattavlan SKIFT register, med ett undantag. Jag använde bytevärdena i stället för hexadecimalt. En byte är ett värde mellan 0 och 255. När du kommunicerar med ett skiftregister, 255 vänder alla stiften hög (släcks lamporna) och 0 vänder dem alla låg (tänds alla lampor).
Sedan deklarerar vi båda tryckknappar som insatsvaror. pinMode (player1, ingång);
digitalWrite (player1, hög);
pinMode (spelare2, ingång);
digitalWrite (spelare2, hög), Vi skriver dem höga eftersom Arduino Uno har inbyggd pull-up motstånd. Genom att skriva stiften hög, behöver vi inte löda alla motstånd att tryckknapparna.
Slutligen kräver vi funktionen selecScore, förklarade i steg 16. poäng = selectScore(); //Sets vinnande poäng Initiering/installationen koden här