Flipdots: Unterschied zwischen den Versionen

aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springen
(added some info)
Zeile 8: Zeile 8:
  
 
[http://www.bytewerk.org/index.php/Flipdot-Matrix]
 
[http://www.bytewerk.org/index.php/Flipdot-Matrix]
 +
 +
= Bastelerfahrung von Mathias =
 +
 +
Pins von Interesse:
 +
 +
* 3 ROW_DATA
 +
* 5 STROBE
 +
* 7 BLACK_OUTPUT_ENABLE
 +
* 9 WHITE_OUTPUT_ENABLE
 +
* 11 COL_CLOCK
 +
* 13 ROW_CLOCK
 +
* 15 COL_DATA
 +
* 17 ROW_DATA_OUT  (zum Kaskadieren)
 +
 +
Einfach gesagt wählt man eine Reihe aus indem man in ROW (pro Panel) 24bit hineinschiebt. Die aktive Reihe wird 1 gesetzt, der Rest 0.
 +
 +
  for(i=0;i<24;i++){
 +
  change_pin(ROW_DATA,i==row);
 +
  toggle_pin(ROW_CLOCK);
 +
  }
 +
 +
Dann kann man gleichzeitig 16-bit in eine Spalte schreiben.
 +
 +
  for(i=0;i<16;i++){
 +
  change_pin (COL_DATA,(data>>i)&1);
 +
  toggle_pin(COL_CLOCK);
 +
  }
 +
 +
Jetzt muss man einmal die Ausgänge im Display mit strobe updaten:
 +
 +
  toggle_pin(STROBE);
 +
 +
Und nun wählt man ob die Pixel, welche man in der Spalte vorher gesetzt hat, nach schwarz oder weiß setzt:
 +
 +
  change_pin(BLACK_OUTPUT_ENABLE,!color);
 +
  change_pin(WHITE_OUTPUT_ENABLE,color);
 +
  _delay_us(color?1500:3000);
 +
  change_pin(BLACK_OUTPUT_ENABLE,0);
 +
  change_pin(WHITE_OUTPUT_ENABLE,0);
 +
 +
Und eine Spalte zu beschreiben kann man also die Spalte einmal komplett auf schwarz setzen und dann die weißen Pixel setzen die man will:
 +
 +
  set_row(row,65536,0);
 +
  set_row(row,pixel_mask,1);
 +
 +
oder unauffälliger einfach die toggeln, die man toggeln will.
 +
 +
  mask=old_pixel_mask ^ pixel_mask;
 +
  set_row(row, pixel_mask & mask, 0);
 +
  set_row(row, old_pixel_mask & mask, 1);
 +
 +
= Spannungsversorgung =
 +
 +
Achtung, das Panel braucht beim Schalten extrem viel Strom! Unsere Netzteile hier schaffen das nicht. Mit einem ausreichend großen Kondensator sollte man das ausgleichen können.

Version vom 8. Januar 2014, 20:17 Uhr

2x3 Panele ca 90x 50 cm gross


[1]

[2]

[3]

Bastelerfahrung von Mathias

Pins von Interesse:

  • 3 ROW_DATA
  • 5 STROBE
  • 7 BLACK_OUTPUT_ENABLE
  • 9 WHITE_OUTPUT_ENABLE
  • 11 COL_CLOCK
  • 13 ROW_CLOCK
  • 15 COL_DATA
  • 17 ROW_DATA_OUT (zum Kaskadieren)

Einfach gesagt wählt man eine Reihe aus indem man in ROW (pro Panel) 24bit hineinschiebt. Die aktive Reihe wird 1 gesetzt, der Rest 0.

 for(i=0;i<24;i++){
  change_pin(ROW_DATA,i==row);
  toggle_pin(ROW_CLOCK);
 }

Dann kann man gleichzeitig 16-bit in eine Spalte schreiben.

 for(i=0;i<16;i++){
  change_pin (COL_DATA,(data>>i)&1);
  toggle_pin(COL_CLOCK);
 }

Jetzt muss man einmal die Ausgänge im Display mit strobe updaten:

 toggle_pin(STROBE);

Und nun wählt man ob die Pixel, welche man in der Spalte vorher gesetzt hat, nach schwarz oder weiß setzt:

 change_pin(BLACK_OUTPUT_ENABLE,!color);
 change_pin(WHITE_OUTPUT_ENABLE,color);
 _delay_us(color?1500:3000);
 change_pin(BLACK_OUTPUT_ENABLE,0);
 change_pin(WHITE_OUTPUT_ENABLE,0);

Und eine Spalte zu beschreiben kann man also die Spalte einmal komplett auf schwarz setzen und dann die weißen Pixel setzen die man will:

 set_row(row,65536,0);
 set_row(row,pixel_mask,1);

oder unauffälliger einfach die toggeln, die man toggeln will.

 mask=old_pixel_mask ^ pixel_mask;
 set_row(row, pixel_mask & mask, 0);
 set_row(row, old_pixel_mask & mask, 1);

Spannungsversorgung

Achtung, das Panel braucht beim Schalten extrem viel Strom! Unsere Netzteile hier schaffen das nicht. Mit einem ausreichend großen Kondensator sollte man das ausgleichen können.