Autor: SAVU Ioana-Rusalda
Putem grupa implementarea în trei tipuri de conexiuni:
Matricea a fost realizată prin lipirea a 64 de leduri albastre pe 8 linii și 8 coloane.
La capetele liniilor/coloanelor se găsesc barete de pini pentru conectarea firelor.
Pentru a avea mai mulți pini de ieșire decât cei oferiți de plăcuță am folosit 2 Shift Register. Unul controlează coloanele, celălalt liniile.
Shift Register-ele folosesc aceleași semnale pentru clock, latch și data. Astfel pinii acestor au fost conectați. Pentru conexiunea cu arduino:
Șarpele este reprezentat prin led-urile aprinse la un anumit momemnt de timp. Se începe de la un șarpe de lungime 2 (2 led-uri aprinse). Se va mai aprinde un led (ales random care va reprezenta punctele obținute de șarpe). În momentul în care șarpele ajunge la punct, își va mări lungimea, va crește numărul de led-uri consecutive aprinse.
Structuri de date folosite:
Controlul șarpelui se realizează prin butoane. De fiecare dată cand un buton este apăsat se tratează întreruperea setându-se noua direcție de mers. Direcția este salvată cu ajutorul unei variabile de tip char (U - UP, D - DOWN, L - LEFT, R - RIGHT). În funcție de direcția de deplasare se actualizează poziția fiecărui led, modificând coordonatele X și Y (vezi funcția moveSnake()). De fiecare dată când se deplasează șarpele, ultimul led (coada este marcat stins) iar un nou bec este marcat aprins, transformându-se în noul cap. În loop se verifică vectorul de led-uri și se aprind cele marcate cu ajutorul configurațiilor row și col, folosind funcția shiftOut(dataPin, clockPin, bitOrder, value) https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout/