Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. // classe matrice per illuminare solo un led quello in posizione dal joystick
  2. class Matrice
  3. { byte dinPin;
  4. byte csPin;
  5. byte clkPin;
  6. byte rigoprecedente;
  7. byte colonnaprecedente;
  8. public:
  9. Matrice (byte din,byte cs,byte clk)
  10. { dinPin=din;
  11. csPin=cs;
  12. clkPin=clk;
  13. pinMode(dinPin,OUTPUT);
  14. pinMode(csPin,OUTPUT);
  15. pinMode(clkPin,OUTPUT);
  16. rigoprecedente=0;colonnaprecedente=0;
  17. }
  18. void scrivi(byte indirizzo,byte dato)
  19. { digitalWrite(csPin,LOW);
  20. shiftOut(dinPin,clkPin,MSBFIRST,indirizzo);
  21. shiftOut(dinPin,clkPin,MSBFIRST,dato);
  22. digitalWrite(csPin,HIGH);
  23. }
  24. void inizializza()
  25. { scrivi(0x09,0x00);
  26. scrivi(0x0A,0x07);
  27. scrivi(0x0B,0x07);
  28. scrivi(0x0C,0x01);
  29. scrivi(0x0F,0x00);
  30. for (byte rigo=1;rigo<=8;rigo++) scrivi(rigo,0);
  31. }
  32. // trasforma i valori letti dal joystick in coordinate x,y ( riga,colonna)
  33. void tensioni(int Vrx,int Vry)
  34. { byte riga,colonna;
  35. if (Vrx<1023) riga=8;
  36. if (Vrx<896) riga=7;
  37. if (Vrx<768) riga=6;
  38. if (Vrx<640) riga=5;
  39. if (Vrx<512) riga=4;
  40. if (Vrx<384) riga=3;
  41. if (Vrx<256) riga=2;
  42. if (Vrx<128) riga=1;
  43.  
  44. if (Vry<1023) colonna=7;
  45. if (Vry<896) colonna=6;
  46. if (Vry<768) colonna=5;
  47. if (Vry<640) colonna=4;
  48. if (Vry<512) colonna=3;
  49. if (Vry<384) colonna=2;
  50. if(Vry<256) colonna=1;
  51. if (Vry<128) colonna=0;
  52. aggiorna(riga,colonna);
  53. }
  54.  
  55. void aggiorna(byte riga,byte colonna)
  56. { if ( rigoprecedente!=riga || colonnaprecedente!=colonna )
  57. { scrivi(rigoprecedente,0);
  58. scrivi(riga,1<<colonna);
  59. rigoprecedente=riga;
  60. colonnaprecedente=colonna;
  61. // Serial.print("rigaprecedente= ");Serial.println(rigoprecedente);
  62. // Serial.print("riga= ");Serial.println(riga);
  63. }
  64. }
  65. };
  66.  
  67. Matrice myMatrice(10,11,12);
  68.  
  69. #define x A0
  70. #define y A1
  71. int Vrx;
  72. int Vry;
  73. byte riga;
  74. byte colonna;
  75.  
  76. void setup()
  77. { myMatrice.inizializza();
  78. Serial.begin(250000);
  79. }
  80. void loop() {
  81. Vrx = analogRead(x);
  82. Vry = analogRead(y);
  83. myMatrice.tensioni(Vrx,Vry);
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement