// hobbyprojects.com // RGB_Propeller_display_02_11_2019 #define RPM 1000 // Change according to your motor RPM. unsigned int i; int sensor_pin = 8; int input_state; const PROGMEM unsigned char MSG_WELCOME[]={0x80,0x97,0x9B,0x97,0x80,0x1F,0x1F,0x40,0x4A,0x4A,0x4E,0x1F,0x1F,0x20,0x2F,0x2F,0x2F,0x1F,0x1F,0x60,0x6E,0x6E,0x6E,0x1F,0x1F,0xA0,0xAE,0xAE,0xA0,0x1F,0x1F,0xC0,0xDD,0xDB,0xDD,0xC0,0x1F,0x1F,0xE0,0xEA,0xEA,0xEA}; unsigned int MSG_BYTES = 42; void setup() { DDRD = 0xFF; pinMode(sensor_pin, INPUT_PULLUP); } void loop() { input_state = digitalRead(sensor_pin); while (input_state != 0) { input_state = digitalRead(sensor_pin); } for(i = 0; i < MSG_BYTES; i++) { PORTD = pgm_read_byte(&(MSG_WELCOME)[i]); delayMicroseconds(140000/RPM); PORTD = 0b00011111, // blank delayMicroseconds(600000/RPM); } input_state = digitalRead(sensor_pin); while (input_state == 0) { input_state = digitalRead(sensor_pin); } }