Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // classe matrice per illuminare solo un led quello in posizione dal joystick
- class Matrice
- { byte dinPin;
- byte csPin;
- byte clkPin;
- byte rigoprecedente;
- byte colonnaprecedente;
- public:
- Matrice (byte din,byte cs,byte clk)
- { dinPin=din;
- csPin=cs;
- clkPin=clk;
- pinMode(dinPin,OUTPUT);
- pinMode(csPin,OUTPUT);
- pinMode(clkPin,OUTPUT);
- rigoprecedente=0;colonnaprecedente=0;
- }
- void scrivi(byte indirizzo,byte dato)
- { digitalWrite(csPin,LOW);
- shiftOut(dinPin,clkPin,MSBFIRST,indirizzo);
- shiftOut(dinPin,clkPin,MSBFIRST,dato);
- digitalWrite(csPin,HIGH);
- }
- void inizializza()
- { scrivi(0x09,0x00);
- scrivi(0x0A,0x07);
- scrivi(0x0B,0x07);
- scrivi(0x0C,0x01);
- scrivi(0x0F,0x00);
- for (byte rigo=1;rigo<=8;rigo++) scrivi(rigo,0);
- }
- // trasforma i valori letti dal joystick in coordinate x,y ( riga,colonna)
- void tensioni(int Vrx,int Vry)
- { byte riga,colonna;
- if (Vrx<1023) riga=8;
- if (Vrx<896) riga=7;
- if (Vrx<768) riga=6;
- if (Vrx<640) riga=5;
- if (Vrx<512) riga=4;
- if (Vrx<384) riga=3;
- if (Vrx<256) riga=2;
- if (Vrx<128) riga=1;
- if (Vry<1023) colonna=7;
- if (Vry<896) colonna=6;
- if (Vry<768) colonna=5;
- if (Vry<640) colonna=4;
- if (Vry<512) colonna=3;
- if (Vry<384) colonna=2;
- if(Vry<256) colonna=1;
- if (Vry<128) colonna=0;
- aggiorna(riga,colonna);
- }
- void aggiorna(byte riga,byte colonna)
- { if ( rigoprecedente!=riga || colonnaprecedente!=colonna )
- { scrivi(rigoprecedente,0);
- scrivi(riga,1<<colonna);
- rigoprecedente=riga;
- colonnaprecedente=colonna;
- // Serial.print("rigaprecedente= ");Serial.println(rigoprecedente);
- // Serial.print("riga= ");Serial.println(riga);
- }
- }
- };
- Matrice myMatrice(10,11,12);
- #define x A0
- #define y A1
- int Vrx;
- int Vry;
- byte riga;
- byte colonna;
- void setup()
- { myMatrice.inizializza();
- Serial.begin(250000);
- }
- void loop() {
- Vrx = analogRead(x);
- Vry = analogRead(y);
- myMatrice.tensioni(Vrx,Vry);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement