Lieber Besucher, herzlich willkommen bei: We-Mod-It | Das Forum von Moddern für Modder.
Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert.
Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können.
Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang.
Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Arduino Tutorial 2.3 - Farbmischer per Drehpoti
2.3 - Farbmischer per Drehpoti
Mit einem Potentiometer kann man ja allerhand anstellen, wie etwa die Farbe unseres RGB LED Strips einstellen. Dazu muss man nur den aktuellen Wert des Potentiometers an einem Analog-In Pin messen und den Arduino ein bisschen Rechenarbeit machen lassen.
Teileliste
Anschlussplan
Code
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/*
Arduino Tutorial 2.3 - RGB LED Farbmischer mit Drehpoti
In diesem Tutorial geht es darum, eine Farbe mit Hilfe eines Drehpotenzometers einzustellen.
by Scynd 2015
http://www.scynd.de/tutorials/arduino-tutorials.html
*/
//Konstanten
const int rotPin = 10; // Rote LED an Pin 10 angeschlossen
const int gruenPin = 11; // Grüne LED an Pin 11 angeschlossen
const int blauPin = 9; // Blaue LED an Pin 9 angeschlossen
const int potiPin = A0 ; // Potenzometer am analogen Eingang Pin 0 angeschlossen
// Variablen
int rotVar = 0 ; // Variable zum speichern der Werte für die Ausgabe
int gruenVar = 0 ; // Variable zum speichern der Werte für die Ausgabe
int blauVar = 0 ; // Variable zum speichern der Werte für die Ausgabe
int potiVar = 0 ; // Variable zum speichern des Potentiometereingangs
void setup()
{
pinMode(rotPin, OUTPUT) ; // Setzt den LEDPin als Ausgang
pinMode(gruenPin, OUTPUT) ; // Setzt den LEDPin als Ausgang
pinMode(blauPin, OUTPUT) ; // Setzt den LEDPin als Ausgang
}
void loop()
{
potiVar = analogRead(potiPin) ;
if(potiVar < 341) // Unteres Drittel des Potenziometerbereichs (0-340)
{
potiVar = (potiVar * 3) / 4; // Den Wert auf 0-255 umrechnen
rotVar = 256 - potiVar; // Rot von an nach aus
gruenVar = potiVar; // Grün von aus nach an
blauVar = 0; // Blau aus
}
else if(potiVar < 682) // Mittleres Drittel des Potenziometerbereichs (341-681)
{
potiVar = ( (potiVar-341) * 3) / 4; // Den Wert auf 0-255 umrechnen
rotVar = 0; // Rot aus
gruenVar = 256 - potiVar; // Grün von an nach aus
blauVar = potiVar; // Blau von aus nach an
}
else // Oberes Drittel des Potenziometerbereichs (682-1023)
{
potiVar = ( (potiVar-683) * 3) / 4; // Den Wert auf 0-255 umrechnen
rotVar = potiVar; // Rot von aus nach an
gruenVar = 0; // Grün aus
blauVar = 256 - potiVar; // Blau von an nach aus
}
analogWrite(rotPin, rotVar); // Gibt die Variable mit PWM aus
analogWrite(gruenPin, gruenVar); // Gibt die Variable mit PWM aus
analogWrite(blauPin, blauVar); // Gibt die Variable mit PWM aus
}
|
Nach dem setzen der Konstanten und Variablen, werden im setup die Ein- und Ausgänge deklariert.
Im loop angekommen, wird der Analoge Pin, an dem das Potentiometer angeschlossen ist abgefragt und der Wert, der sich zwischen 0 und 1023 bewegt in der Variable potiVar gespeichert. Jetzt wird abgefragt wie groß der Wert ist und der jeweilige Fall ausgeführt.
Angenommen der Wert ist 578, dann tritt der Fall else if(potiVar < 682) in Kraft, da der Wert kleiner 682, aber größer als 341 ist.
Hier wird der Wert jetzt heruntergerechnet damit er zwischen 0 und 255 liegt und so als PWM Wert augegeben werden kann. Jetzt wird der Wert in die Variablen der drei LEDs gespeichert, die dann die Farbe ergeben.
Ganz unten im Sketch werden nun die drei LED Variablen mit dem analogWrite Befehl als PWM Wert an die LEDs ausgegeben.
VIDEO
Das war es auch schon
.
Dieser Beitrag wurde bereits 18 mal editiert, zuletzt von »Scynd« (8. Februar 2016, 14:58)
Im Rahmen der Umstrukturierung habe ich dieses Tutorial aus dem Vorbereitungsbereich geholt. Das Video dazu fehlt allerdings noch, wird aber nachgeliefert