Wie bekomme ich das Blinken weg?

2 Antworten

Hallo Paul! Es scheint, dass das Blinken in deinem Code durch die Verwendung von utime.sleep entsteht. Eine Möglichkeit, das Blinken loszuwerden, besteht darin, die Verzögerungen durch die Verwendung von Timern zu ersetzen. Dadurch kannst du die LEDs unabhängig voneinander steuern, ohne dass sie sich gegenseitig beeinflussen.Hier ist ein Beispiel, wie du das erreichen könntest, indem du die "Timer"-Klasse in MicroPython verwendest:

from machine import Pin, Timer

led_r = Pin(RED_LED_PIN, Pin.OUT)

led_g = Pin(GREEN_LED_PIN, Pin.OUT)

led_b = Pin(BLUE_LED_PIN, Pin.OUT)

timer_r = Timer()

timer_g = Timer()

timer_b = Timer()

def freq_r(timer):

   led_r.value(not led_r.value())

def freq_g(timer):

   led_g.value(not led_g.value())

def freq_b(timer):

   led_b.value(not led_b.value())

# Setze die gewünschten Intervalle für das Ein- und Ausschalten der LEDs

intervall_r_aus = 500

intervall_r_ein = 500

intervall_g_aus = 750

intervall_g_ein = 750

intervall_b_aus = 1000

intervall_b_ein = 1000

# Erzeuge Timer für jede LED und starte sie

timer_r.init(period=intervall_r_aus + intervall_r_ein, mode=Timer.PERIODIC, callback=freq_r)

timer_g.init(period=intervall_g_aus + intervall_g_ein, mode=Timer.PERIODIC, callback=freq_g)

timer_b.init(period=intervall_b_aus + intervall_b_ein, mode=Timer.PERIODIC, callback=freq_b)

hoffe es füktioniert so besser

Woher ich das weiß:Hobby – Programmiere selbst mit Python

sinterprinz 
Fragesteller
 14.07.2023, 11:53

Danke ich werd`s gleich mal ausprobieren und gucken ob es so klappt :)

1
sinterprinz 
Fragesteller
 14.07.2023, 12:10

also ich hab das jetzt mal so übernommen und die werte angepasst ,bekomme dann aber diesen error : Traceback (most recent call last):

 File "<stdin>", line 42, in <module>

TypeError: can't convert float to int <-- line 42 ist timer_r.init(...) und gesamt verstehe ich den befehl Timer nicht so wirklich, könntest du mir den versuchen zu erklären.

0
sinterprinz 
Fragesteller
 14.07.2023, 12:18
@sinterprinz

ich weißt warum es nicht geht ich benutzte keine ganzzahlen... mein fehler xD

0

Es blinkt, weil Du die LED an und aus schaltest. Schaltest Du nur an, bleibt sie an.


sinterprinz 
Fragesteller
 14.07.2023, 11:52

Es geht ja darum sie mit Frequenzmodulation , unterschiedlich hell zu machen daher brauche ich das schnelle an und ausschalten der led`s

0
W00dp3ckr  14.07.2023, 12:01
@sinterprinz

Was für ein Gerät ist das? Normalerweise ist die Frequenzmodulation nicht Deine Aufgabe. Wenn Du es aber so machen ulkst und wenn man ein Blinken sieht, sind die Intervalle viel zu lang.

0
sinterprinz 
Fragesteller
 14.07.2023, 12:12
@W00dp3ckr

Pi Pico , und ich weiß ja das die Intervalle zu lang sind da sie sich ja gegenseitig addieren , also rot geht an und aus ,dann blau , dann grün und erst dann wieder rot weißt du wie ich meine?

0
W00dp3ckr  14.07.2023, 12:14
@sinterprinz

Sag doch erstmal, was Du wirklich haben willst, und dann kann man Dir raten. Code ohne alles wird dann halt zum Ratespiel. Wenn Du nicht willst, dass die Dinger nacheinander blinken, dann musst Du erst anschalten und dann warten.

Hat der Pico keine PWM Pins?

0
sinterprinz 
Fragesteller
 14.07.2023, 12:23
@W00dp3ckr

Naja also ich hab ne Led kette ohne Steuergerät ,und den Pico zuhause Rumliegen hab die also verkabelt und angeschlossen ,da ich aber nur Strom ein und aus geben kann muss ich die eben schnell an und ausschalten das ich verschiedene Farben erzeugen kann ,aber durch diesen utime.sleep befehl warten die immer aufeinander und flackern dann eben oder sind halt zu hell(wenn ich aus und dann ein benutze) und mehr als den code von oben hab ich noch nicht bis auf eine While true schleife die alle definierten Funktionen nacheinander ausführt.

0
W00dp3ckr  14.07.2023, 12:29
@sinterprinz

Was schaltet Dein Pico? Musst aufpassen, dass er Dir nicht durchbrennt.

Also, Du kannst ja eine Methode schreiben, die erstmal alle gleichzeitig anschaltet, etwas wartet, dann alle gleichzeitig ausschaltet. Damit hast Du schonmal ein weißes Licht, das dunkler ist. Dann mach die Zeiten so kurz wie es geht.

UND SCHAU NACH, OB PICO WIRKLICH KEINE PWM PINS HAT.

NATÜRLICH hat er welche. Schau nach wie das geht, das löst alle Deine Probleme. Duckduckgo erstes Resultat scheint mir sinnvoll.

0
sinterprinz 
Fragesteller
 14.07.2023, 12:35
@W00dp3ckr

Wenn PWM port Pulse Width Modulation Ports sind dann alle GP pins PWM pins laut google aber ich weiß ehrlich gesagt nicht wie man die anders ansteuert . Und der Pico ist an mein PC angeschlossen und Schaltet nur Transistoren die dann 12 V schalten.

0
W00dp3ckr  14.07.2023, 13:01
@sinterprinz

Guck mal, Du machst hier jetzt seit mindestens ner Stunde rum, wieso googelst Du nicht ausgehend von meinem Tipp etwas, da gibt es Leute, die machen Blogposts mit Fotos und Beispielcode.

0