Ein Raspberry Pi Zero dazu ein Pimoroni Blinkt! bilden die Grundlage für ein intelligentes Lightpainting Projekt. Dazu kommt noch ein Pimoroni Envirophat Ein paar Tasten zur Mode Umschaltung und ein Poti zur Helligkeitssteuerung.
Die 8 RGB LEDs lassen sich individuell ansteuern. Neben Linien können auch Texte und einfache Grafiken in die Luft gemalt werden.
Schaltplan
Die Schaltung zum Light Painter verfügt über 4 Tasten und ein Potentiometer. Es wird 2 A/D Kanäle des enviroPhat A/D Wandler verwendet. Da auf dem Steckverbinder 5V anliegen, der A/D Wandler selbst nur Signale bis 3,3V erlaubt, werden die 5V über Spannungsteiler reduzuert. Falls kein enviroPhat verwendet wird, muss ein geeigneter A/D Wandler verwendet werden.

Software
Das Programm für den Light Painter ist in PYthon programmiert. Derzeit werden die Tasten abgefragt. NUr bei gedrückter Taster werden die LEDs aktiviert. Die rote, grüne und blaue Taste schalten die entsprechende Farbe an. Die graue Taste aktiviert ein Regenbogen Muster. Über den Potentiometer kann die Helligkeit geregelt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
#!/usr/bin/env python import sys import time import colorsys from envirophat import analog from blinkt import set_brightness, set_pixel, show def write(line): sys.stdout.write(line) sys.stdout.flush() def showRainbow(): hue = int(time.time() * 100) % 360 for x in range(8): offset = x * spacing h = ((hue + offset) % 360) / 360.0 r, g, b = [int(c*255) for c in colorsys.hsv_to_rgb(h, 1.0, 1.0)] set_pixel(x,r,g,b) show() def setColor(r, g, b): for x in range(8): set_pixel(x,r,g,b) show() def getButton(): a0 = analog_values[0] if (a0 < 2.4): if (a0 < 0.8): if (a0 < 0.5) : if (a0 < 0.2): key = 4 # grey else : key = 3 # green else : key = 2 # red else : key = 1 # blue else : key = 0 return key def setBrightness(): a1 = analog_values[1] if (a1 < 3.0): if (a1 < 2.0): if (a1 < 1.0): b = 0.1 else : b = 0.2 else : b = 0.4 else : b = 0.8 set_brightness(b) write("--- piZero Light Painter ---") spacing = 360.0 / 16.0 hue = 0 set_brightness(0.1) try: while True: analog_values = analog.read_all() btn = getButton() setBrightness() output = """ Analog: 0: {a0}, 1: {a1} Button: {k} """.format( a0 = analog_values[0], a1 = analog_values[1], k = btn, ) output = output.replace("\n","\n\033[K") write(output) lines = len(output.split("\n")) write("\033[{}A".format(lines - 1)) if (btn == 1): setColor(0,0,255) elif (btn == 2): setColor(255,0,0) elif (btn == 3): setColor(0,255,0) elif (btn == 4): showRainbow() else : setColor(0,0,0) time.sleep(0.1) except KeyboardInterrupt: pass |
Weitere Informationen:
- https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-blinkt
- https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-phat
Der Light Painter wird auf der Maker Faire 2016 in Berlin gezeigt.
Unglaublich interessanter Artikel!