Sie sind nicht angemeldet.

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 887

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 70

  • Nachricht senden

1

08.02.2016, 10:21

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« (08.02.2016, 14:58)


Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 887

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 70

  • Nachricht senden

2

22.04.2016, 09:18

Im Rahmen der Umstrukturierung habe ich dieses Tutorial aus dem Vorbereitungsbereich geholt. Das Video dazu fehlt allerdings noch, wird aber nachgeliefert :thumbup: