pacmd
...ist PulseAudio, nicht Alsa und das wird in der / den Lite-Versionen des Raspberry Pi OS (zum Glück) nicht verwendet.
Deshalb fragte ich Mic2022 nach cat /etc/rpi-issue, doch leider fehlt das wichtige Ende seiner Ausgabe.
pacmd
...ist PulseAudio, nicht Alsa und das wird in der / den Lite-Versionen des Raspberry Pi OS (zum Glück) nicht verwendet.
Deshalb fragte ich Mic2022 nach cat /etc/rpi-issue, doch leider fehlt das wichtige Ende seiner Ausgabe.
damit bin ich aufgewachsen
Dann hast Du ja wenigstens nicht alles falsch gemacht!
Herr Kaiser Sorry für den OT!
Nach 9 Stunden schon?
Was passiert, wenn Du die Auflösung default auf 60 FPS setzt?
Ist da die Abfrage if args.clear noch im finally-Block oder nur colorWipe(strip, Color(0, 0, 0), 10)?
Ich weiß nicht auf welche Lösemittel die verwendeten Druckmaterialien reagieren, aber ich würde pauschal sagen: Mal ganz kurz mit Sprühlack aus der Dose drüber gehen, sollte das gewünschte Ergebnis bringen.
Ah ok! Und was passiert jetzt mit den LEDs, wenn Du das Skript in der Crontab aktiviertst, den RPi neu startest und dann herunterfährst?
Ein gutes "auftreibendes Material" ist Luft oder
.
Zur Luft. Du hast ja einen Drucker und das Innenmaß des Röhrchens. Damit kannst Du einfach dünnwandig ein Hütchen / Kappe oder Zylinder (wie auch immer man das nennen könnte) drucken, das innen hohl und unten offen ist und Luft enthält.
Ich verstehe nicht was Du meinst! Kannst Du das bitte etwas ausführlicher beschreiben?
Wichtig ist ja was beim runterfahren passiert, wenn das Skript per Autostart gestartet wird und wie dann die LED reagieren. Dann sollte eigentlich das finally ohne der Abfrage (if args.clear) greifen. Dann könnte diese Abfrage ggf. sogar stören.
Dann vielleicht so
?
Wenn ich das script händisch starte, macht ein "-c" am Ende des Befehls, daß die LED's bei "Strg-C" ausgehen.
Wie genau meinst Du das und wann und wo gibst Du diesen Befehl ein?
"inconsistent use of tabs and spaces in indentation"
Du hast da irgendwo die Tab-Taste statt der 4 Leerzeichen bei den Einrückungen verwendet!
Einrückungen macht man immer mit 4 Leerzeichen pro Ebene. Die Tab-Taste kann man übrigens in vielen Editoren auch so einstellen, dass damit 4 Leerzeichen geschrieben werden.
Was spricht gegen das aktuelle Raspberry Pi OS statt Debian? Das basiert zwar auch auf Debian (11) Bullseye, aber mit sudo muss man da nicht mehr machen, was auch immer Du damit meinst, als bei Buster (10).
Hallo frakingFrank,
willkommen im Forum!
Siehe dazu auch hier: RE: Script Datei ausführen ohne Fenster mit Terminalanfrage und ggf. die weiteren Beiträge dort!
Häng mal ans Ende des Skripts noch
dran, also:
#!/usr/bin/env python3
# NeoPixel library strandtest example
# Author: Tony DiCola (tony@tonydicola.com)
#
# Direct port of the Arduino NeoPixel library strandtest example. Showcases
# various animations on a strip of NeoPixels.
import time
from rpi_ws281x import PixelStrip, Color
import argparse
# LED strip configuration:
LED_COUNT = 16 # Number of LED pixels.
LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!).
# LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 10 # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
# Define functions which animate LEDs in various ways.
def colorWipe(strip, color, wait_ms=50):
"""Wipe color across display a pixel at a time."""
for i in range(strip.numPixels()):
strip.setPixelColor(i, color)
strip.show()
time.sleep(wait_ms / 1000.0)
def theaterChase(strip, color, wait_ms=50, iterations=10):
"""Movie theater light style chaser animation."""
for j in range(iterations):
for q in range(3):
for i in range(0, strip.numPixels(), 3):
strip.setPixelColor(i + q, color)
strip.show()
time.sleep(wait_ms / 1000.0)
for i in range(0, strip.numPixels(), 3):
strip.setPixelColor(i + q, 0)
def wheel(pos):
"""Generate rainbow colors across 0-255 positions."""
if pos < 85:
return Color(pos * 3, 255 - pos * 3, 0)
elif pos < 170:
pos -= 85
return Color(255 - pos * 3, 0, pos * 3)
else:
pos -= 170
return Color(0, pos * 3, 255 - pos * 3)
def rainbow(strip, wait_ms=20, iterations=1):
"""Draw rainbow that fades across all pixels at once."""
for j in range(256 * iterations):
for i in range(strip.numPixels()):
strip.setPixelColor(i, wheel((i + j) & 255))
strip.show()
time.sleep(wait_ms / 1000.0)
def rainbowCycle(strip, wait_ms=20, iterations=5):
"""Draw rainbow that uniformly distributes itself across all pixels."""
for j in range(256 * iterations):
for i in range(strip.numPixels()):
strip.setPixelColor(i, wheel(
(int(i * 256 / strip.numPixels()) + j) & 255))
strip.show()
time.sleep(wait_ms / 1000.0)
def theaterChaseRainbow(strip, wait_ms=50):
"""Rainbow movie theater light style chaser animation."""
for j in range(256):
for q in range(3):
for i in range(0, strip.numPixels(), 3):
strip.setPixelColor(i + q, wheel((i + j) % 255))
strip.show()
time.sleep(wait_ms / 1000.0)
for i in range(0, strip.numPixels(), 3):
strip.setPixelColor(i + q, 0)
# Main program logic follows:
if __name__ == '__main__':
# Process arguments
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit')
args = parser.parse_args()
# Create NeoPixel object with appropriate configuration.
strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
# Intialize the library (must be called once before other functions).
strip.begin()
#print('Press Ctrl-C to quit.')
#if not args.clear:
#print('Use "-c" argument to clear LEDs on exit')
try:
while True:
print('Color wipe animations.')
colorWipe(strip, Color(255, 0, 0)) # Red wipe
colorWipe(strip, Color(0, 255, 0)) # Green wipe
colorWipe(strip, Color(0, 0, 255)) # Blue wipe
print('Theater chase animations.')
theaterChase(strip, Color(127, 127, 127)) # White theater chase
theaterChase(strip, Color(127, 0, 0)) # Red theater chase
theaterChase(strip, Color(0, 0, 127)) # Blue theater chase
print('Rainbow animations.')
rainbow(strip)
rainbowCycle(strip)
theaterChaseRainbow(strip)
except KeyboardInterrupt:
if args.clear:
colorWipe(strip, Color(0, 0, 0), 10)
finally:
colorWipe(strip, Color(0, 0, 0), 10)
Display More
und teste das damit mal!
Kommentiere die erste Zeile die nicht geht mal aus und sieh nach, ob die anderen funktionieren. Wenn das der Fall ist, dann schick die Ausgaben des nicht funktionierenden Befehls nach mal /dev/null.
Btw. Cron hat ein log, bzw. wird gelogt!
//Edit
Welche / wessen Crontab ist das eigentlich?
Aber wird diese Datei so in der aktuellen Linux-Version auch genutzt?
Ja.
Das script ansich wird beendet, aber die LED's bleiben an.
Klingt nach einem Fehler im Skript. Zeig das mal bitte in einem Codeblock ()! Vielleicht kann man da ja was machen.
Ein Archiv mit dem Ordner daten inklusive aller Unterordner und Dateien anlegen:
tar -cf archiv.tar daten/
Aber hier absoluten Pfad zum Ziel und absoluten Pfad zur Quelle verwenden!
Wie führe ich "colorWipe(strip, Color(0, 0, 0), 10)" bei poweroff aus?
Ich habe keine Ahnung was das ist, aber einen Befehl oder ein Skript kann man bei einem shutdown mit einer Systemd Service Unit ausführen. RE: Ein-/Ausschalten des Raspberry und der LED-Strips (Beitrag #23)
Zu Deiner ersten Frage kann ich momentan nichts sagen.
Als Linux-Neuling fällt mir das nicht gerade leicht, ...
Die Ubuntuusers haben ein gutes (deutschsprachiges) Wiki, das in den meisten Fällen auch auf andere Debian basierende Derivate übertragbar ist.
Im Fall von tar gibt es dieses Seite: https://wiki.ubuntuusers.de/tar/
Die Ausgabe #118 des The MagPi ist online verfügbar!
https://magpi.raspberrypi.com/issues/118
Und hier noch der Link zum Download: https://magpi.raspberrypi.com/issues/118/pdf/download
Einen schönen Feiertag und don't drink and drive!