You are not logged in.

Dear visitor, welcome to We-Mod-It | Das Forum von Moddern für Modder. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Scynd

1. Platz Enermax Casecon Contest

  • "Scynd" started this thread

Posts: 924

Date of registration: Mar 12th 2012

Location: München

Occupation: Maschinenbautechniker

Thanks: 74

  • Send private message

1

Monday, February 8th 2016, 10:21am

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

Source code

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








.

This post has been edited 18 times, last edit by "Scynd" (Feb 8th 2016, 2:58pm)


Scynd

1. Platz Enermax Casecon Contest

  • "Scynd" started this thread

Posts: 924

Date of registration: Mar 12th 2012

Location: München

Occupation: Maschinenbautechniker

Thanks: 74

  • Send private message

2

Friday, April 22nd 2016, 9:18am

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