Zum Inhalt

Weitere Versuchsideen

Neopixel einzeln ansteuern

Wie man die Neopixel in verschiedenen Farben leuchten lassen kann hast Du schon gelernt. Man kann die LEDs aber auch einzeln ansteuern und ihnen unterschiedliche Farben geben. Damit kann man tolle Effekte umsetzen, zum Beispiel ein Lauflicht. Den Code dafür findest Du unten. Mit dem Beispiel soltest Du in der Lage sein auch eigene Ideen umzusetzen.

from time import sleep
import board
import digitalio
import neopixel

# Definition der Eingängen
pixel_pin = board.GP22
num_pixels = 4

pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=0.1, auto_write=False)

RED = (255, 0, 0)
YELLOW = (255, 150, 0)
GREEN = (0, 255, 0)
CYAN = (0, 255, 255)
BLUE = (0, 0, 255)
PURPLE = (180, 0, 255)

while True:
    pixels[0] = RED     # hier setze ich die Farbe für die erste LED
    pixels[1] = YELLOW  # ... und die zweite
    pixels[2] = CYAN    # ... dritte
    pixels[3] = PURPLE  # ... und vierte
    pixels.show()       # Ohne diesen Befehl zeigen die LEDs nix an,
                        # den brauchen wir also immer wenn die Farben
                        # geändert wurden!
    sleep(0.6)
    pixels[0] = PURPLE
    pixels[1] = RED
    pixels[2] = YELLOW
    pixels[3] = CYAN
    pixels.show()
    sleep(0.6)
    pixels[0] = CYAN
    pixels[1] = PURPLE
    pixels[2] = RED
    pixels[3] = YELLOW
    pixels.show()
    sleep(0.6)
    pixels[0] = YELLOW
    pixels[1] = CYAN
    pixels[2] = PURPLE
    pixels[3] = RED
    pixels.show()
    sleep(0.6)

Der Beschleunigungssensor

Der Beschleunigungssensor LIS3DH findest Du in der Mitte der Projektplatine. Dieser Sensor kann die Beschleunigung die er erfährt messen. Ein einfaches Beispiel dafür ist die Erdbeschleunigung die immer senkrecht nach unten wirkt. Diese Kraft kannst du mit dem Sensor detektieren. Unten findest Du ein einfaches Testprogramm für den Sensor. Er liest die Beschleunigung in drei Raumrichtungen aus. Die Richtung z zeigt dabei senkrecht nach unten durch die Platine. Wenn das Programm funktioniert kannst du damit direkt die Erdbeschleunigung messen.

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board
import busio
import adafruit_lis3dh

i2c = busio.I2C(board.GP17, board.GP16)
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, address=0x19)


# Set range of accelerometer (can be RANGE_2_G, RANGE_4_G, RANGE_8_G or RANGE_16_G).
lis3dh.range = adafruit_lis3dh.RANGE_2_G

# Loop forever printing accelerometer values
while True:
    # Read accelerometer values (in m / s ^ 2).  Returns a 3-tuple of x, y,
    # z axis values.  Divide them by 9.806 to convert to Gs.
    x, y, z = [
        value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration
    ]
    print("x = %0.3f G, y = %0.3f G, z = %0.3f G" % (x, y, z))
    # Small delay to keep things responsive but give time for interrupt processing.
    time.sleep(0.1)

Das Display

Es ist soweit, jetzt kannst Du auch das Display ansteuern 🥳 Probiere einfach den Code unten aus. Auf dem Display sollte dann ein Text erscheinen. Dieser Text wird über den print Befehl ausgegeben. Du kannst das also ganz einfach in deine anderen Programme integrieren.

import board
import busio
import displayio
from adafruit_st7789 import ST7789
from time import sleep

# Release any resources currently in use for the displays
displayio.release_displays()

spi = busio.SPI(clock=board.GP14, MOSI=board.GP15, MISO=None)
spi.unlock()

display_bus = displayio.FourWire(spi, reset=board.GP13, command=board.GP12, chip_select=board.GP11, baudrate=62500000)

display = ST7789(
    display_bus,
    width=240,
    height=240,
    rowstart=80,
    rotation=180,
    backlight_pin=board.GP10,
)

# Make the display context

while True:
    print("Hier ist das Display :)")
    sleep(1)