Zbudujemy układ o analogicznej zasadzie działania jak w pierwszej części tego e‑materiału, ale tym razem zastosujemy inną metodę sterowania matrycą LED. Pisząc kod, skorzystamy z niektórych funkcji przygotowanych w poprzedniej części. Co nam będzie potrzebne:
przewody połączeniowe męsko‑męskie,
Arduino Uno,
9 x rezystor 220 Ωomega,
9 x dioda LED dwukolorowa - WK,
2 x przycisk tact‑switch,
płytka stykowa,
kabel USB typu A‑B do podłączenia do komputera.
Slajd drugi
Schemat elektryczny połączeń arduino nano z rezystorami, diodami led i przyciskami. Pin GND podpięty do szyny GND płyty stykowej. Pin D12 i pin D13 podpięte do wyjść przycisków. Pozostałe wyjścia przycisków podpięte są do szyny GND. Do pinu D6, D7, D8, D9, D10, D11 podpięte są kolumn rezystorów. Do pinów D3, D4, D5 podpięte są kolumny diod led. Wiersz diody led 1KR połączony jest wierszem rezystora R3, wiersz diody led 1KG połączony jest wierszem rezystora R5, wiersz diody led 2KR połączony jest wierszem rezystora R1, wiersz diody led 2KG połączony jest wierszem rezystora R4, wiersz diody led 3KR połączony jest wierszem rezystora R6, wiersz diody led 3KG połączony jest wierszem rezystora R2
Układ budujemy zgodnie z przedstawionym schematem.
Slajd trzeci
Zdjęcie przedstawia moduł arduino UNO płytkę stykową, przewody połączeniowe męsko męskie, rezystory, diody led, przyciski i kabel usb do podłączenia komputera.
Zdjęcie przedstawia moduł arduino UNO z podpiętym kablem usb, przewody połączeniowe męsko męskie, rezystory, diody led i wpięte na początku płyty stykowej dwa przyciski.
Umieść diodę LED w płytce stykowej – tym razem dla ułatwienia wiersz numer 3 znajduje się po prawej stronie płytki. Numeracja wierszy, podobnie jak poprzednio, zaczyna się od góry od lewej strony.
Slajd szósty
Zdjęcie przedstawia moduł arduino UNO podpiętym kablem usb, przewody połączeniowe męsko męski, wpięte w płytkę stykową przyciski, diody led i rezystory.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb, przewody połączeniowe męsko męski, diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej i połączenie GND szyny płyty stykowej z GND Arduino Uno.
Podłącz jedno wyjście przycisków do szyny GND, a szynę połącz z GND Arduino.
Slajd ósmy
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb, przewody połączeniowe męsko męski, diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej i połączenie GND szyny płyty stykowej z GND Arduino Uno i połączenie wszystkich kolumn.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb, przewody połączeniowe męsko męski, diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej i połączenie GND szyny płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn i wierszy.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy i podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino Uno.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino Uno. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino Uno.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino Uno. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino Uno i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino Uno.
Funkcja wyświetl odczytuje stan poszczególnych diod LED ze zmiennej stan i na podstawie odczytanego stanu zapala odpowiednio każdą diodę. Z racji tego, że wykorzystujemy matrycę multipleksowaną, funkcja musi zapalić wszystkie wiersze po kolei, odczekując między przełączeniami.
nagłówek funkcji:
Linia 1. int wyswietl otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik funkcja wyswietlajaca wynik.
int wyswietl() { // funkcja wyswietlajaca wynik
Następnie należy zapalić odpowiedni wiersz, gasząc przy tym pozostałe. W tym celu wykorzystamy funkcję switch() przełączającą nas po poszczególnych wierszach podczas trwania iteracji pętli for().
Linia 1. for otwórz nawias okrągły int row znak równości 0 średnik row otwórz nawias ostrokątny 3 średnik row plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. switch otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. case 0 dwukropek.
Linia 4. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 6. digitalWrite otwórz nawias okrągły 5 przecinek LOW zamknij nawias okrągły średnik.
Linia 7. break średnik.
Linia 8. case 1 dwukropek.
Linia 9. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 10. digitalWrite otwórz nawias okrągły 4 przecinek LOW zamknij nawias okrągły średnik.
Linia 11. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 12. break średnik.
Linia 13. case 2 dwukropek.
Linia 14. digitalWrite otwórz nawias okrągły 3 przecinek LOW zamknij nawias okrągły średnik.
Linia 15. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 16. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 17. break średnik.
Linia 18. default dwukropek.
Linia 19. break średnik.
Linia 20. zamknij nawias klamrowy.
Po włączeniu wiersza należy odczytać stany poszczególnych kolumn i zapalić diody LED. Dzięki zastosowaniu takiego ułożenia pinów zewnętrznych, że są one matematycznie proste do przesunięcia, jest możliwe wykorzystanie ponownie pętli for().
Linia 1. for otwórz nawias okrągły int col znak równości 0 średnik col otwórz nawias ostrokątny 3 średnik col plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 5. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 7. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 8. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 10. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 11. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 13. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 14. zamknij nawias klamrowy.
Linia 15. zamknij nawias klamrowy.
for (int col = 0 ; col < 3; col++) {
if (stan[col + row * 3] == 0) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 1) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 2) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 1);
} else if (stan[col + row * 3] == 3) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 1);
}
}
Po zapaleniu odpowiednich diod LED w wierszu należy odczekać zadany czas.
W pętli głównej programu jest sprawdzany stan przycisku odpowiedzialnego za przesunięcie:
Zastosowano sprawdzenie stanu, następnie odczekanie i ponowne sprawdzenie w celu zniwelowania zjawiska drgania styków. Ze względu na to, że nasz program nie może zostać zawieszony, ponieważ byłoby widać zatrzymanie przełączania stanu LED na matrycy, należy zamiast klasycznej funkcji delay() posłużyć się wywołaniem funkcji wyświetl określoną liczbę razy. W naszym przypadku funkcja ta zajmuje około 15 milisekund, więc wywołanie jej 10 razy spowoduje 150 ms opóźnienie.
Linia 1. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik poruszanie się po planszy.
Linia 2. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 4. zamknij nawias klamrowy.
Linia 5. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
if (!digitalRead(13)) { // poruszanie się po planszy
for (int i = 0; i < 10; i++) {
wyswietl();
}
if (!digitalRead(13)) {
Wykonie przesunięcia na planszy należy poprzedzić znalezieniem wolnego miejsca.
Linia 1. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 2. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. nowaPozycja znak równości 0 średnik.
Linia 4. zamknij nawias klamrowy.
Linia 5. int przesuwanie znak równości 1 średnik.
Linia 6. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 0 średnik.
Linia 9. pozycja znak równości nowaPozycja średnik.
Linia 10. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 11. przesuwanie znak równości 0 średnik.
Linia 12. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 13. nowaPozycja plus plus średnik.
Linia 14. przesuwanie plus plus średnik.
Linia 15. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. nowaPozycja znak równości 0 średnik.
Linia 17. zamknij nawias klamrowy.
Linia 18. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 19. przesuwanie znak równości 0 średnik.
Linia 20. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 21. zamknij nawias klamrowy.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
stan[pozycja] = 0;
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
Jeśli na całej planszy nie jesteśmy w stanie znaleźć wolnego miejsca do przesunięcia, oznacza to, że nie ma już takich miejsc i należy zakończyć grę, wywołując funkcję efektKoncowy().
W pętli głównej programu jest sprawdzany również stan przycisku odpowiedzialnego za zaznaczenie danego pola:
Odczytujemy stan ponownie z programowym filtrowaniem drgania styków:
Linia 1. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 3. zamknij nawias klamrowy.
for (int i = 0; i < 10; i++) {
wyswietl();
}
Wykonujemy zaznaczenie pola, na którym się aktualnie znajdujemy:
Linia 1. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 1 średnik.
stan[pozycja] = 1;
Dokonujemy sprawdzenia wyniku, korzystając z funkcji wynik(); w przypadku gdy nie oznacza on końca gry, swój ruch wykonuje Arduino:
Linia 1. if otwórz nawias okrągły wynik otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. prawy ukośnik prawy ukośnik Arduino losuje.
Linia 3. int losowanie znak równości 1 średnik.
Linia 4. int losowa średnik.
Linia 5. while otwórz nawias okrągły losowanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. losowa znak równości random otwórz nawias okrągły 0 przecinek 9 zamknij nawias okrągły średnik.
Linia 7. if otwórz nawias okrągły stan otwórz nawias kwadratowy losowa zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. stan otwórz nawias kwadratowy losowa zamknij nawias kwadratowy znak równości 2 średnik.
Linia 9. losowanie znak równości 0 średnik.
Linia 10. zamknij nawias klamrowy.
Linia 11. zamknij nawias klamrowy.
if (wynik()) {
// Arduino losuje
int losowanie = 1;
int losowa;
while (losowanie) {
losowa = random(0, 9);
if (stan[losowa] == 0) {
stan[losowa] = 2;
losowanie = 0;
}
}
Losowanie odbywa się w pętli while(), ponieważ nie wiemy, czy wylosowany numer na pewno nie będzie już zajęty. Jako źródło losowości służy nam funkcja random() generująca losową wartość, w której następnie chcemy postawić symbol.
Dokonujemy ponownego sprawdzenia wyniku; jeśli nie oznacza on końca gry, należy wyznaczyć nowe wolne miejsce dla gracza, aby mógł wykonać swój ruch:
Linia 1. if otwórz nawias okrągły wynik otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 3. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 4. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. nowaPozycja znak równości 0 średnik.
Linia 6. zamknij nawias klamrowy.
Linia 7. int przesuwanie znak równości 1 średnik.
Linia 8. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. pozycja znak równości nowaPozycja średnik.
Linia 11. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 12. przesuwanie znak równości 0 średnik.
Linia 13. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 14. nowaPozycja plus plus średnik.
Linia 15. przesuwanie plus plus średnik.
Linia 16. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. nowaPozycja znak równości 0 średnik.
Linia 18. zamknij nawias klamrowy.
Linia 19. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. przesuwanie znak równości 0 średnik.
Linia 21. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
Linia 24. zamknij nawias klamrowy.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 27. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 28. zamknij nawias klamrowy.
if (wynik()) {
wyswietl();
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
}
} else {
efektKoncowy();
}
Jeśli po ruchu Arduino nastąpił koniec gry, jest wyświetlany tylko efekt końcowy i gra zaczyna się od nowa.
Czekamy na puszczenie przycisku przez gracza, ale w tle ciągle musimy odświeżać wygląd matrycy:
Linia 1. while otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 3. zamknij nawias klamrowy.
Linia 1. int stan otwórz nawias kwadratowy 9 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 3 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 zamknij nawias klamrowy średnik prawy ukośnik prawy ukośnik 0 minus zgaszone przecinek 1 minus kolko czerwone przecinek 2 minus krzyzyk zielony przecinek 3 wybrane aktualnie pole.
Linia 2. int pozycja znak równości 0 średnik.
Linia 5. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. pinMode otwórz nawias okrągły 13 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 7. pinMode otwórz nawias okrągły 12 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 9. pinMode otwórz nawias okrągły 11 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 10. pinMode otwórz nawias okrągły 10 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 11. pinMode otwórz nawias okrągły 9 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 12. pinMode otwórz nawias okrągły 8 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 13. pinMode otwórz nawias okrągły 7 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 14. pinMode otwórz nawias okrągły 6 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 15. pinMode otwórz nawias okrągły 5 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 16. pinMode otwórz nawias okrągły 4 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 17. pinMode otwórz nawias okrągły 3 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 18. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 19. zamknij nawias klamrowy.
Linia 21. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik poruszanie się po planszy.
Linia 23. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 24. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 25. zamknij nawias klamrowy.
Linia 26. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 27. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 28. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 29. nowaPozycja znak równości 0 średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. int przesuwanie znak równości 1 średnik.
Linia 32. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 33. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 34. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 0 średnik.
Linia 35. pozycja znak równości nowaPozycja średnik.
Linia 36. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 37. przesuwanie znak równości 0 średnik.
Linia 38. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 39. nowaPozycja plus plus średnik.
Linia 40. przesuwanie plus plus średnik.
Linia 41. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. nowaPozycja znak równości 0 średnik.
Linia 43. zamknij nawias klamrowy.
Linia 44. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 45. przesuwanie znak równości 0 średnik.
Linia 46. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 47. zamknij nawias klamrowy.
Linia 48. zamknij nawias klamrowy.
Linia 49. zamknij nawias klamrowy.
Linia 50. zamknij nawias klamrowy.
Linia 51. zamknij nawias klamrowy.
Linia 53. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 54. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 55. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 56. zamknij nawias klamrowy.
Linia 57. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik zaznaczanie wybranego pola.
Linia 58. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 1 średnik.
Linia 59. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 60. if otwórz nawias okrągły wynik otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 61. prawy ukośnik prawy ukośnik Arduino losuje.
Linia 62. int losowanie znak równości 1 średnik.
Linia 63. int losowa średnik.
Linia 64. while otwórz nawias okrągły losowanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 65. losowa znak równości random otwórz nawias okrągły 0 przecinek 9 zamknij nawias okrągły średnik.
Linia 66. if otwórz nawias okrągły stan otwórz nawias kwadratowy losowa zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 67. stan otwórz nawias kwadratowy losowa zamknij nawias kwadratowy znak równości 2 średnik.
Linia 68. losowanie znak równości 0 średnik.
Linia 69. zamknij nawias klamrowy.
Linia 70. zamknij nawias klamrowy.
Linia 71. if otwórz nawias okrągły wynik otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 72. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 73. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 74. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 75. nowaPozycja znak równości 0 średnik.
Linia 76. zamknij nawias klamrowy.
Linia 77. int przesuwanie znak równości 1 średnik.
Linia 78. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 79. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 80. pozycja znak równości nowaPozycja średnik.
Linia 81. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 82. przesuwanie znak równości 0 średnik.
Linia 83. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 84. nowaPozycja plus plus średnik.
Linia 85. przesuwanie plus plus średnik.
Linia 86. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 87. nowaPozycja znak równości 0 średnik.
Linia 88. zamknij nawias klamrowy.
Linia 89. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 90. przesuwanie znak równości 0 średnik.
Linia 91. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 92. zamknij nawias klamrowy.
Linia 93. zamknij nawias klamrowy.
Linia 94. zamknij nawias klamrowy.
Linia 95. zamknij nawias klamrowy.
Linia 96. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 97. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 98. zamknij nawias klamrowy.
Linia 99. while otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 100. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 101. zamknij nawias klamrowy.
Linia 102. zamknij nawias klamrowy.
Linia 103. zamknij nawias klamrowy.
Linia 104. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 105. zamknij nawias klamrowy.
Linia 107. int wynik otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 108. if otwórz nawias okrągły koniec otwórz nawias okrągły 1 zamknij nawias okrągły kreska pionowa kreska pionowa koniec otwórz nawias okrągły 2 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik sprawdzenie końca gry i efekt końcowy.
Linia 109. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 110. return 0 średnik prawy ukośnik prawy ukośnik jeśli koniec gry.
Linia 111. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 112. return 1 średnik prawy ukośnik prawy ukośnik jesli gra dalej.
Linia 113. zamknij nawias klamrowy.
Linia 114. zamknij nawias klamrowy.
Linia 116. int efektKoncowy otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 117. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 118. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 1 średnik.
Linia 119. zamknij nawias klamrowy.
Linia 121. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 122. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 123. zamknij nawias klamrowy.
Linia 124. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 125. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 2 średnik.
Linia 126. zamknij nawias klamrowy.
Linia 127. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 128. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 129. zamknij nawias klamrowy.
Linia 130. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 131. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 132. zamknij nawias klamrowy.
Linia 133. pozycja znak równości 0 średnik.
Linia 134. stan otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości 3 średnik.
Linia 135. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 136. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 137. zamknij nawias klamrowy.
Linia 138. zamknij nawias klamrowy.
Linia 140. int koniec otwórz nawias okrągły int symbol zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik funkcja sprawdzająca czy osiągnięto koniec gry dla danego gracza.
Linia 141. int test znak równości 0 średnik.
Linia 142. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości 6 średnik i plus znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 143. if otwórz nawias okrągły stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 2 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 144. test znak równości 1 średnik.
Linia 145. zamknij nawias klamrowy.
Linia 146. zamknij nawias klamrowy.
Linia 147. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości 2 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 148. if otwórz nawias okrągły stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 3 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 6 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 149. test znak równości 1 średnik.
Linia 150. zamknij nawias klamrowy.
Linia 151. zamknij nawias klamrowy.
Linia 152. if otwórz nawias okrągły stan otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 8 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 153. test znak równości 1 średnik.
Linia 154. zamknij nawias klamrowy.
Linia 155. if otwórz nawias okrągły stan otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 6 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 156. test znak równości 1 średnik.
Linia 157. zamknij nawias klamrowy.
Linia 158. return test średnik.
Linia 159. zamknij nawias klamrowy.
Linia 161. int wyswietl otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik funkcja wyswietlajaca wynik.
Linia 162. for otwórz nawias okrągły int row znak równości 0 średnik row otwórz nawias ostrokątny 3 średnik row plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 163. switch otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
Linia 164. case 0 dwukropek.
Linia 165. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 166. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 167. digitalWrite otwórz nawias okrągły 5 przecinek LOW zamknij nawias okrągły średnik.
Linia 168. break średnik.
Linia 169. case 1 dwukropek.
Linia 170. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 171. digitalWrite otwórz nawias okrągły 4 przecinek LOW zamknij nawias okrągły średnik.
Linia 172. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 173. break średnik.
Linia 174. case 2 dwukropek.
Linia 175. digitalWrite otwórz nawias okrągły 3 przecinek LOW zamknij nawias okrągły średnik.
Linia 176. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 177. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 178. break średnik.
Linia 179. default dwukropek.
Linia 180. break średnik.
Linia 181. zamknij nawias klamrowy.
Linia 182. for otwórz nawias okrągły int col znak równości 0 średnik col otwórz nawias ostrokątny 3 średnik col plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 183. if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 184. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 185. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 186. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 187. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 188. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 189. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 190. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 191. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 192. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 193. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 194. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 195. zamknij nawias klamrowy.
Linia 196. zamknij nawias klamrowy.
Linia 197. delay otwórz nawias okrągły 5 zamknij nawias okrągły średnik.
Linia 198. zamknij nawias klamrowy.
Linia 199. zamknij nawias klamrowy.
int stan[9] = {3, 0, 0, 0, 0, 0, 0, 0, 0}; // 0 - zgaszone, 1 - kolko czerwone, 2 - krzyzyk zielony, 3 wybrane aktualnie pole
int pozycja = 0;
void setup() {
pinMode(13, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
wyswietl();
}
void loop() {
if (!digitalRead(13)) { // poruszanie się po planszy
for (int i = 0; i < 10; i++) {
wyswietl();
}
if (!digitalRead(13)) {
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
stan[pozycja] = 0;
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
}
}
if (!digitalRead(12)) {
for (int i = 0; i < 10; i++) {
wyswietl();
}
if (!digitalRead(12)) { // zaznaczanie wybranego pola
stan[pozycja] = 1;
wyswietl();
if (wynik()) {
// Arduino losuje
int losowanie = 1;
int losowa;
while (losowanie) {
losowa = random(0, 9);
if (stan[losowa] == 0) {
stan[losowa] = 2;
losowanie = 0;
}
}
if (wynik()) {
wyswietl();
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
}
} else {
efektKoncowy();
}
while (!digitalRead(12)) {
wyswietl();
}
}
}
wyswietl();
}
int wynik() {
if (koniec(1) || koniec(2)) { // sprawdzenie końca gry i efekt końcowy
efektKoncowy();
return 0; // jeśli koniec gry
} else {
return 1; // jesli gra dalej
}
}
int efektKoncowy() {
for (int i = 0; i < 9; i++) {
stan[i] = 1;
}
for (int i = 0; i < 20; i++) {
wyswietl();
}
for (int i = 0; i < 9; i++) {
stan[i] = 2;
}
for (int i = 0; i < 20; i++) {
wyswietl();
}
for (int i = 0; i < 9; i++) {
stan[i] = 0;
}
pozycja = 0;
stan[0] = 3;
for (int i = 0; i < 20; i++) {
wyswietl();
}
}
int koniec(int symbol) { // funkcja sprawdzająca czy osiągnięto koniec gry dla danego gracza
int test = 0;
for (int i = 0; i <= 6; i += 3) {
if (stan[i] == symbol && stan[i + 1] == symbol && stan[i + 2] == symbol) {
test = 1;
}
}
for (int i = 0; i <= 2; i ++) {
if (stan[i] == symbol && stan[i + 3] == symbol && stan[i + 6] == symbol) {
test = 1;
}
}
if (stan[0] == symbol && stan[4] == symbol && stan[8] == symbol) {
test = 1;
}
if (stan[2] == symbol && stan[4] == symbol && stan[6] == symbol) {
test = 1;
}
return test;
}
int wyswietl() { // funkcja wyswietlajaca wynik
for (int row = 0; row < 3; row++) {
switch (row) {
case 0:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
break;
case 1:
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
break;
case 2:
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
default:
break;
}
for (int col = 0 ; col < 3; col++) {
if (stan[col + row * 3] == 0) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 1) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 2) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 1);
} else if (stan[col + row * 3] == 3) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 1);
}
}
delay(5);
}
}
Slajd dwudziesty czwarty
Zapoznaj się z filmem przedstawiającym działanie programu.
REFHszUsWpsLc1
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduino w grze w kółko i krzyżyk.
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduino w grze w kółko i krzyżyk.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ponieważ wykorzystując multipleksację, udało się nam zwolnić cześć pinów GPIO, zmodyfikujemy teraz grę tak, aby umożliwiła rozrywkę dla dwóch osób. Dodamy wskaźnik gracza oraz tablicę wyników. Podobnie jak poprzednio, skorzystamy z multipleksacji.
Co nam będzie potrzebne:
przewody połączeniowe męsko‑męskie
Arduino Uno,
13 x rezystor 220 Ωomega,
9 x dioda LED dwukolorowa – WK,
4 x dioda LED zielona,
4 x dioda LED czerwona,
2 x przycisk tact‑switch,
płytka stykowa,
kabel USB typu A‑B do podłączenia do komputera.
Slajd dwudziesty szósty
Schemat elektryczny połączeń arduino nano z rezystorami, diodami led i dwa przyciski ok i next. Pin GND podpięty do szyny GND płyty stykowej. Pin D12 i pin D13 podpięte do wyjść przycisków. Pozostałe wyjścia przycisków podpięte są do szyny GND. Do pinu D6, D7, D8, D9, D10, D11 podpięte są kolumn rezystorów. Do pinów D3, D4, D5 podpięte są kolumny diod led. Wiersz diody led 1KR połączony jest wierszem rezystora R3, wiersz diody led 1KG połączony jest wierszem rezystora R5, wiersz diody led 2KR połączony jest wierszem rezystora R1, wiersz diody led 2KG połączony jest wierszem rezystora R4, wiersz diody led 3KR połączony jest wierszem rezystora R6, wiersz diody led 3KG połączony jest wierszem rezystora R2. Do pinu A5 Arduino Uno podłączone są kolumny diod D1, D3, D5, D7. Do pinu A4 Arduino Uno podłączone są kolumny diod D2, D4, D6, D8. Rezystory R1 połączony jest anodą kolumn diod D1, D2. Rezystory R2 połączony jest anodą kolumn diod D3, D4. Rezystory R3 połączony jest anodą kolumn diod D5, D6. Rezystory R4 połączony jest anodą kolumn diod D7, D8. Rezystor R1 połączony jest przez pin A3 Arduino Uno. Rezystor R2 połączony jest przez pin A2 Arduino Uno. Rezystor R3 połączony jest przez pin A1 Arduino Uno. Rezystor R4 połączony jest przez pin A0 Arduino Uno.
Układ budujemy zgodnie z przedstawionym schematem.
Slajd dwudziesty siódmy
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Widoczne są cztery czerwone, cztery zielone diody led i cztery rezystory.
Przygotuj potrzebne elementy. Ich łączenie rozpoczniemy na podstawie układu zbudowanego w poprzedniej części tego e‑materiału.
Slajd dwudziesty ósmy
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Diody czerwone i zielone zostały wpięte w niewykorzystane szyny zasilania. Obok leżą cztery rezystory.
Umieść diody LED w dwóch wierszach; w prezentowanym tu przypadku skorzystano z niewykorzystanych szyn zasilania na płytce, aby uzyskać połączenie wierszy.
Slajd dwudziesty dziewiąty
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Cztery diody czerwone i zielone zostały wpięte w niewykorzystane szyny zasilania. Widoczne jest połączenie kolumn diod czerwonych i zielonych. Obok leżą cztery rezystory.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Cztery diody czerwone i zielone zostały wpięte w niewykorzystane szyny zasilania. Widoczne jest połączenie kolumn diod czerwonych i zielonych. W anodach diod czerwonych i zielonych umieszczono wpięto rezystory.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Cztery diody czerwone i zielone zostały wpięte w niewykorzystane szyny zasilania. Widoczne jest połączenie kolumn diod czerwonych i zielonych. W anodach diod czerwonych i zielonych umieszczono wpięto rezystory. Połączono kolumny czerwonych i zielonych diod led z Arduino Uno pin A5 i A4.
Zdjęcie przedstawia moduł Arduino UNO podpiętym kablem usb,. Wpięte diody led i rezystory . Widoczne jest połączenie przycisków z szyną GND płyty stykowej z GND Arduino Uno, połączenie wszystkich kolumn, wierszy, podłączenie wyjść przycisków do pinu 12 i 13 płytki Arduino. Widoczne jest również podłączenie rezystorów kolumn do pinów 6, 7, 8, 9, 10, 11 płytki Arduino i połączenie rezystorów kolumn do pinów 3, 4, 5 płytki Arduino. Cztery diody czerwone i zielone zostały wpięte w niewykorzystane szyny zasilania. Widoczne jest połączenie kolumn diod czerwonych i zielonych. W anodach diod czerwonych i zielonych umieszczono wpięto rezystory. Połączono kolumny czerwonych i zielonych diod led z Arduino Uno pin A5 i A4 i wiersze przez rezystory z pinami A3, A2, A1, A0.
Ponieważ mechanika gry nie zmieniła się, jeśli chodzi o wykonywanie przesunięć na planszy, nie musimy modyfikować odpowiadającego za to fragmentu kodu.
W pętli głównej należy zmodyfikować wybieranie przez gracza zaznaczonego aktualnie pola. Z racji tego, że nie potrzebujemy już losowania przez Arduino, musimy dokonać pewnych modyfikacji programu po odczytaniu wciśnięcia przycisku zaznaczenia.
Do zmiennej stan musimy wpisać wartość zgodną z aktualnie wybranym graczem:
Linia 1. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. gracz znak równości 0 średnik.
Linia 3. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 1 średnik.
Linia 4. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 5. gracz znak równości 1 średnik.
Linia 6. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 2 średnik.
Linia 7. zamknij nawias klamrowy.
Linia 8. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
if (gracz) {
gracz = 0;
stan[pozycja] = 1;
} else {
gracz = 1;
stan[pozycja] = 2;
}
wyswietl();
Widoczna jest również zmiana gracza poprzez zmianę wartości zmiennej gracz.
Pozostaje wprowadzić modyfikację do funkcji koniec, tak aby przy sprawdzeniu stanu dodała ona odpowiednio wyniki wygranemu graczowi.
Linia 1. if otwórz nawias okrągły test ampersant ampersant symbol znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. wyniki otwórz nawias kwadratowy 0 zamknij nawias kwadratowy plus plus średnik.
Linia 3. zamknij nawias klamrowy else if otwórz nawias okrągły test ampersant ampersant symbol znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. wyniki otwórz nawias kwadratowy 1 zamknij nawias kwadratowy plus plus średnik.
Linia 5. zamknij nawias klamrowy.
if (test && symbol == 1) {
wyniki[0]++;
} else if (test && symbol == 2) {
wyniki[1]++;
}
Największe zmiany musimy wprowadzić w funkcji wyświetl(). Dodaliśmy nowy multipleksowany element, ale niepotrzebne jest wprowadzenie następnych iteracji opóźniających działanie programu. Dlatego obsługa odbywa się równocześnie z wierszem 2 i 3 matrycy LED.
W funkcji switch() włączamy i gasimy odpowiednio wiersze tabeli wyników. Załączana jest też od razu odpowiednia kolumna w zależności od wybranego gracza.
Linia 1. switch otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. case 0 dwukropek.
Linia 3. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły 5 przecinek LOW zamknij nawias okrągły średnik.
Linia 6. digitalWrite otwórz nawias okrągły A5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 7. digitalWrite otwórz nawias okrągły A4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 8. break średnik.
Linia 9. case 1 dwukropek.
Linia 10. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 11. digitalWrite otwórz nawias okrągły 4 przecinek LOW zamknij nawias okrągły średnik.
Linia 12. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 13. digitalWrite otwórz nawias okrągły A5 przecinek LOW zamknij nawias okrągły średnik.
Linia 14. digitalWrite otwórz nawias okrągły A4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 15. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. digitalWrite otwórz nawias okrągły A3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 17. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 18. digitalWrite otwórz nawias okrągły A3 przecinek LOW zamknij nawias okrągły średnik.
Linia 19. zamknij nawias klamrowy.
Linia 20. break średnik.
Linia 21. case 2 dwukropek.
Linia 22. digitalWrite otwórz nawias okrągły 3 przecinek LOW zamknij nawias okrągły średnik.
Linia 23. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 24. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 25. digitalWrite otwórz nawias okrągły A5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 26. digitalWrite otwórz nawias okrągły A4 przecinek LOW zamknij nawias okrągły średnik.
Linia 27. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 28. digitalWrite otwórz nawias okrągły A3 przecinek LOW zamknij nawias okrągły średnik.
Linia 29. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 30. digitalWrite otwórz nawias okrągły A3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 31. zamknij nawias klamrowy.
Linia 32. break średnik.
Linia 33. default dwukropek.
Linia 34. break średnik.
Linia 35. zamknij nawias klamrowy.
Dla pierwszego rzędu (według numeracji jest to rząd 0) nie ustalamy stanów kolumn tablicy wyników, dlatego wybrano funkcję warunkową.
Linia 1. if otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
if (row) {
Jeśli warunek jest spełniony, następuje załączenie odpowiednich kolumn w zależności od rzeczywistego wyniku gracza. Wykorzystamy w tym celu funkcję switch().
Linia 1. switch otwórz nawias okrągły wyniki otwórz nawias kwadratowy row minus 1 zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. case 3 dwukropek.
Linia 3. digitalWrite otwórz nawias okrągły A2 przecinek HIGH zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły A1 przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 6. break średnik.
Linia 7. case 2 dwukropek.
Linia 8. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 9. digitalWrite otwórz nawias okrągły A1 przecinek HIGH zamknij nawias okrągły średnik.
Linia 10. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 11. break średnik.
Linia 12. case 1 dwukropek.
Linia 13. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 14. digitalWrite otwórz nawias okrągły A1 przecinek LOW zamknij nawias okrągły średnik.
Linia 15. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 16. break średnik.
Linia 17. case 0 dwukropek.
Linia 18. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 19. digitalWrite otwórz nawias okrągły A1 przecinek LOW zamknij nawias okrągły średnik.
Linia 20. digitalWrite otwórz nawias okrągły A0 przecinek LOW zamknij nawias okrągły średnik.
Linia 21. break średnik.
Linia 22. default dwukropek.
Linia 23. break średnik.
Linia 24. zamknij nawias klamrowy.
Linia 1. int stan otwórz nawias kwadratowy 9 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 3 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 przecinek 0 zamknij nawias klamrowy średnik prawy ukośnik prawy ukośnik 0 minus zgaszone przecinek 1 minus kolko czerwone przecinek 2 minus krzyzyk zielony przecinek 3 wybrane aktualnie pole.
Linia 2. int pozycja znak równości 0 średnik.
Linia 3. int wyniki otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 0 przecinek 0 zamknij nawias klamrowy średnik.
Linia 4. int gracz znak równości 0 średnik.
Linia 6. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. pinMode otwórz nawias okrągły 13 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 8. pinMode otwórz nawias okrągły 12 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 10. pinMode otwórz nawias okrągły 11 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 11. pinMode otwórz nawias okrągły 10 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 12. pinMode otwórz nawias okrągły 9 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 13. pinMode otwórz nawias okrągły 8 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 14. pinMode otwórz nawias okrągły 7 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 15. pinMode otwórz nawias okrągły 6 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 16. pinMode otwórz nawias okrągły 5 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 17. pinMode otwórz nawias okrągły 4 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 18. pinMode otwórz nawias okrągły 3 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 20. pinMode otwórz nawias okrągły A0 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 21. pinMode otwórz nawias okrągły A1 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 22. pinMode otwórz nawias okrągły A2 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 23. pinMode otwórz nawias okrągły A3 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 24. pinMode otwórz nawias okrągły A4 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 25. pinMode otwórz nawias okrągły A5 przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 26. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 27. zamknij nawias klamrowy.
Linia 29. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 30. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik poruszanie się po planszy.
Linia 31. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 32. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 33. zamknij nawias klamrowy.
Linia 34. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 13 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 35. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 36. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 37. nowaPozycja znak równości 0 średnik.
Linia 38. zamknij nawias klamrowy.
Linia 39. int przesuwanie znak równości 1 średnik.
Linia 40. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 41. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 0 średnik.
Linia 43. pozycja znak równości nowaPozycja średnik.
Linia 44. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 45. przesuwanie znak równości 0 średnik.
Linia 46. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 47. nowaPozycja plus plus średnik.
Linia 48. przesuwanie plus plus średnik.
Linia 49. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 50. nowaPozycja znak równości 0 średnik.
Linia 51. zamknij nawias klamrowy.
Linia 52. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 53. przesuwanie znak równości 0 średnik.
Linia 54. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 55. zamknij nawias klamrowy.
Linia 56. zamknij nawias klamrowy.
Linia 57. zamknij nawias klamrowy.
Linia 58. zamknij nawias klamrowy.
Linia 59. zamknij nawias klamrowy.
Linia 61. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 62. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 63. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 64. zamknij nawias klamrowy.
Linia 65. if otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik zaznaczanie wybranego pola.
Linia 66. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 67. gracz znak równości 0 średnik.
Linia 68. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 1 średnik.
Linia 69. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 70. gracz znak równości 1 średnik.
Linia 71. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 2 średnik.
Linia 72. zamknij nawias klamrowy.
Linia 73. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 74. if otwórz nawias okrągły wynik otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 75. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 76. int nowaPozycja znak równości pozycja plus 1 średnik.
Linia 77. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 78. nowaPozycja znak równości 0 średnik.
Linia 79. zamknij nawias klamrowy.
Linia 80. int przesuwanie znak równości 1 średnik.
Linia 81. while otwórz nawias okrągły przesuwanie zamknij nawias okrągły otwórz nawias klamrowy.
Linia 82. if otwórz nawias okrągły stan otwórz nawias kwadratowy nowaPozycja zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 83. pozycja znak równości nowaPozycja średnik.
Linia 84. stan otwórz nawias kwadratowy pozycja zamknij nawias kwadratowy znak równości 3 średnik.
Linia 85. przesuwanie znak równości 0 średnik.
Linia 86. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 87. nowaPozycja plus plus średnik.
Linia 88. przesuwanie plus plus średnik.
Linia 89. if otwórz nawias okrągły nowaPozycja zamknij nawias ostrokątny 8 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 90. nowaPozycja znak równości 0 średnik.
Linia 91. zamknij nawias klamrowy.
Linia 92. if otwórz nawias okrągły przesuwanie zamknij nawias ostrokątny 10 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 93. przesuwanie znak równości 0 średnik.
Linia 94. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 95. zamknij nawias klamrowy.
Linia 96. zamknij nawias klamrowy.
Linia 97. zamknij nawias klamrowy.
Linia 99. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 100. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 101. zamknij nawias klamrowy.
Linia 102. while otwórz nawias okrągły wykrzyknik digitalRead otwórz nawias okrągły 12 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 103. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 104. zamknij nawias klamrowy.
Linia 105. zamknij nawias klamrowy.
Linia 106. zamknij nawias klamrowy.
Linia 107. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 108. zamknij nawias klamrowy.
Linia 110. int wynik otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 111. if otwórz nawias okrągły koniec otwórz nawias okrągły 1 zamknij nawias okrągły kreska pionowa kreska pionowa koniec otwórz nawias okrągły 2 zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik sprawdzenie końca gry i efekt końcowy.
Linia 112. efektKoncowy otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 113. if otwórz nawias okrągły wyniki otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias ostrokątny 3 kreska pionowa kreska pionowa wyniki otwórz nawias kwadratowy 1 zamknij nawias kwadratowy zamknij nawias ostrokątny 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 114. wyniki otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości 0 średnik.
Linia 115. wyniki otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości 0 średnik.
Linia 116. zamknij nawias klamrowy.
Linia 117. return 0 średnik prawy ukośnik prawy ukośnik jeśli koniec gry.
Linia 118. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 119. return 1 średnik prawy ukośnik prawy ukośnik jesli gra dalej.
Linia 120. zamknij nawias klamrowy.
Linia 121. zamknij nawias klamrowy.
Linia 123. int efektKoncowy otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 124. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 125. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 1 średnik.
Linia 126. zamknij nawias klamrowy.
Linia 128. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 129. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 130. zamknij nawias klamrowy.
Linia 131. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 132. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 2 średnik.
Linia 133. zamknij nawias klamrowy.
Linia 134. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 135. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 136. zamknij nawias klamrowy.
Linia 137. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 9 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 138. stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 139. zamknij nawias klamrowy.
Linia 140. pozycja znak równości 0 średnik.
Linia 141. stan otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości 3 średnik.
Linia 142. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny 20 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 143. wyswietl otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 144. zamknij nawias klamrowy.
Linia 145. zamknij nawias klamrowy.
Linia 147. int koniec otwórz nawias okrągły int symbol zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik funkcja sprawdzająca czy osiągnięto koniec gry dla danego gracza.
Linia 148. int test znak równości 0 średnik.
Linia 149. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości 6 średnik i plus znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 150. if otwórz nawias okrągły stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 1 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 2 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 151. test znak równości 1 średnik.
Linia 152. zamknij nawias klamrowy.
Linia 153. zamknij nawias klamrowy.
Linia 154. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości 2 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 155. if otwórz nawias okrągły stan otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 3 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy i plus 6 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 156. test znak równości 1 średnik.
Linia 157. zamknij nawias klamrowy.
Linia 158. zamknij nawias klamrowy.
Linia 159. if otwórz nawias okrągły stan otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 8 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 160. test znak równości 1 średnik.
Linia 161. zamknij nawias klamrowy.
Linia 162. if otwórz nawias okrągły stan otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości znak równości symbol ampersant ampersant stan otwórz nawias kwadratowy 6 zamknij nawias kwadratowy znak równości znak równości symbol zamknij nawias okrągły otwórz nawias klamrowy.
Linia 163. test znak równości 1 średnik.
Linia 164. zamknij nawias klamrowy.
Linia 165. if otwórz nawias okrągły test ampersant ampersant symbol znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 166. wyniki otwórz nawias kwadratowy 0 zamknij nawias kwadratowy plus plus średnik.
Linia 167. zamknij nawias klamrowy else if otwórz nawias okrągły test ampersant ampersant symbol znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 168. wyniki otwórz nawias kwadratowy 1 zamknij nawias kwadratowy plus plus średnik.
Linia 169. zamknij nawias klamrowy.
Linia 170. return test średnik.
Linia 171. zamknij nawias klamrowy.
Linia 173. int wyswietl otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik funkcja wyswietlajaca wynik.
Linia 174. for otwórz nawias okrągły int row znak równości 0 średnik row otwórz nawias ostrokątny 3 średnik row plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 175. switch otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
Linia 176. case 0 dwukropek.
Linia 177. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 178. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 179. digitalWrite otwórz nawias okrągły 5 przecinek LOW zamknij nawias okrągły średnik.
Linia 180. digitalWrite otwórz nawias okrągły A5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 181. digitalWrite otwórz nawias okrągły A4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 182. break średnik.
Linia 183. case 1 dwukropek.
Linia 184. digitalWrite otwórz nawias okrągły 3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 185. digitalWrite otwórz nawias okrągły 4 przecinek LOW zamknij nawias okrągły średnik.
Linia 186. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 187. digitalWrite otwórz nawias okrągły A5 przecinek LOW zamknij nawias okrągły średnik.
Linia 188. digitalWrite otwórz nawias okrągły A4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 189. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 190. digitalWrite otwórz nawias okrągły A3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 191. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 192. digitalWrite otwórz nawias okrągły A3 przecinek LOW zamknij nawias okrągły średnik.
Linia 193. zamknij nawias klamrowy.
Linia 194. break średnik.
Linia 195. case 2 dwukropek.
Linia 196. digitalWrite otwórz nawias okrągły 3 przecinek LOW zamknij nawias okrągły średnik.
Linia 197. digitalWrite otwórz nawias okrągły 4 przecinek HIGH zamknij nawias okrągły średnik.
Linia 198. digitalWrite otwórz nawias okrągły 5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 199. digitalWrite otwórz nawias okrągły A5 przecinek HIGH zamknij nawias okrągły średnik.
Linia 200. digitalWrite otwórz nawias okrągły A4 przecinek LOW zamknij nawias okrągły średnik.
Linia 201. if otwórz nawias okrągły gracz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 202. digitalWrite otwórz nawias okrągły A3 przecinek LOW zamknij nawias okrągły średnik.
Linia 203. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 204. digitalWrite otwórz nawias okrągły A3 przecinek HIGH zamknij nawias okrągły średnik.
Linia 205. zamknij nawias klamrowy.
Linia 206. break średnik.
Linia 207. default dwukropek.
Linia 208. break średnik.
Linia 209. zamknij nawias klamrowy.
Linia 210. if otwórz nawias okrągły row zamknij nawias okrągły otwórz nawias klamrowy.
Linia 211. switch otwórz nawias okrągły wyniki otwórz nawias kwadratowy row minus 1 zamknij nawias kwadratowy zamknij nawias okrągły otwórz nawias klamrowy.
Linia 212. case 3 dwukropek.
Linia 213. digitalWrite otwórz nawias okrągły A2 przecinek HIGH zamknij nawias okrągły średnik.
Linia 214. digitalWrite otwórz nawias okrągły A1 przecinek HIGH zamknij nawias okrągły średnik.
Linia 215. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 216. break średnik.
Linia 217. case 2 dwukropek.
Linia 218. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 219. digitalWrite otwórz nawias okrągły A1 przecinek HIGH zamknij nawias okrągły średnik.
Linia 220. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 221. break średnik.
Linia 222. case 1 dwukropek.
Linia 223. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 224. digitalWrite otwórz nawias okrągły A1 przecinek LOW zamknij nawias okrągły średnik.
Linia 225. digitalWrite otwórz nawias okrągły A0 przecinek HIGH zamknij nawias okrągły średnik.
Linia 226. break średnik.
Linia 227. case 0 dwukropek.
Linia 228. digitalWrite otwórz nawias okrągły A2 przecinek LOW zamknij nawias okrągły średnik.
Linia 229. digitalWrite otwórz nawias okrągły A1 przecinek LOW zamknij nawias okrągły średnik.
Linia 230. digitalWrite otwórz nawias okrągły A0 przecinek LOW zamknij nawias okrągły średnik.
Linia 231. break średnik.
Linia 232. default dwukropek.
Linia 233. break średnik.
Linia 234. zamknij nawias klamrowy.
Linia 235. zamknij nawias klamrowy.
Linia 236. for otwórz nawias okrągły int col znak równości 0 średnik col otwórz nawias ostrokątny 3 średnik col plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 237. if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 238. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 239. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 240. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 241. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 242. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 243. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 244. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 0 zamknij nawias okrągły średnik.
Linia 245. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 246. zamknij nawias klamrowy else if otwórz nawias okrągły stan otwórz nawias kwadratowy col plus row asterysk 3 zamknij nawias kwadratowy znak równości znak równości 3 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 247. digitalWrite otwórz nawias okrągły 6 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 248. digitalWrite otwórz nawias okrągły 7 plus col asterysk 2 przecinek 1 zamknij nawias okrągły średnik.
Linia 249. zamknij nawias klamrowy.
Linia 250. zamknij nawias klamrowy.
Linia 251. delay otwórz nawias okrągły 5 zamknij nawias okrągły średnik.
Linia 252. zamknij nawias klamrowy.
Linia 253. zamknij nawias klamrowy.
int stan[9] = {3, 0, 0, 0, 0, 0, 0, 0, 0}; // 0 - zgaszone, 1 - kolko czerwone, 2 - krzyzyk zielony, 3 wybrane aktualnie pole
int pozycja = 0;
int wyniki[2] = {0, 0};
int gracz = 0;
void setup() {
pinMode(13, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(A5, OUTPUT);
wyswietl();
}
void loop() {
if (!digitalRead(13)) { // poruszanie się po planszy
for (int i = 0; i < 10; i++) {
wyswietl();
}
if (!digitalRead(13)) {
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
stan[pozycja] = 0;
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
}
}
if (!digitalRead(12)) {
for (int i = 0; i < 10; i++) {
wyswietl();
}
if (!digitalRead(12)) { // zaznaczanie wybranego pola
if (gracz) {
gracz = 0;
stan[pozycja] = 1;
} else {
gracz = 1;
stan[pozycja] = 2;
}
wyswietl();
if (wynik()) {
wyswietl();
int nowaPozycja = pozycja + 1;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
int przesuwanie = 1;
while (przesuwanie) {
if (stan[nowaPozycja] == 0) {
pozycja = nowaPozycja;
stan[pozycja] = 3;
przesuwanie = 0;
} else {
nowaPozycja ++;
przesuwanie ++;
if (nowaPozycja > 8) {
nowaPozycja = 0;
}
if (przesuwanie > 10) {
przesuwanie = 0;
efektKoncowy();
}
}
}
} else {
efektKoncowy();
}
while (!digitalRead(12)) {
wyswietl();
}
}
}
wyswietl();
}
int wynik() {
if (koniec(1) || koniec(2)) { // sprawdzenie końca gry i efekt końcowy
efektKoncowy();
if (wyniki[0] > 3 || wyniki[1] > 3) {
wyniki[0] = 0;
wyniki[1] = 0;
}
return 0; // jeśli koniec gry
} else {
return 1; // jesli gra dalej
}
}
int efektKoncowy() {
for (int i = 0; i < 9; i++) {
stan[i] = 1;
}
for (int i = 0; i < 20; i++) {
wyswietl();
}
for (int i = 0; i < 9; i++) {
stan[i] = 2;
}
for (int i = 0; i < 20; i++) {
wyswietl();
}
for (int i = 0; i < 9; i++) {
stan[i] = 0;
}
pozycja = 0;
stan[0] = 3;
for (int i = 0; i < 20; i++) {
wyswietl();
}
}
int koniec(int symbol) { // funkcja sprawdzająca czy osiągnięto koniec gry dla danego gracza
int test = 0;
for (int i = 0; i <= 6; i += 3) {
if (stan[i] == symbol && stan[i + 1] == symbol && stan[i + 2] == symbol) {
test = 1;
}
}
for (int i = 0; i <= 2; i ++) {
if (stan[i] == symbol && stan[i + 3] == symbol && stan[i + 6] == symbol) {
test = 1;
}
}
if (stan[0] == symbol && stan[4] == symbol && stan[8] == symbol) {
test = 1;
}
if (stan[2] == symbol && stan[4] == symbol && stan[6] == symbol) {
test = 1;
}
if (test && symbol == 1) {
wyniki[0]++;
} else if (test && symbol == 2) {
wyniki[1]++;
}
return test;
}
int wyswietl() { // funkcja wyswietlajaca wynik
for (int row = 0; row < 3; row++) {
switch (row) {
case 0:
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(A5, HIGH);
digitalWrite(A4, HIGH);
break;
case 1:
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(A5, LOW);
digitalWrite(A4, HIGH);
if (gracz) {
digitalWrite(A3, HIGH);
} else {
digitalWrite(A3, LOW);
}
break;
case 2:
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(A5, HIGH);
digitalWrite(A4, LOW);
if (gracz) {
digitalWrite(A3, LOW);
} else {
digitalWrite(A3, HIGH);
}
break;
default:
break;
}
if (row) {
switch (wyniki[row - 1]) {
case 3:
digitalWrite(A2, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A0, HIGH);
break;
case 2:
digitalWrite(A2, LOW);
digitalWrite(A1, HIGH);
digitalWrite(A0, HIGH);
break;
case 1:
digitalWrite(A2, LOW);
digitalWrite(A1, LOW);
digitalWrite(A0, HIGH);
break;
case 0:
digitalWrite(A2, LOW);
digitalWrite(A1, LOW);
digitalWrite(A0, LOW);
break;
default:
break;
}
}
for (int col = 0 ; col < 3; col++) {
if (stan[col + row * 3] == 0) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 1) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 0);
} else if (stan[col + row * 3] == 2) {
digitalWrite(6 + col * 2, 0);
digitalWrite(7 + col * 2, 1);
} else if (stan[col + row * 3] == 3) {
digitalWrite(6 + col * 2, 1);
digitalWrite(7 + col * 2, 1);
}
}
delay(5);
}
}
Slajd czterdziesty piąty
Zapoznaj się z filmem przedstawiającym działanie programu.
R3Ocnn0EWht8D1
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduiono do gry w kółko i krzyżyk.
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduiono do gry w kółko i krzyżyk.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduiono do gry w kółko i krzyżyk.
Slajd czterdziesty szósty
Przejdźmy teraz do lutowania układu. Co nam będzie potrzebne:
płytka PCB,
10 x rezystor o wartości 220 Ωomega,
4 x dioda LED 3 mm, kolor niebieski,
4 x dioda LED 3 mm, kolor czerwony,
9 x dioda RB (czerwono‑niebieska) ze wspólną katodą,
2 x przycisk tact switch,
2 x goldpin męski 1x8,
goldpin męski 1x6,
goldpin męski 1x10,
goldpin żeński 2x3.
Slajd czterdziesty siódmy
Grafika przedstawia poglądową płytkę PCB. Na płytce widoczne są oznaczenia i perforacja.
Podgląd płytki PCB z programu do projektowania obwodów drukowanych KiCad.
Slajd czterdziesty ósmy
Przedstawiono płytkę PCB wykonaną domowym sposobem. Znajdują się na niej oznaczenia i widoczna jest perforacja płytki. Obok płytki leża diody białe, czerwone i niebieski. Widoczne są przyciski, rezystory, goldpiny męskie i żeńskie.
Przedstawiona płytka PCB została wykonana całkowicie w warunkach domowych.
Slajd czterdziesty dziewiąty
Widoczna jest płytka PCB wykonana domowym sposobem. Po przeciwległych krawędziach płytki widoczne są wlutowane goldpiny męski. Pomiędzy nimi z boku widoczny jest wlutowany goldpin żeński.
Z racji tego, że płytka została przygotowana jako shield (nakładka) na Arduino Uno i jest to płytka jednostronna, w pierwszej kolejności wlutujemy złącze goldpin męskie oraz gniazdo goldpin żeńskie.
Slajd pięćdziesiąty
Widoczna jest odwrotna strona płytki PCB i wlutowane rezystory.
W następnej kolejności wlutujemy rezystory.
Slajd pięćdziesiąty pierwszy
Widoczna jest odwrotna strona płytki PCB i wlutowane rezyzstory. Z prawej strony płytki między rezystory wlutowano diody led. W pierwszej kolumnie diody led czerwone w drugiej diody led niebieskie.
Teraz wlutujemy diody LED 3 milmetry.
Slajd pięćdziesiąty drugi
Widoczna jest odwrotna strona płytki PCB i wlutowane rezyzystory. Z prawej strony płytki między rezystory wlutowano diody led. W pierwszej kolumnie diody led czerwone w drugiej diody led niebieskie. Po środku w układzie trzy na trzy widoczne są wlutowane diody led białe.
Kolejnymi elementami jakie wlutujemy będą diody LED RB ze wspólną katodą.
Slajd pięćdziesiąty trzeci
Widoczna jest odwrotna strona płytki PCB i wlutowane rezyzystory. Z prawej strony płytki między rezystory wlutowano diody led. W pierwszej kolumnie diody led czerwone w drugiej diody led niebieskie. Po środku w układzie trzy na trzy widoczne są wlutowane diody led białe. Poniżej widoczne są dwa wlutowane przyciski.
Ostatnimi elementami jakie wlutujemy, będą przyciski tact switch.
Slajd pięćdziesiąty czwarty
Widoczna jest odwrotna strona płytki PCB i wlutowane rezyzystory. Z prawej strony płytki między rezystory wlutowano diody led. W pierwszej kolumnie diody led czerwone w drugiej diody led niebieskie. Po środku w układzie trzy na trzy widoczne są wlutowane diody led białe. Poniżej widoczne są dwa wlutowane przyciski. Druga strona płytki jest nałożona na układ Arduino Uno.
Załóż nasz shield do Arduino Uno, wgraj kod i przetestuj działanie gry.
Slajd pięćdziesiąty piąty
R17mCYYytZvy61
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduino do gry w kółko i krzyżyk w wersji do zlutowania.
Film nawiązujący do treści materiału dotyczącej wykorzystania Arduino do gry w kółko i krzyżyk w wersji do zlutowania.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.