Midweeker (POV)

Hallo,
ich habe mal eben für ein Fotoworkshop (Nachts im Musem) mal was fertig gemacht.
Material:
-Arduino duemilanove /Uno
-Blinkenlightshield von Udo Klein
-Eine Kamera und ein bisschen Sketch
-Excel Tabelle um die Pattern zu berechnen
Basierend ist der Sketch von >HIER<
re.jpg

re2.jpg

#include <MsTimer2.h>
//#include <arduino/avr/io.h>
//#include <arduino/avr/pgmspace.h>

#define PARSE(pattern) ((pattern>>14) & 0b111111), ((pattern>>8) & 0b111111), (pattern & 0b11111111)

uint8_t const pov_pattern[] PROGMEM = {
 PARSE( 1048575 ),
PARSE(  1048575 ),
PARSE(  30  ),
PARSE(  120 ),
PARSE(  480 ),
PARSE(  1920  ),
PARSE(  7680  ),
PARSE(  30720 ),
PARSE(  122880  ),
PARSE(  491520  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1046528 ),
PARSE(  1047552 ),
PARSE(  8064  ),
PARSE(  6640  ),
PARSE(  6204  ),
PARSE(  6159  ),
PARSE(  6159  ),
PARSE(  6204  ),
PARSE(  6640  ),
PARSE(  8064  ),
PARSE(  1047552 ),
PARSE(  1046528 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  65520 ),
PARSE(  131064  ),
PARSE(  491550  ),
PARSE(  917511  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  458766  ),
PARSE(  229404  ),
PARSE(  114744  ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1536  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  3 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  114800  ),
PARSE(  229884  ),
PARSE(  459150  ),
PARSE(  787203  ),
PARSE(  787971  ),
PARSE(  789507  ),
PARSE(  464903  ),
PARSE(  243742  ),
PARSE(  122936  ),
PARSE(  57456 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  14  ),
PARSE(  60  ),
PARSE(  240 ),
PARSE(  448 ),
PARSE(  448 ),
PARSE(  240 ),
PARSE(  60  ),
PARSE(  14  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  14  ),
PARSE(  60  ),
PARSE(  240 ),
PARSE(  448 ),
PARSE(  448 ),
PARSE(  240 ),
PARSE(  60  ),
PARSE(  14  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  65535 ),
PARSE(  131071  ),
PARSE(  229376  ),
PARSE(  458752  ),
PARSE(  917504  ),
PARSE(  786432  ),
PARSE(  786432  ),
PARSE(  786432  ),
PARSE(  917504  ),
PARSE(  458752  ),
PARSE(  229376  ),
PARSE(  131071  ),
PARSE(  65535 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  114800  ),
PARSE(  229884  ),
PARSE(  459150  ),
PARSE(  787203  ),
PARSE(  787971  ),
PARSE(  789507  ),
PARSE(  464903  ),
PARSE(  243742  ),
PARSE(  122936  ),
PARSE(  57456 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  786435  ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  65535 ),
PARSE(  131071  ),
PARSE(  229376  ),
PARSE(  458752  ),
PARSE(  917504  ),
PARSE(  786432  ),
PARSE(  786432  ),
PARSE(  786432  ),
PARSE(  917504  ),
PARSE(  458752  ),
PARSE(  229376  ),
PARSE(  131071  ),
PARSE(  65535 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  14  ),
PARSE(  60  ),
PARSE(  240 ),
PARSE(  448 ),
PARSE(  448 ),
PARSE(  240 ),
PARSE(  60  ),
PARSE(  14  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  31  ),
PARSE(  31  ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  224 ),
PARSE(  112 ),
PARSE(  56  ),
PARSE(  28  ),
PARSE(  14  ),
PARSE(  15  ),
PARSE(  1048575 ),
PARSE(  1048575 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  131056  ),
PARSE(  262136  ),
PARSE(  399372  ),
PARSE(  789510  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  787971  ),
PARSE(  789510  ),
PARSE(  522252  ),
PARSE(  258072  ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
PARSE(  0 ),
};

void blink() {
  static uint16_t index = 0;

  PORTC = pgm_read_byte(pov_pattern + (index++));
  PORTB = pgm_read_byte(pov_pattern + (index++));
  PORTD = pgm_read_byte(pov_pattern + (index++));

  if (index >= sizeof(pov_pattern)) {
    index = 0;
  }
}

void setup() {
  DDRD = 0b11111111; // set digital  0- 7 to output
  DDRB = 0b00111111; // set digital  8-13 to output
  DDRC = 0b00111111; // set digital 14-19 to output (coincidences with analog 0-5)

  MsTimer2::set(2, blink);
  MsTimer2::start();
}

void loop() { }

Gruß
DerDani

Ui, so ein Lichtwischer ist immer wieder schön anzusehen, zumindest, wenn er bewegt wird. Irgendwann baue ich mir auch einen. Irgendwann ... bestimmt!

Gruß

Gregor