Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projekte:dot-matrix-display [2016-07-04 18:18] – [Pinbelegungen] crackiprojekte:dot-matrix-display [2017-01-17 01:01] (current) – external edit 127.0.0.1
Line 10: Line 10:
 Zwei Dot Matrix Panels aus China, 32x16 Pixel Rot, 10 mm Pitch (P10). Keine Ahnung, wem die gehören. Zwei Dot Matrix Panels aus China, 32x16 Pixel Rot, 10 mm Pitch (P10). Keine Ahnung, wem die gehören.
  
-Arduino, Steckbrett, Netzteil sind Clubbesitz/Getränkekasse.+Arduino, ESP8266 NodeMCU Devboard, Steckbrett, Netzteil sind Clubbesitz/Getränkekasse.
  
   * http://digital-wizard.net/avr_projects/p10_led_display_panel_interface   * http://digital-wizard.net/avr_projects/p10_led_display_panel_interface
Line 26: Line 26:
   * 12: R (SPI mosi)   * 12: R (SPI mosi)
  
-Arduino: +===== Implementierung =====
-  * 1 -> D9 +
-  * 2 -> D6 +
-  * 4 -> D7 +
-  * 8 -> D13 +
-  * 10 -> D8 +
-  * 12 -> D11+
  
-ESP+  * modifizierte DMD2https://github.com/crackwitz/DMD2 
-  * -> D3 (weil D0 scheinbar kein PWM darf?) +  * arduino sketch und lua script https://github.com/crackwitz/esp8266-arduino-dmd2-pixelflut 
-  * 2 -> D1 +  * TCP pixelflut kommt *vielleichtnoch. wer ne implementierung in NodeMCU-Lua anschleppt
-  * 4 -> D2 +
-  * 8 -> GPIO 14 / D5 +
-  10 -> GPIO 15 / D8 (soll nen 4k7 pulldown kriegen, fuer startup mode selection) +
-  12 -> GPIO 13 / D7 +
-===== aktuelle Arbeit daran ==== +
-  * mx hackt eine python library, wodurch Pixel [gegeben durch (x,y)] manipuliert werden kann +
-  * mx will dann pixelflut und ähnliches laufen lassen+
  
-Example Code mit Noise, gerade genug um es am laufen zu halten: +==== MQTT Endpunkte ====
-<code> +
-/* +
-  Game of Life display+
  
-  Simulates Conway's Game of Life +  * runlevel : shutdown/launch 
-  https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life +    * kontrolliert, ob gameoflife laeuft oder alles aus 
- */+  * cracki/esp-devboard/ 
 +    * reset : 
 +      * "arduino" = resettet nur den Arduino 
 +      * alles andere resettet den ganzen Apparat 
 +    * solid : 0/1/255 
 +      * 0 und 1 setzen die pixel auf 0 oder 1 
 +      * 255 invertiert alles 
 +    * dutycycle : 0-255 
 +      * sollte man nicht uebertreiben, sonst sperrt das alles komplettDie aktuelle Stromversorgung (und Verkabelung) sollte nicht weit ueber 20 getrieben werden, sonst haengt das alles. 
 +    * pixelflut : PX <x> <y> <0/1> 
 +    * bitmap : 128 bytes 
 +    * text : Text vollhoch 
 +    * text1 : Text Zeile 1 
 +    * text2 : Text Zeile 2 
 +    * gameoflife : 0/1 
 +    gameoflife/noise : 0-255 
 +    * gameoflife/autonoise : 0/1
  
-#include <SPI.h> +==== Pinbelegungen ====
-#include <DMD2.h>+
  
-// How many displays do you have? +Panel -> Arduino: 
-const int WIDTH = 2; +  -> D9 (mit 100k pulldownsonst legen die panels losueberlasten das netzteilspannung am arscharduino kommt nicht hoch
-const int HEIGHT = 1+  * 4 -> D7 
- +  * 8 -> D13 
-SPIDMD dmd(WIDTH,HEIGHT); +  * 10 -> D8 
- +  * 12 -D11
-void populate_random_cells() { +
-  // Populate the initial display randomly +
-  for(int x = 0; x < dmd.width; x++) { +
-    for(int y = 0; y < dmd.height; y++) { +
-      if(random(100) < 30) // Increase 30 to a higher number to set more initial pixels +
-        dmd.setPixel(x,y,GRAPHICS_ON); +
-      dmd.setPixel(x,y,GRAPHICS_OFF)+
-    } +
-  +
-+
- +
-// the setup routine runs once when you press reset: +
-void setup() { +
-  Serial.begin(9600); +
-  dmd.setBrightness(50); +
-  dmd.begin(); +
- +
-  randomSeed(analogRead(0)); +
-  populate_random_cells(); +
-+
- +
-// the loop routine runs over and over again forever: +
-void loop() { +
-  // Store the current generation by copying the current DMD frame contents +
-  DMDFrame current_generation(dmd); +
- +
-  long start = millis(); +
- +
-  // random seed +
-  for (int k = 13; k 0; k -= 1) +
-    current_generation.setPixel(random(dmd.width), random(dmd.height), GRAPHICS_ON);+
  
-  // Update next generation of every pixel +Arduino mit ESP fuer netzwerk: 
-  bool change = false; +  * RXD <- ESP TXD0 
-  for(int x = 0; x dmd.width; x++) { +  * TXD <- ESP RXD0 
-    for(int y = 0; y dmd.height; y++) { +  * reset <- ESP D2 
-      bool state = current_generation.getPixel(x,y); +  * GND und VCC passend
-      int live_neighbours = 0;+
  
-      // Count how many live neighbours we have in the current generation +ESP als netzwerksklave an Arduino: 
-      for(int nx = x 1; nx < x + 2; nx++) { +  * erde, vcc 
-        for(int ny = y 1; ny < y + 2; ny++) { +  * TXD0 -> Arduino RX 
-          if(nx == x && ny == y) +  * RXD0 -> Arduino TX 
-            continue; +  * D2 -> arduino reset
-          if(current_generation.getPixel(nx,ny)) +
-            live_neighbours++; +
-        } +
-      }+
  
-      // Update pixel count for the next generation +ungetestete alternative, falls man custom firmware fuer den ESP bauen will: 
-      if(state && (live_neighbours < 2 || live_neighbours 3)) { +  * 2 (A mux) -> D1 
-        state = false; +  * 4 (B mux) -D2 
-        change = true; +  * 1 (OE-> D3 (sollte PWM koennen
-      } +  * 8 (SPI clock) -> D5 (HSCLK
-      else if(!state && (live_neighbours == 3)) { +  * 10 (store pulse) -> D0 (gpio
-        state = true; +  * 12 (R) -> D7 (HMOSI)
-        change = true; +
-      } +
-      dmd.setPixel(x,y,state ? GRAPHICS_ON : GRAPHICS_OFF)+
-    } +
-  }+
  
-  Serial.println(String("Generation time: ") + (millis() - start) + " ms"); 
  
-  if(!change && 0) { 
-    // We've made it to an unchanging state 
-    delay(500); 
-    populate_random_cells(); 
-    // (We can't detect steady states where things change forward 
-    // and back, for these you need to press reset!) 
-  } 
-} 
-</code> 
Navigation



You are not allowed to add pages