Pi-Zero Lightpainting

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.

[pe2-image src=“https://lh3.googleusercontent.com/-DEvI0ZT5b8w/V-qiMNCTz2I/AAAAAAAAPao/HB3sK2XJVK8Fao71hLA69kRJ8B-lqH8hQCCo/s144-c-o/CIMG4994.JPG“ href=“https://picasaweb.google.com/100614490999857774768/6335054124629034945#6335054156391501666″ caption=““ type=“image“ alt=“CIMG4994.JPG“ ]

[pe2-image src=“https://lh3.googleusercontent.com/-wdjaRQMRQpM/V-qiNo_wVvI/AAAAAAAAPao/cjfu4FMf29IDsHNqVLFkZTxARjKxWKvvgCCo/s144-c-o/CIMG4995.JPG“ href=“https://picasaweb.google.com/100614490999857774768/6335054124629034945#6335054181076850418″ caption=““ type=“image“ alt=“CIMG4995.JPG“ ]

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.

[pe2-image src=“https://lh3.googleusercontent.com/-kTZPRxv_6SY/V-rreeguWuI/AAAAAAAAPcM/dfHtaaiFXxE3tFqI4peAAWa5DRJn2dLqACCo/s144-c-o/light-painter-schematic.jpg“ href=“https://picasaweb.google.com/100614490999857774768/6335054124629034945#6335134734668946146″ caption=““ type=“image“ alt=“light-painter-schematic.jpg“ ]

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.

#!/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:

Der Light Painter wird auf der Maker Faire 2016 in Berlin gezeigt.

makerfaire_berlin

Bilder Galerie

[pe2-gallery album=“http://picasaweb.google.com/data/feed/base/user/100614490999857774768/albumid/6335054124629034945?alt=rss&hl=en_US&kind=photo“ ]

Eine Antwort auf „Pi-Zero Lightpainting“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert