Created
March 2, 2020 02:20
-
-
Save connornishijima/f66df675935f817a2c71597512661beb to your computer and use it in GitHub Desktop.
ROBOT12 BW on Arduino Uno w/ tone() function and timers! ---- (320x120 image is 1-bit BW stored in PROGMEM bytes)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
volatile bool broadcast_done = false; | |
volatile uint8_t bit_index = 0; | |
volatile uint16_t byte_index = 0; | |
volatile uint8_t sync_count = 0; | |
uint8_t pixel_bit = 0; | |
uint8_t pixel_byte = 0; | |
bool bit_changed = false; | |
const uint8_t image[4800] PROGMEM = { | |
0, 15, 143, 255, 255, 255, 255, 255, 255, 255, 0, 31, 254, 0, 63, 252, 7, 128, 0, 0, 0, 0, 0, 15, 143, 255, 255, 255, 255, 255, 255, 255, 0, 31, 254, 0, 63, 252, 7, 128, 0, 30, 7, 128, 15, 255, 0, 31, 255, 255, 128, 15, 255, 0, 31, 254, 14, 0, 0, 0, 0, 0, 0, 31, 7, 128, 15, 255, 0, 31, 255, 255, 128, 15, 255, 0, 15, 254, 15, 0, 0, 124, 3, 192, 7, 255, 128, 15, 255, 255, 192, 3, 255, 128, 7, 255, 60, 0, 0, 0, 0, 0, 0, 60, 3, 192, 7, 255, 128, 15, 255, 255, 224, 3, 255, 128, 7, 255, 28, 0, 0, 248, 1, 224, 3, 255, 192, 7, 255, 255, 240, 1, 255, 192, 3, 255, 248, 0, 0, 0, 0, 0, 0, 248, 1, 224, 1, 255, 192, 3, 255, 255, 240, 1, 255, 224, 3, 255, 248, 0, 255, 240, 1, 240, 1, 255, 224, 3, 255, 255, 248, 0, 255, 240, 1, 255, 240, 0, 255, 255, 255, 255, 255, 240, 0, 240, 0, 255, 224, 1, 255, 255, 248, 0, 255, 240, 1, 255, 240, 0, 255, 224, 3, 248, 0, 127, 240, 0, 255, 255, 252, 0, 127, 248, 0, 255, 224, 3, 255, 255, 255, 255, 255, 224, 3, 252, 0, 127, 248, 0, 255, 255, 252, 0, 127, 248, 0, 255, 224, 3, 255, 192, 7, 252, 0, 63, 248, 0, 127, 255, 254, 0, 63, 252, 0, 127, 192, 7, 255, 255, 255, 255, 255, 192, 7, 254, 0, 63, 252, 0, 127, 255, 254, 0, 63, 252, 0, 127, 192, 7, 255, 128, 15, 255, 0, 31, 254, 0, 63, 255, 255, 0, 31, 254, 0, 63, 0, 15, 255, 255, 255, 255, 255, 128, 15, 255, 0, 31, 254, 0, 63, 255, 255, 0, 15, 254, 0, 31, 128, 15, 254, 0, 31, 255, 128, 15, 255, 0, 0, 0, 15, 128, 7, 255, 0, 30, 0, 31, 255, 255, 255, 255, 255, 0, 31, 255, 128, 15, 255, 0, 0, 0, 15, 128, 7, 255, 0, 30, 0, 31, 252, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 192, 3, 255, 128, 60, 0, 127, 248, 0, 0, 0, 126, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 224, 3, 255, 192, 28, 0, 63, 248, 0, 127, 241, 224, 3, 255, 192, 0, 0, 3, 240, 1, 255, 224, 120, 0, 255, 240, 0, 0, 0, 248, 0, 127, 241, 224, 1, 255, 192, 0, 0, 1, 240, 1, 255, 224, 120, 0, 127, 240, 1, 255, 224, 240, 0, 255, 224, 0, 0, 0, 248, 0, 255, 240, 240, 1, 255, 224, 0, 0, 1, 240, 0, 255, 224, 112, 0, 255, 240, 0, 0, 0, 248, 0, 255, 240, 240, 1, 255, 224, 3, 255, 192, 56, 0, 127, 240, 0, 0, 0, 124, 0, 127, 249, 224, 3, 255, 192, 0, 0, 3, 224, 3, 255, 192, 60, 0, 127, 248, 0, 0, 0, 124, 0, 127, 249, 224, 3, 255, 192, 7, 255, 128, 30, 0, 63, 255, 255, 255, 255, 254, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 192, 7, 255, 128, 30, 0, 63, 255, 255, 255, 255, 254, 0, 63, 255, 192, 7, 255, 128, 15, 255, 0, 31, 0, 31, 255, 255, 255, 255, 255, 0, 31, 255, 0, 15, 254, 0, 31, 255, 255, 128, 15, 255, 0, 31, 0, 31, 255, 255, 255, 255, 255, 0, 15, 255, 128, 15, 255, 0, 31, 254, 0, 63, 128, 15, 255, 255, 255, 255, 255, 128, 7, 254, 0, 31, 252, 0, 63, 255, 255, 0, 31, 254, 0, 63, 128, 15, 255, 255, 255, 255, 255, 128, 7, 254, 0, 31, 252, 0, 63, 248, 0, 127, 192, 7, 255, 255, 255, 255, 255, 192, 3, 252, 0, 127, 248, 0, 255, 255, 254, 0, 63, 248, 0, 127, 192, 7, 255, 255, 255, 255, 255, 224, 3, 252, 0, 63, 248, 0, 255, 240, 1, 255, 224, 3, 255, 255, 255, 255, 255, 224, 1, 248, 0, 255, 240, 1, 255, 255, 248, 0, 127, 240, 0, 255, 224, 1, 255, 255, 255, 255, 255, 240, 1, 248, 0, 255, 240, 1, 255, 224, 3, 255, 240, 0, 0, 0, 0, 0, 0, 248, 0, 240, 1, 255, 224, 3, 255, 255, 240, 1, 255, 224, 3, 255, 248, 0, 0, 0, 0, 0, 0, 248, 0, 240, 1, 255, 224, 3, 255, 192, 7, 255, 184, 0, 0, 0, 0, 0, 0, 124, 1, 224, 3, 255, 192, 7, 255, 255, 224, 3, 255, 192, 7, 255, 188, 0, 0, 0, 0, 0, 0, 124, 1, 224, 3, 255, 192, 7, 255, 128, 15, 255, 30, 0, 0, 0, 0, 0, 0, 62, 3, 128, 7, 255, 0, 15, 255, 255, 192, 7, 255, 128, 15, 255, 30, 0, 0, 0, 0, 0, 0, 62, 3, 192, 7, 255, 128, 15, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 0, 31, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 63, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 128, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 248, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 240, 1, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 224, 3, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 192, 7, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 0, 15, 248, 0, 0, 63, 248, 0, 0, 127, 254, 0, 15, 254, 15, 255, 252, 0, 0, 15, 255, 255, 0, 0, 15, 255, 255, 240, 63, 248, 0, 3, 255, 192, 0, 31, 252, 0, 0, 0, 0, 31, 248, 0, 0, 127, 252, 0, 0, 127, 255, 0, 15, 254, 15, 255, 255, 224, 0, 15, 255, 255, 248, 0, 15, 255, 255, 240, 63, 248, 0, 3, 255, 224, 0, 31, 252, 0, 0, 0, 0, 127, 248, 0, 0, 255, 254, 0, 0, 127, 255, 128, 15, 254, 15, 255, 255, 252, 0, 15, 255, 255, 255, 0, 15, 255, 255, 240, 31, 252, 0, 7, 255, 224, 0, 63, 248, 0, 0, 0, 0, 255, 240, 0, 0, 255, 255, 0, 0, 127, 255, 192, 15, 254, 15, 255, 255, 255, 0, 15, 255, 255, 255, 192, 15, 255, 255, 240, 15, 254, 0, 15, 255, 240, 0, 127, 240, 0, 0, 0, 1, 255, 224, 0, 1, 255, 255, 0, 0, 127, 255, 224, 15, 254, 15, 255, 255, 255, 192, 15, 255, 255, 255, 224, 15, 255, 255, 240, 7, 255, 0, 31, 255, 248, 0, 127, 240, 0, 0, 0, 255, 255, 192, 0, 3, 255, 255, 128, 0, 127, 255, 240, 15, 254, 15, 252, 63, 255, 224, 15, 255, 255, 255, 240, 15, 255, 255, 240, 7, 255, 0, 31, 255, 248, 0, 255, 224, 1, 255, 255, 255, 255, 128, 0, 7, 255, 255, 192, 0, 127, 255, 248, 15, 254, 15, 252, 0, 255, 240, 15, 252, 0, 127, 248, 15, 252, 0, 0, 3, 255, 128, 63, 255, 252, 1, 255, 192, 1, 255, 255, 255, 254, 0, 0, 7, 255, 255, 224, 0, 127, 255, 252, 15, 254, 15, 252, 0, 127, 248, 15, 252, 0, 31, 248, 15, 252, 0, 0, 1, 255, 192, 127, 255, 254, 3, 255, 128, 1, 255, 255, 255, 252, 0, 0, 15, 254, 255, 224, 0, 127, 255, 254, 15, 254, 15, 252, 0, 31, 248, 15, 252, 0, 31, 248, 15, 255, 255, 224, 1, 255, 192, 127, 247, 255, 3, 255, 128, 1, 255, 255, 255, 248, 0, 0, 31, 252, 127, 240, 0, 127, 239, 255, 15, 254, 15, 252, 0, 31, 248, 15, 252, 0, 31, 248, 15, 255, 255, 224, 0, 255, 224, 255, 231, 255, 7, 255, 0, 0, 255, 255, 0, 0, 0, 0, 31, 252, 63, 248, 0, 127, 231, 255, 143, 254, 15, 252, 0, 31, 248, 15, 252, 0, 63, 248, 15, 255, 255, 224, 0, 127, 241, 255, 195, 255, 143, 254, 0, 0, 120, 0, 0, 0, 0, 0, 63, 248, 63, 248, 0, 127, 227, 255, 207, 254, 15, 252, 0, 31, 248, 15, 252, 0, 255, 248, 15, 255, 255, 224, 0, 63, 251, 255, 129, 255, 207, 254, 0, 0, 28, 0, 0, 0, 0, 0, 127, 240, 31, 252, 0, 127, 225, 255, 239, 254, 15, 252, 0, 63, 248, 15, 255, 255, 255, 240, 15, 255, 255, 224, 0, 63, 251, 255, 129, 255, 223, 252, 0, 0, 14, 0, 0, 0, 8, 0, 255, 255, 255, 254, 0, 127, 224, 255, 255, 254, 15, 252, 0, 255, 240, 15, 255, 255, 255, 192, 15, 252, 0, 0, 0, 31, 255, 255, 0, 255, 255, 248, 0, 0, 7, 128, 0, 0, 56, 0, 255, 255, 255, 255, 0, 127, 224, 127, 255, 254, 15, 252, 7, 255, 240, 15, 255, 255, 255, 128, 15, 252, 0, 0, 0, 15, 255, 254, 0, 127, 255, 240, 0, 0, 3, 192, 255, 255, 248, 1, 255, 255, 255, 255, 0, 127, 224, 63, 255, 254, 15, 255, 255, 255, 192, 15, 255, 255, 255, 0, 15, 255, 255, 240, 0, 15, 255, 254, 0, 63, 255, 240, 0, 0, 1, 255, 255, 255, 248, 3, 255, 255, 255, 255, 128, 127, 224, 31, 255, 254, 15, 255, 255, 255, 128, 15, 255, 255, 255, 128, 15, 255, 255, 240, 0, 7, 255, 252, 0, 63, 255, 224, 0, 0, 3, 255, 0, 15, 136, 7, 255, 255, 255, 255, 192, 127, 224, 15, 255, 254, 15, 255, 255, 254, 0, 15, 252, 3, 255, 192, 15, 255, 255, 240, 0, 3, 255, 248, 0, 31, 255, 192, 0, 0, 7, 128, 0, 31, 0, 7, 255, 0, 1, 255, 192, 127, 224, 7, 255, 254, 15, 255, 255, 240, 0, 15, 252, 1, 255, 224, 15, 255, 255, 240, 0, 1, 255, 240, 0, 15, 255, 128, 0, 0, 15, 0, 0, 60, 0, 15, 254, 0, 0, 255, 224, 127, 224, 3, 255, 254, 15, 255, 255, 0, 0, 15, 252, 0, 255, 248, 15, 255, 255, 240, 0, 1, 255, 240, 0, 15, 255, 128, 0, 1, 30, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 248, 0, 255, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 240, 0, 255, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 224, 3, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 192, 7, 255, 128, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 15, 255, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 31, 252, 0, 56, 0, 7, 255, 255, 0, 0, 7, 255, 248, 0, 7, 255, 248, 0, 0, 0, 63, 255, 255, 0, 0, 31, 255, 224, 0, 7, 255, 255, 192, 0, 63, 255, 248, 0, 0, 0, 63, 248, 0, 120, 0, 63, 255, 255, 240, 0, 7, 255, 248, 0, 7, 255, 248, 0, 0, 3, 255, 255, 255, 240, 0, 31, 255, 224, 0, 15, 255, 255, 0, 1, 255, 255, 255, 128, 0, 0, 127, 240, 1, 248, 1, 255, 255, 255, 254, 0, 7, 255, 248, 0, 7, 255, 248, 0, 0, 31, 255, 255, 255, 254, 0, 31, 255, 224, 0, 63, 255, 252, 0, 15, 255, 255, 255, 240, 0, 1, 255, 224, 3, 248, 3, 255, 255, 255, 255, 128, 7, 255, 248, 0, 7, 255, 248, 0, 0, 255, 255, 255, 255, 255, 128, 31, 255, 224, 0, 255, 255, 248, 0, 31, 255, 255, 255, 252, 0, 3, 255, 192, 7, 248, 15, 255, 255, 255, 255, 0, 7, 255, 248, 0, 7, 255, 248, 0, 3, 255, 255, 255, 255, 254, 0, 31, 255, 224, 1, 255, 255, 224, 0, 127, 255, 255, 255, 248, 0, 7, 255, 128, 15, 248, 31, 255, 255, 255, 248, 0, 7, 255, 248, 0, 7, 255, 248, 0, 15, 255, 255, 255, 255, 248, 0, 31, 255, 224, 7, 255, 255, 192, 0, 255, 255, 255, 255, 192, 0, 15, 255, 0, 31, 248, 31, 255, 255, 255, 224, 0, 7, 255, 248, 0, 7, 255, 248, 0, 31, 255, 255, 255, 255, 224, 0, 31, 255, 224, 31, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0, 31, 254, 0, 63, 248, 63, 255, 249, 255, 128, 0, 7, 255, 248, 0, 7, 255, 248, 0, 63, 255, 255, 243, 255, 128, 0, 31, 255, 224, 63, 255, 252, 0, 1, 255, 255, 207, 252, 0, 0, 63, 248, 0, 127, 240, 63, 255, 192, 14, 0, 0, 7, 255, 248, 0, 7, 255, 248, 0, 127, 255, 248, 0, 14, 0, 0, 31, 255, 224, 255, 255, 248, 0, 1, 255, 254, 0, 112, 0, 0, 127, 240, 1, 255, 224, 63, 255, 192, 0, 0, 0, 7, 255, 248, 0, 7, 255, 248, 0, 255, 255, 224, 0, 0, 0, 0, 31, 255, 227, 255, 255, 224, 0, 1, 255, 254, 0, 0, 0, 1, 255, 224, 3, 255, 192, 63, 255, 240, 0, 0, 0, 7, 255, 248, 0, 7, 255, 248, 1, 255, 255, 128, 0, 0, 0, 0, 31, 255, 231, 255, 255, 128, 0, 1, 255, 255, 128, 0, 0, 1, 255, 192, 7, 255, 128, 63, 255, 255, 192, 0, 0, 7, 255, 248, 0, 7, 255, 248, 1, 255, 255, 0, 0, 0, 0, 0, 31, 255, 255, 255, 255, 0, 0, 1, 255, 255, 254, 0, 0, 1, 255, 128, 15, 255, 0, 31, 255, 255, 255, 128, 0, 7, 255, 248, 0, 7, 255, 248, 3, 255, 254, 0, 0, 0, 0, 0, 31, 255, 255, 255, 252, 0, 0, 0, 255, 255, 255, 252, 0, 1, 255, 0, 31, 252, 0, 15, 255, 255, 255, 240, 0, 7, 255, 248, 0, 7, 255, 248, 3, 255, 252, 0, 0, 0, 0, 0, 31, 255, 255, 255, 240, 0, 0, 0, 127, 255, 255, 255, 128, 1, 255, 255, 63, 248, 0, 7, 255, 255, 255, 254, 0, 7, 255, 248, 0, 7, 255, 248, 3, 255, 252, 0, 0, 0, 0, 0, 31, 255, 255, 255, 252, 0, 0, 0, 63, 255, 255, 255, 240, 1, 255, 255, 255, 240, 0, 1, 255, 255, 255, 255, 0, 7, 255, 248, 0, 7, 255, 248, 3, 255, 252, 0, 0, 0, 0, 0, 31, 255, 255, 255, 254, 0, 0, 0, 15, 255, 255, 255, 248, 0, 0, 0, 255, 224, 0, 0, 127, 255, 255, 255, 192, 7, 255, 248, 0, 7, 255, 248, 3, 255, 252, 0, 0, 0, 0, 0, 31, 255, 255, 255, 255, 128, 0, 0, 3, 255, 255, 255, 254, 0, 0, 0, 255, 192, 0, 0, 15, 255, 255, 255, 192, 7, 255, 248, 0, 7, 255, 248, 3, 255, 254, 0, 0, 0, 0, 0, 31, 255, 255, 255, 255, 192, 0, 0, 0, 127, 255, 255, 254, 0, 0, 0, 255, 128, 8, 0, 0, 63, 255, 255, 224, 7, 255, 248, 0, 7, 255, 248, 1, 255, 255, 0, 0, 0, 0, 0, 31, 255, 255, 255, 255, 240, 0, 0, 0, 1, 255, 255, 255, 0, 0, 0, 255, 0, 24, 0, 0, 0, 127, 255, 224, 7, 255, 248, 0, 7, 255, 248, 1, 255, 255, 128, 0, 0, 0, 0, 31, 255, 255, 255, 255, 248, 0, 0, 0, 0, 3, 255, 255, 0, 0, 0, 252, 0, 56, 0, 0, 0, 15, 255, 240, 7, 255, 252, 0, 15, 255, 248, 0, 255, 255, 224, 0, 0, 0, 0, 31, 255, 255, 159, 255, 254, 0, 0, 0, 0, 0, 127, 255, 129, 255, 255, 248, 0, 120, 0, 3, 128, 31, 255, 240, 3, 255, 255, 0, 63, 255, 240, 0, 127, 255, 248, 0, 14, 0, 0, 31, 255, 254, 15, 255, 255, 0, 0, 0, 28, 0, 255, 255, 129, 255, 255, 240, 1, 248, 0, 15, 252, 255, 255, 224, 3, 255, 255, 255, 255, 255, 240, 0, 63, 255, 255, 255, 255, 128, 0, 31, 255, 252, 3, 255, 255, 192, 0, 0, 127, 231, 255, 255, 1, 255, 255, 224, 3, 248, 0, 63, 255, 255, 255, 224, 1, 255, 255, 255, 255, 255, 224, 0, 31, 255, 255, 255, 255, 224, 0, 31, 255, 240, 1, 255, 255, 224, 0, 1, 255, 255, 255, 255, 1, 255, 255, 192, 7, 248, 0, 255, 255, 255, 255, 192, 0, 255, 255, 255, 255, 255, 192, 0, 15, 255, 255, 255, 255, 248, 0, 31, 255, 224, 0, 127, 255, 248, 0, 7, 255, 255, 255, 254, 1, 255, 255, 0, 15, 248, 7, 255, 255, 255, 255, 128, 0, 63, 255, 255, 255, 255, 0, 0, 3, 255, 255, 255, 255, 254, 0, 31, 255, 224, 0, 63, 255, 252, 0, 63, 255, 255, 255, 252, 0, 0, 0, 0, 31, 248, 15, 255, 255, 255, 255, 0, 0, 31, 255, 255, 255, 254, 0, 0, 0, 255, 255, 255, 255, 255, 128, 31, 255, 224, 0, 15, 255, 255, 0, 127, 255, 255, 255, 248, 0, 0, 0, 0, 63, 248, 3, 255, 255, 255, 252, 0, 0, 7, 255, 255, 255, 248, 0, 0, 0, 31, 255, 255, 255, 254, 0, 31, 255, 224, 0, 7, 255, 255, 128, 31, 255, 255, 255, 224, 0, 0, 0, 0, 127, 240, 0, 127, 255, 255, 240, 0, 0, 0, 255, 255, 255, 192, 0, 0, 0, 3, 255, 255, 255, 240, 0, 31, 255, 224, 0, 1, 255, 255, 224, 3, 255, 255, 255, 128, 0, 0, 0, 1, 255, 224, 0, 7, 255, 255, 0, 0, 0, 0, 15, 255, 252, 0, 0, 0, 0, 0, 63, 255, 255, 0, 0, 31, 255, 224, 0, 0, 255, 255, 240, 0, 63, 255, 248, 0, 0, 0, 0, 255, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 192, 255, 255, 252, 0, 0, 0, 0, 0, 0, 0, 0, 127, 240, 0, 255, 224, 1, 255, 255, 255, 255, 255, 255, 255, 252, 0, 0, 0, 0, 0, 0, 0, 0, 127, 248, 0, 255, 240, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 63, 252, 0, 127, 248, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 0, 63, 252, 0, 127, 248, 3, 255, 0, 15, 159, 255, 255, 255, 255, 255, 255, 255, 0, 31, 254, 0, 63, 252, 7, 128, 0, 0, 0, 0, 0, 15, 143, 255, 255, 255, 255, 255, 255, 255, 0, 31, 254, 0, 63, 252, 7, 128, 0, 31, 7, 128, 15, 255, 0, 31, 255, 255, 128, 15, 255, 0, 31, 254, 15, 0, 0, 0, 0, 0, 0, 31, 7, 128, 15, 255, 0, 31, 255, 255, 128, 15, 255, 0, 31, 254, 15, 0, 0, 62, 3, 192, 7, 255, 128, 15, 255, 255, 192, 7, 255, 128, 15, 255, 30, 0, 0, 0, 0, 0, 0, 62, 3, 192, 7, 255, 128, 15, 255, 255, 192, 7, 255, 128, 7, 255, 30, 0, 0, 120, 1, 224, 3, 255, 192, 7, 255, 255, 224, 3, 255, 192, 7, 255, 248, 0, 0, 0, 0, 0, 0, 124, 1, 224, 3, 255, 192, 7, 255, 255, 224, 1, 255, 192, 3, 255, 248, 0, 1, 240, 1, 240, 1, 255, 224, 3, 255, 255, 240, 0, 255, 224, 1, 255, 240, 0, 64, 0, 0, 0, 1, 240, 0, 240, 1, 255, 224, 1, 255, 255, 248, 0, 255, 240, 1, 255, 240, 0, 255, 224, 1, 248, 0, 255, 240, 1, 255, 255, 252, 0, 127, 248, 0, 255, 224, 3, 255, 255, 255, 255, 255, 224, 1, 248, 0, 127, 240, 0, 255, 255, 252, 0, 127, 248, 0, 255, 224, 1, 255, 192, 7, 252, 0, 63, 248, 0, 127, 255, 254, 0, 63, 252, 0, 127, 192, 7, 255, 255, 255, 255, 255, 192, 3, 252, 0, 63, 248, 0, 127, 255, 254, 0, 63, 252, 0, 127, 192, 7, 255, 128, 15, 254, 0, 31, 252, 0, 63, 255, 255, 0, 31, 254, 0, 63, 128, 15, 255, 255, 255, 255, 255, 128, 15, 255, 0, 31, 254, 0, 63, 255, 255, 0, 31, 254, 0, 63, 128, 15, 255, 0, 31, 255, 128, 15, 255, 0, 0, 0, 15, 128, 15, 255, 0, 31, 0, 31, 255, 255, 255, 255, 255, 0, 31, 255, 128, 15, 255, 0, 0, 0, 15, 128, 15, 255, 0, 31, 0, 31, 254, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 192, 7, 255, 128, 28, 0, 63, 255, 255, 255, 255, 254, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 192, 3, 255, 128, 30, 0, 63, 120, 0, 127, 241, 224, 3, 255, 192, 0, 0, 3, 224, 1, 255, 192, 120, 0, 255, 240, 0, 0, 0, 124, 0, 127, 249, 224, 3, 255, 192, 0, 0, 3, 224, 1, 255, 192, 56, 0, 127, 240, 0, 255, 224, 240, 1, 255, 224, 0, 0, 1, 240, 0, 255, 224, 240, 1, 255, 224, 0, 0, 1, 248, 0, 255, 224, 240, 1, 255, 224, 0, 0, 1, 248, 0, 255, 240, 240, 0, 255, 224, 3, 255, 192, 120, 0, 255, 240, 0, 0, 0, 124, 0, 127, 249, 224, 3, 255, 192, 0, 0, 3, 224, 1, 255, 192, 120, 0, 127, 240, 0, 0, 0, 124, 0, 127, 249, 224, 3, 255, 192, 7, 255, 128, 60, 0, 63, 255, 255, 255, 255, 254, 0, 63, 255, 192, 7, 255, 128, 0, 0, 7, 192, 7, 255, 128, 30, 0, 63, 255, 255, 255, 255, 254, 0, 63, 255, 192, 7, 255, 128, 15, 255, 0, 31, 0, 31, 255, 255, 255, 255, 255, 0, 31, 255, 128, 15, 255, 0, 31, 255, 223, 128, 15, 255, 0, 31, 0, 31, 255, 255, 255, 255, 255, 0, 31, 255, 128, 15, 255, 0, 31, 254, 0, 63, 128, 15, 255, 255, 255, 255, 255, 128, 15, 254, 0, 31, 252, 0, 63, 255, 255, 0, 31, 254, 0, 63, 128, 15, 255, 255, 255, 255, 255, 128, 15, 255, 0, 31, 254, 0, 63, 252, 0, 127, 192, 7, 255, 255, 255, 255, 255, 192, 7, 252, 0, 63, 248, 0, 127, 255, 254, 0, 63, 252, 0, 127, 192, 7, 255, 255, 255, 255, 255, 192, 3, 254, 0, 63, 252, 0, 127, 240, 0, 255, 224, 3, 255, 255, 255, 255, 255, 224, 1, 248, 0, 255, 240, 1, 255, 255, 252, 0, 127, 248, 0, 255, 224, 3, 255, 255, 255, 255, 255, 224, 1, 248, 0, 127, 240 | |
}; | |
void setup() { | |
sstv(); | |
} | |
void loop() { | |
} | |
void sstv(){ | |
// preamble | |
tone_wait(1900,100); | |
tone_wait(1500,100); | |
tone_wait(1900,100); | |
tone_wait(1500,100); | |
tone_wait(2300,100); | |
tone_wait(1500,100); | |
tone_wait(2300,100); | |
tone_wait(1500,100); | |
// leader | |
tone_wait(1900,300); | |
tone_wait(1200,10); | |
tone_wait(1900,300); | |
// VIS | |
tone_wait(1200,30); // start bit | |
tone_bit(0); // data bits | |
tone_bit(1); | |
tone_bit(1); | |
tone_bit(0); | |
tone_bit(0); | |
tone_bit(0); | |
tone_bit(0); | |
tone_bit(1); // parity bit | |
tone_wait(1200,30); // stop bit | |
// TIMER 1 for interrupt frequency 2400.2400240024003 Hz: | |
cli(); // stop interrupts | |
TCCR1A = 0; // set entire TCCR1A register to 0 | |
TCCR1B = 0; // same for TCCR1B | |
TCNT1 = 0; // initialize counter value to 0 | |
// set compare match register for 2400.2400240024003 Hz increments | |
OCR1A = 16000000 / (1 * 3300) - 1; // (must be <65536) | |
// turn on CTC mode | |
TCCR1B |= (1 << WGM12); | |
// Set CS12, CS11 and CS10 bits for 1 prescaler | |
TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10); | |
// enable timer compare interrupt | |
TIMSK1 |= (1 << OCIE1A); | |
sei(); // allow interrupts | |
while(!broadcast_done){ | |
if(sync_count != 0){ | |
tone(9,1200); // sync | |
} | |
else if(bit_changed){ | |
bit_changed = false; | |
if(pixel_bit == 1){ | |
tone(9,2300); | |
} | |
else{ | |
tone(9,1500); | |
} | |
} | |
} | |
noTone(9); | |
} | |
void tone_wait(uint16_t freq, uint16_t del){ | |
tone(9,freq); | |
uint32_t t_start = millis(); | |
while(millis() < t_start+del){ | |
//wait | |
} | |
} | |
void tone_bit(bool b){ | |
if(b == 1){ | |
tone_wait(1100,30); | |
} | |
else{ | |
tone_wait(1300,30); | |
} | |
} | |
void random_line(){ | |
tone_wait(1200,5); | |
uint32_t last_event = micros(); | |
for(uint8_t i = 0; i < 120; i++){ | |
tone(9,1500+(i<<3)); | |
while(micros() - last_event < 505){ | |
} | |
last_event = micros(); | |
} | |
} | |
ISR(TIMER1_COMPA_vect){ | |
if(sync_count == 0){ | |
if(byte_index < 4800){ | |
pixel_bit = bitRead(pixel_byte, 7-bit_index); | |
bit_changed = true; | |
/* | |
if(byte_index % 40 == 0){ | |
pixel_bit = 1; | |
} | |
else{ | |
pixel_bit = 0; | |
} | |
*/ | |
bit_index++; | |
if(bit_index >= 8){ | |
bit_index = 0; | |
byte_index++; | |
pixel_byte = pgm_read_byte(image + byte_index); | |
if(byte_index % 40 == 0){ | |
sync_count = 10; | |
} | |
} | |
} | |
else{ | |
broadcast_done = true; | |
} | |
} | |
else{ | |
tone(9,1200); // sync | |
sync_count--; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment