Heute angekommen und echt cool
Ich hab' einen online POV-Generator geschrieben (
http://test.sui.li/blinkenlightpov/) und so sieht's aus:


+Sketch für Arduino Mega (weil ich gerade kein Uno/Duemilanove da hatte...)
#include <avr/io.h>
#include <avr/pgmspace.h>
uint8_t pov_pattern[] PROGMEM = {
0b000001, 0b111000, 0b00000000,
0b000111, 0b111110, 0b00000011,
0b001111, 0b001111, 0b00001010,
0b011100, 0b000011, 0b10000111,
0b011000, 0b000001, 0b10000000,
0b111000, 0b110001, 0b11001111,
0b110000, 0b110000, 0b11001010,
0b110000, 0b110000, 0b11001111,
0b111000, 0b110001, 0b11000000,
0b011000, 0b000001, 0b10001111,
0b011000, 0b000011, 0b10001001,
0b011100, 0b000111, 0b00001110,
0b001111, 0b001111, 0b00000000,
0b000111, 0b111110, 0b00001111,
0b000011, 0b111000, 0b00000001,
0b000111, 0b111110, 0b00001111,
0b001111, 0b001111, 0b00000000,
0b001100, 0b000111, 0b00001001,
0b011100, 0b000011, 0b10001111,
0b011000, 0b000001, 0b10001001,
0b111000, 0b110001, 0b11000000,
0b110001, 0b111000, 0b11001111,
0b110000, 0b110000, 0b11000100,
0b111000, 0b110001, 0b11001111,
0b011000, 0b000001, 0b10000000,
0b011100, 0b000011, 0b10001111,
0b001111, 0b001111, 0b00001001,
0b000111, 0b111110, 0b00001110,
0b000001, 0b111000, 0b00000000,
0b000000, 0b000000, 0b00000000,
0b000000, 0b000000, 0b00000000,
0b000000, 0b000000, 0b00000000,
0b000000, 0b000000, 0b00000000
};
static uint16_t index = 0;
uint8_t leds[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,54,55,56,57,58,59};
void loop() {
byte b1 = pgm_read_byte(pov_pattern+(index++));
byte b2 = pgm_read_byte(pov_pattern+(index++));
byte b3 = pgm_read_byte(pov_pattern+(index++));
if (b1 & 0b100000) { led(0,1); } else { led(0,0); }
if (b1 & 0b010000) { led(1,1); } else { led(1,0); }
if (b1 & 0b001000) { led(2,1); } else { led(2,0); }
if (b1 & 0b000100) { led(3,1); } else { led(3,0); }
if (b1 & 0b000010) { led(4,1); } else { led(4,0); }
if (b1 & 0b000001) { led(5,1); } else { led(5,0); }
if (b2 & 0b100000) { led(6,1); } else { led(6,0); }
if (b2 & 0b010000) { led(7,1); } else { led(7,0); }
if (b2 & 0b001000) { led(8,1); } else { led(8,0); }
if (b2 & 0b000100) { led(9,1); } else { led(9,0); }
if (b2 & 0b000010) { led(10,1); } else { led(10,0); }
if (b2 & 0b000001) { led(11,1); } else { led(11,0); }
if (b3 & 0b10000000) { led(12,1); } else { led(12,0); }
if (b3 & 0b01000000) { led(13,1); } else { led(13,0); }
if (b3 & 0b00100000) { led(14,1); } else { led(14,0); }
if (b3 & 0b00010000) { led(15,1); } else { led(15,0); }
if (b3 & 0b00001000) { led(16,1); } else { led(16,0); }
if (b3 & 0b00000100) { led(17,1); } else { led(17,0); }
if (b3 & 0b00000010) { led(18,1); } else { led(18,0); }
if (b3 & 0b00000001) { led(19,1); } else { led(19,0); }
delay(10);
if (index >= sizeof(pov_pattern)) { index = 0; delay(40); }
}
void led(int no, int st) {
digitalWrite(leds[no], st);
}
void setup() {
for (int i = 0; i< sizeof(leds); i++) {
pinMode(leds[i], OUTPUT);
}
}