Forum: PC-Programmierung LED color cycling


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von phyton newbi (Gast)


Lesenswert?

Hello currently this is my phyton function for cycling through a led 
stripe with all colors:
1
def cycleLights(self):
2
                t = threading.currentThread()
3
                head  = 0               # Index of first 'on' pixel
4
                tail  = -10             # Index of last 'off' pixel
5
                color = 0xFF0000        # 'On' color (starts red)
6
7
                while getattr(t, "do_run", True):
8
                        self.strip.setPixelColor(head, color) # Turn on 'head' pixel
9
                        self.strip.setPixelColor(tail, 0)     # Turn off 'tail'
10
                        self.strip.show()                     # Refresh strip
11
                        time.sleep(1.0 / 80)             # Pause 20 milliseconds (~50 fps)
12
13
                        head += 1                        # Advance head position
14
                        if(head >= self.numpixels):           # Off end of strip?
15
                                head    = 0              # Reset to start
16
                                color >>= 1              # Red->green->blue->black
17
                                if(color == 0): color = 0xFF0000 # If black, reset to red
18
19
                        tail += 1                        # Advance tail position
20
                        if(tail >= self.numpixels): tail = 0  # Off end? Reset


But i didn't get all colors how can I achiev to circly through the whole 
spectrum???

von Jim M. (turboj)


Lesenswert?

That is much simpler to calculate in HSV color space, since you only 
change the hue value.

So select a color in hsv by changing hue, then translate back to RGB in 
order to control the LEDs.

von guest (Gast)


Lesenswert?

Thin about that line:
1
color >>= 1
and what color values it produce.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.