// hobbyprojects.com // APA102_RGB_LED_Simple_POV_Display2.ino int sensor_pin = A0; int apa102Clock = 3; int apa102Data = 4; int input_state; int msg_bytes; byte a; const PROGMEM unsigned char msg_RGB[]={ // char 'R' 1st Column // Start Frame 0x00,0x00,0x00,0x00, // LED frames 0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'R' 2nd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'R' 3rd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'R' 4th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'R' 5th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0xFF,0xE3,0x00,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== //================================== // char 'G' 1st Column // Start Frame 0x00,0x00,0x00,0x00, // LED frame 0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'G' 2nd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'G' 3rd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'G' 4th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'G' 5th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0xFF,0x00,0xE3,0x00,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== //================================== // char 'B' 1st Column // Start Frame 0x00,0x00,0x00,0x00, // LED frame 0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'B' 2nd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'B' 3rd Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'B' 4th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF, //===================== // char 'B' 5th Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0xFF,0x00,0x00,0xE3,0x00,0x00,0x00, // End frame 0xFF, //====== // blank Column // Start Frame 0x00,0x00,0x00,0x00, //LED frames 0xE0,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0xE0,0xFF,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0xE0,0xFF,0x00,0x00,0xE0,0x00,0x00,0x00, // End frame 0xFF}; //===================== void setup() { pinMode(sensor_pin, INPUT_PULLUP); pinMode(apa102Data,OUTPUT); pinMode(apa102Clock,OUTPUT); msg_bytes = 1122; } //--------------------------- void loop() { input_state = digitalRead(sensor_pin); while (input_state != 0) { input_state = digitalRead(sensor_pin); } for(int n = 0; n < msg_bytes; n++) { a = pgm_read_byte(&(msg_RGB)[n]); spiWrite(a); } input_state = digitalRead(sensor_pin); while (input_state == 0) { input_state = digitalRead(sensor_pin); } } //=========================================================================== void spiWrite(uint8_t c) { uint8_t i; for (int i=0; i<8 ;i++) { if (!(c&0x80)) { digitalWrite(apa102Data, LOW); } else { digitalWrite(apa102Data, HIGH); } digitalWrite(apa102Clock, HIGH); c <<= 1; digitalWrite(apa102Clock, LOW); } digitalWrite(apa102Data, HIGH); }