Advertisement
MightyPork

arduino space invader led strip R/G

Nov 30th, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. #define DI1 2
  2. #define DI2 3
  3. #define DSH 4
  4. #define DST 5
  5.  
  6. void setup() {
  7.   pinMode(2, OUTPUT);
  8.   pinMode(3, OUTPUT);
  9.   pinMode(4, OUTPUT);
  10.   pinMode(5, OUTPUT);
  11. }
  12.  
  13. #define DELAY_CLK 1
  14.  
  15. byte _leds1 = 0;
  16. byte _leds2 = 0;
  17.  
  18. void sendLeds() {
  19.   for(byte i=0; i<8; i++){
  20.     digitalWrite(DI1, (_leds1 >> i) & 1);
  21.     digitalWrite(DI2, (_leds2 >> i) & 1);
  22.     digitalWrite(DSH, HIGH);    
  23.     delayMicroseconds(DELAY_CLK);
  24.     digitalWrite(DSH, LOW);  
  25.     delayMicroseconds(DELAY_CLK);
  26.   }
  27.   digitalWrite(DST, HIGH);    
  28.   delayMicroseconds(DELAY_CLK);
  29.   digitalWrite(DST, LOW);  
  30.   delayMicroseconds(DELAY_CLK);
  31. }
  32.  
  33. #define NONE 0
  34. #define RED 1
  35. #define GREEN 2
  36. #define ORANGE 3
  37.  
  38. #define N 0
  39. #define R 1
  40. #define G 2
  41. #define O 3
  42.  
  43. void clearLeds() {
  44.   _leds1=0; _leds2 = 0;
  45. }
  46.  
  47. void setLed(byte index, byte color) {
  48.   byte* _leds;
  49.   if(index<4) {
  50.     _leds = &_leds1;
  51.   }else{
  52.     _leds = &_leds2;
  53.     index -= 4;
  54.   }
  55.  
  56.   byte real_index = (3-index)*2;
  57.  
  58.   *_leds = *_leds & ~(0b11 << real_index) | (color << real_index);
  59. }
  60.  
  61. byte data[11][8] = {
  62.   {R,N,R,R,R,R,N,N},
  63.   {N,R,R,R,N,N,N,N},
  64.   {N,N,R,R,R,N,N,N},
  65.   {N,R,R,O,R,R,N,R},
  66.   {R,N,R,R,R,R,R,N},
  67.   {N,N,R,R,R,R,R,N},
  68.   {R,N,R,R,R,R,R,N},
  69.   {N,R,R,O,R,R,N,R},
  70.   {N,N,R,R,R,N,N,N},
  71.   {N,R,R,R,N,N,N,N},
  72.   {R,N,R,R,R,R,N,N}
  73. };
  74.  
  75. void loop() {  
  76.   for(byte i=0; i<11; i++) {
  77.     for(byte j=0; j<8; j++) {
  78.       setLed(j, data[i][j]);
  79.     }
  80.     sendLeds();
  81.     delay(5);
  82.   }
  83.   clearLeds();
  84.   sendLeds();
  85.   delay(20);
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement