Bluetooth: 5. Steuern einer RGB-LED


Gepostet September 2015, Kategorie: Bluetooth HC05


Bluetooth: 5. Steuern einer RGB-LED

In diesen Teil wird gezeigt, wie man eine LED-RGB stufenlos über das Smartphone steuern kann. Die RGB-LED wird durch PWM-Ausgänge des Arduinos angesteuert.



Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : div in Entity, line: 87 in /users/robfro/www/php/content-post-htm.php on line 5
  • Eine RGB-LED hat meist vier Anschlüsse. Drei für die jeweiligen Farben und eine gemeinsame Kathode oder Anode.
  • Die diesem Beispiel verwende ich eine LED mit einer gemeinsamen Kathode.
  • Mit Hilfe der Pulsweitenmodulation (PWM) lassen sich verschiedene Helligkeitsstufen einer LED erzeugen.
  • Mit Hilfe von 3 PWM-Ausgängen (für jede Farbe) lassen sich alle möglichen Farbkombinationen mit Hilfe einer RGB-LED anzeigen.
  • Resultierender Schaltplan:
    Schaltplan
  • Vereinbarungen über die Nachricht
    • Handy sendet die gewünschte Farbe als 3 Dezimalzahlen (0-255) in folgender Form: "SET255,64,0;"
    • Der Arduino antwortet mit einem "OK;"
  • Programmierung des Arduinos:
    • Pins der drei Farben als Array: int rgb[] = {5, 6, 9};
    • Setze alle drei Pins als Ausgang, setze sicherheitshalber deren PWM-Wert auf 0 [HILFE]
    • Die Nachricht wird empfangen, wie bei der LED.
    • Wenn c == ';'
      • Wenn msg mit "SET" beginnt: [HILFE]
        • Entferne die ersten 3 Zeichen aus msg (Bsp: msg =>"255,64,0") [HILFE]
        • int index = Position des nächsten Kommas in msg (Bsp: index=>3) [HILFE] 
        • String color = Die Zahl als Zeichenkette des Wertes von Rot (Bsp: "255") (Ein Teil der Zeichenkette msg von einschließlich 0 bis ausschließlich index)
        • int val = Der Wert von Rot (Bsp: 255) [HILFE]
        • Setze den PWM-Wert des "roten" Pins
           
        • Entferne den roten Anteil und das Komma aus msg (Bsp: msg =>"64,0")
        • index = Position des nächsten Kommas (Bsp: 2)
        • color = Zeichenkette des grünen Wertes (Bsp: "64")
        • val = Der grüne Wert
        • Setzten des grünen PWMs
           
        • Entferne den grünen Anteil und das Komma aus msg (Bsp: "0")
        • val = msg als Zahl
        • Setzen des blauen PWMs
           
        • Schicke ein OK!
    • [Lösung]
  • Handy-Programmierung
    • Designer:
      • ListPicker1: Wählen der Bluetooth-Verbindung, wie bei LED
      • SliderR, SliderG, SliderG:
        • Min: 0
        • Max: 255
        • Zum Wählen der Farbe
      • Button1: Absenden der eingestellten Farbe
      • Canvas1: Zeigt die eingestellte Farbe als Hintergundfarbe an
      • BluetoothClient1, Notifier1, Clock1 (250 ms)
    • Programmierung:
      • initialize gloabl msg = ""
      • initialize gloabl msg = ""
      • when Screen1.Initialize: wie bei der LED
      • when ListPicker1.BeforePicking: wie bei der LED
      • when ListPicker1.AfterPicking: wie bei der LED
      • when Clock1.Timer: wie bei der LED
MIT Programm Wenn einer der drei Slider bewegt wird, dann führe die Prozedur
updateColor aus

Prozedur updateColor:
  Erstelle eine Farbe aus den drei Slider-Werten und setze diese als Hintergrundfarbe des Canvas1

Wenn Absenden geklickt wird:
  Erstelle eine Zeichenkette aus Set, Kommas, Semikolon und den drei Slider-Werten und sende
  diese an den Arduino

  Setze den ListPicker auf Warte auf Antwort!

Download: [AIA] [APK]

Wetterdaten Eilenburg
Temperatur: 10.2 °C
Luftdruck: 1010.8 hPa
Luftfeuchte: 56 %
[mehr]