Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [ hier ] und treten Sie heute bei!
HueDial
Dieses Beispiel steuert die Farbe einer RGB-LED basierend auf der Position eines Drehknopfs. Verschiedene Positionen des Knopfs entsprechen verschiedenen HUE-Werten, die dann in RGB-Farbwerte übersetzt werden, was zu einer Farbänderung der RGB-LED führt.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Elite Explorer Kit |
300+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
- |
|
Verdrahtung
Schaltplan
Code
Bemerkung
Sie können die Datei
03_huedial.inodirekt unter dem Pfadelite-explorer-kit-main\fun_project\03_huedialöffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
1/*
2 This code controls an RGB LED using a potentiometer
3 to change the hue of the color.
4
5 Board: Arduino Uno R4
6 Component: RGB LED and Potentiometer
7*/
8
9// Define RGB LED pins
10const int redPin = 12; // Red channel
11const int greenPin = 10; // Green channel
12const int bluePin = 9; // Blue channel
13
14// Define the pin for the knob
15const int knobPin = A0;
16
17void setup() {
18 // Initialize RGB LED pins as outputs
19 pinMode(redPin, OUTPUT);
20 pinMode(greenPin, OUTPUT);
21 pinMode(bluePin, OUTPUT);
22}
23
24void loop() {
25 // Read the value of the knob
26 int knobValue = analogRead(knobPin);
27
28 // Normalize the knob value to the range 0-1
29 float hueValue = (float)knobValue / 1023.0;
30
31 // Convert the normalized value to a HUE value (0-360)
32 int hue = (int)(hueValue * 360);
33
34 // Convert the HUE value to RGB values
35 int red, green, blue;
36 HUEtoRGB(hue, &red, &green, &blue);
37
38 // Update the RGB LED with the new color values
39 setColor(red, green, blue);
40}
41
42// Function to set the RGB LED color
43void setColor(int red, int green, int blue) {
44 analogWrite(redPin, red);
45 analogWrite(greenPin, green);
46 analogWrite(bluePin, blue);
47}
48
49// Function to convert a hue value to RGB values
50void HUEtoRGB(int hue, int* red, int* green, int* blue) {
51 float h = (float)hue / 60.0;
52 float c = 1.0;
53 float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0));
54 float r, g, b;
55 if (h < 1.0) {
56 r = c;
57 g = x;
58 b = 0;
59 } else if (h < 2.0) {
60 r = x;
61 g = c;
62 b = 0;
63 } else if (h < 3.0) {
64 r = 0;
65 g = c;
66 b = x;
67 } else if (h < 4.0) {
68 r = 0;
69 g = x;
70 b = c;
71 } else if (h < 5.0) {
72 r = x;
73 g = 0;
74 b = c;
75 } else {
76 r = c;
77 g = 0;
78 b = x;
79 }
80 float m = 1.0 - c;
81 *red = (int)((r + m) * 255);
82 *green = (int)((g + m) * 255);
83 *blue = (int)((b + m) * 255);
84}
Wie funktioniert das?
Hier ist eine detaillierte Erklärung des Codes:
Globale Variablendefinitionen:
redPin,greenPinundbluePin: Diese definieren die PWM-Pins, die jeweils mit den roten, grünen und blauen LEDs verbunden sind.KNOB_PIN: Definiert den analogen Eingangspin, der mit dem Drehknopf verbunden ist.setup():Stellen Sie die Pins für die RGB-LED als Ausgang ein. Standardmäßig sind analoge Pins als Eingänge gesetzt, daher ist es nicht notwendig, den Eingangsmodus für den Pin des Knopfes einzustellen.
loop():Lesen Sie den Wert des Drehknopfs. Dieser Wert reicht von 0 bis 1023. Normalisieren Sie den Wert des Knopfs auf einen Bereich von 0-1. Konvertieren Sie den normalisierten Wert in einen HUE-Wert im Bereich von 0-360. Konvertieren Sie den HUE-Wert in RGB-Werte. Aktualisieren Sie die Farbe der LED mit diesen RGB-Werten.
setColor():Setzen Sie die passenden PWM-Werte für jeden LED-Pin mit der Funktion
analogWrite(), um die Farbe der RGB-LED einzustellen.HUEtoRGB():Diese Funktion konvertiert HUE-Werte in RGB-Werte mit der HSL-zu-RGB-Konvertierungsmethode, konzentriert sich jedoch nur auf die HUE-Komponente und hält Sättigung und Helligkeit bei 100%. Der Algorithmus ist in 6 Stufen unterteilt, wobei jede 60 Grad abdeckt. Es berechnet RGB-Werte für jede HUE-Stufe und skaliert dann diese Werte auf einen Bereich von 0-255, was der erwarteten Spanne für die Funktion
analogWrite()entspricht.