#include "LedControl.h" LedControl screen = LedControl ( 2, 3, 4, 1 ); //DIN, CLK, CS, pocet matic int spinacS1pin = 5, spinacS2pin = 6; class Tecka { public: Tecka (int x, int y, int smer); void vpravo(); void dolu(); void vlevo(); void nahoru(); int smer;//1 - vpravo, 2 - dolu, 3 - vlevo, 4 - nahoru private: int x,y;//sloupec, radek }; Tecka::Tecka(int x, int y, int smer) { this->x = x; this->y = y; this->smer = smer; screen.setLed (0,y,x,1); } void Tecka::vpravo () { screen.setLed (0,y,x++,0); if ( x > 7 ) x = 0; screen.setLed (0,y,x,1); } void Tecka::dolu () { screen.setLed (0,y++,x,0); if ( y > 7 ) y = 0; screen.setLed (0,y,x,1); } void Tecka::vlevo () { screen.setLed (0,y,x--,0); if ( x < 0 ) x = 7; screen.setLed (0,y,x,1); } void Tecka::nahoru () { screen.setLed (0,y--,x,0); if ( y < 0 ) y = 7; screen.setLed (0,y,x,1); } Tecka mojeTecka (1,1,1); void setup() { screen.shutdown (0, false ); screen.setIntensity(0,8); screen.clearDisplay(0); } void loop () { //Switch proveri hodnotu promenne a podle jednotlivych pripadu (case) vola funkce switch (mojeTecka.smer) { case 1: mojeTecka.vpravo (); break; //Break musi byt vzdy na konci kodu pro kazdy case case 2: mojeTecka.dolu (); break; case 3: mojeTecka.vlevo (); break; case 4: mojeTecka.nahoru (); break; } delay (500); //stiskem spinacu menime hodnotu promenne smer a tim urcujeme, kam se bod bude pohybovat if (digitalRead (spinacS1pin)) mojeTecka.smer--; if (digitalRead (spinacS2pin)) mojeTecka.smer++; //smer musime udrzet v mezich 1 az 4 if ( mojeTecka.smer < 1 ) mojeTecka.smer = 4; if ( mojeTecka.smer > 4 ) mojeTecka.smer = 1; }