Sie sind nicht angemeldet.

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.

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 924

Registrierungsdatum: 12. März 2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 74

  • Nachricht senden

1

Samstag, 5. September 2015, 22:21

Arduino Tutorial 2.1 - RGB LED: Farben per Taster wechseln








In diesem ersten Anwendungsfall geht es darum, einfach per PWM definierte Farben der RGB LEDs per Tastendruck zu wechseln.
Das Ganze wird über eine Variable umgesetzt, die bei Tastendruck um +1 hochgezählt wird. Über diese Variable werden dann verschiedene LED Farbeinstellungen abgerufen. Dabei wird der entsprechende PWM Wert jedes Farbkanals, mittels des analogWrite Befehls ausgegeben.

Programm 0 = LEDs aus
Programm 1 = LEDs leuchten Blau
Programm 2 = LEDs leuchten Rot
Programm 3 = LEDs leuchten Grün
Programm 4 = LEDs leuchten Lila
Programm 5 = LEDs leuchten Weiß


Will man wie hier gezeigt, viele LEDs mit dem Arduino ansteuern, muss man dazu Tansistoren verwenden, da der Arduino dazu zu wenig Strom und Spannung liefert. Der Transistor funktioniert hier wie ein Schalter, der die 12V Spannungsversorgung der einzelnen LED Farben sehr schnell an- und ausschält.



Ich habe mich bewusst für MOSFET Transistoren entschieden, da sie gängige Bauteile sind, ohne Vorwiderstand angeschlossen werden können, robust und leistungsstark sind. Allerdings sind sie auch etwas teurer, aber ich finde die Vorteile überwiegen für ein "Bastelprojekt". Falls ihr andere Transistoren verwenden wollt, informiert euch vorher gründlich, da die Pinbelegung und Pinbezeichnung anders sein können und evtl. ein Vorwiderstand in die Steuerleitung kommend vom Arduino muss.




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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Arduino Tutorial 2.1 - RGB LED Farben per Taster wechseln
 
In diesem Tutorial geht es darum einer RGB-LED Farben zuzuweisen und diese eingestellten Farbprogramme mit einem Taster durchzuschalten.
 
by Scynd 2015
http://www.scynd.de/tutorials/arduino-tutorials.html
*/

// Konstanten 
const int tasterPin = 2; 	// Taster an Pin 2 angeschlossen
const int rotPin = 10;   	// Rote LED an Pin 10 angeschlossen
const int gruenPin = 9;  	// Gruene LED an Pin 9 angeschlossen
const int blauPin = 11;  	// Blaue LED an Pin 11 angeschlossen

// Variablen
int lichtmodus = 0;      	// Variable für die verschiedenen festgelegten Farben
int tasterStatus = LOW;  	// Variable zu speichern des Tasterstatus


void setup()
{
  pinMode(tasterPin, INPUT);  	// Setzt den TasterPin als Eingang 
  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()
{ 
  // Abfrage ob der Taster gedrückt ist
  tasterStatus = digitalRead(tasterPin);
  
  // Wenn Taster gedrückt ist...
  if (tasterStatus == HIGH)
  {
	lichtmodus++; 	// Lichtmodus +1
	delay(300);   	// 300ms warten
  }
  
  //+++++++++++++++ LEUCHTPROGRAMME +++++++++++++++++
  
  // Modus 0 = Licht aus  
  if (lichtmodus == 0)
  {
	analogWrite(blauPin, 0);
	analogWrite(rotPin, 0);
	analogWrite(gruenPin, 0);	
  }
  
  // Modus 1 = Blau  
  else if (lichtmodus == 1)
  {
	analogWrite(blauPin, 255);
	analogWrite(rotPin, 0);
	analogWrite(gruenPin, 0);	
  }
  
  // Modus 2 = Rot  
  else if (lichtmodus == 2)
  {
	analogWrite(blauPin, 0);
	analogWrite(rotPin, 255);
	analogWrite(gruenPin, 0);
  }
  
  // Modus 3 = Grün  
  else if (lichtmodus == 3)
  {
	analogWrite(blauPin, 0);
	analogWrite(rotPin, 0);
	analogWrite(gruenPin, 255);	
  }
  
  // Modus 4 = Lila  
  else if (lichtmodus == 4)
  {
	analogWrite(blauPin, 255);
	analogWrite(rotPin, 255);
	analogWrite(gruenPin, 0);	
  }

  // Modus 5 = Weiß  
  else if (lichtmodus == 5)
  {
	analogWrite(blauPin, 255);
	analogWrite(rotPin, 255);
	analogWrite(gruenPin, 255);	
  }

  // Anzahl der Leutmodi auf 6 begrenzen. (0 bis 5)
  else
  {
	lichtmodus = 0;
  }
}



Nach dem setzen der Konstanten und Variablen, werden im setup die Ein- und Ausgänge deklariert.
Im loop angekommen, wird nun kontinuierlich der tasterPin überwacht und dessen Status (HIGH wenn gedrückt, oder LOW wenn nicht gedrückt) in der Variable tasterStatus gespeichert.
Wenn nach dem Drücken des Tasters, tasterStatus auf HIGH steht, wird die Variable lichtmodus um +1 (Lichtmodus++) hochgezählt und delay von 300ms pausiert, um ein prellen des Tasters zu verhindern.
Nun wird die Variable lichtmodus abgefragt und je nach dem welche Nummer gespeichert ist, wird das entsprechende Programm gestartet.
Hier wird nun per PWM jedem LED Kanal ein Wert von 0-255 zugeordnet, wobei 0 aus und 255 volle Leuchtkraft ist. So können auch Farben gemischt werden.
Zu guter letzt wird der lichtmodus auf 0 zurück gesezt, wenn er nicht zwischen 0 und 5 liegt. So können die Farbprogramme wieder von neuem durchgeschalten werden.


Das war es auch schon













Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »Scynd« (12. Februar 2016, 07:32)