Stap 10: Initialisatie/Setup
De meeste van deze code is redelijk voor zichzelf, maar er zijn sommige delen die ik zal verduidelijken.Deze twee lijnen zijn de hexadecimale getallen die elk cijfer op de scoreborden (0-9 weergeven).
byte digitOne [10] = {0x6F, 0x09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F}; //Player 1 getallen byte digitTwo [10] = {0x6F, 0x09, 0x73, 0x3B, 0x1D, 0x3E, 0x7C, 0x0B, 0x7F, 0x1F}; //Player 2 nummers Bijvoorbeeld, als u weergeven van het nummer '3' op een scorebord wilt, stuurt u 0x3B naar het shift register. Dit zal de shift register pinnen 1,3,4,5 en 15 laag, die het circuit voltooid en oorzaken de LEDs bekabeld aan die pinnen aan het licht. Als u het schema hebt gevolgd bij het bouwen van uw scoreborden, worden die LEDs georiënteerd in de '3' positie. Deze code definieert hoeveel LEDs zijn in de LED-tekenreeks. int nLEDs = 30; //Number voor LEDs Als u niet helemaal uw LED string wijzigt, gebruikt u het nummer 32 hier, niet 30. Ik heb alleen 30 LEDs in mijn reeks, omdat ik moest snijden twee (meer op dat in de sectie over problemen oplossen).
De volgende code stelt beide scoreborden om weer te geven van het cijfer '0'. //Sets scoreborden op '0' digitalWrite (latch1, laag); shiftOut (gegevens1, clock1, MSBFIRST, ~ digitOne[0]); shiftOut (gegevens1, clock1, MSBFIRST, ~ digitTwo[0]); digitalWrite (latch1, hoge); We schrijven de klink pin laag en verzend de gegevens en vervolgens schrijven de klink pin hoog zodat het '' in de nummers sluizen en niet hen veranderen totdat we wilt laten wijzigen. digitOne komt overeen met de speler 1's scorebord en digitTwo aan speler 2's scorebord. Wij sturen het cijfer '0' die de hexadecimale waarde 0x6F en houdt pins 1, 2, 3, 5, 6 en 15 laag - veroorzaakt die LEDs te verlichten.
Vervolgens, ik maakte het zo speler 1 en speler 2 de LEDs werden uitgeschakeld. //Turns uit player1 en player2 LEDs digitalWrite (latch2, laag);
shiftOut (data2, clock2, MSBFIRST, 255);
digitalWrite (latch2, hoge);
digitalWrite (latch3, laag);
shiftOut (data3, clock3, MSBFIRST, 255);
digitalWrite (latch3, hoge); Dit is eigenlijk vergelijkbaar met het initialiseren van het scorebord shift registers, met één uitzondering. Ik gebruikte de bytewaarden in plaats van hexadecimale. Een byte is elke waarde tussen 0 en 255. Bij de communicatie met een shift register, 255 draait alle pins hoge (schakelt de LEDs uit) en 0 schakelt ze alle LOW (alle de LEDs verlicht).
Vervolgens declareren we beide drukknoppen als input. pinMode (player1, INPUT);
digitalWrite (player1, hoge);
pinMode (player2, INPUT);
digitalWrite (player2, hoge); We schrijven ze hoog omdat de Arduino Uno heeft gebouwd in pull-up weerstanden. Door het schrijven van de hoge pinnen, hoeven we niet om te solderen eventuele weerstanden aan de drukknoppen.
Tot slot noemen we de selecScore functie, beschreven in stap 16. score = selectScore(); //Sets de winnende score Initialisatie/installatie code hier