LCD-Display RGB-LED und Servo
Seite 1 von 1
LCD-Display RGB-LED und Servo
Bei diesem Projekt soll eine RGB-LED nach Knopfdruck in verschiedenen Farben leuchten.
Gleichzeitig wird am LCD-Display angezeigt welche Farbmischung gerade aktiv ist.
Der Servomotor wird über einen Joystick gesteuert.
Detailfunktion:
-Start: Display schreibt "bereit..."
-1. mal Knopf drücken: Farbmischung startet und läuft 2x durch. Anschließend geht das Gerät in den Servobetrieb und der Servo kann über den Joystick bewegt werden.
-Servobetrieb Knopf drücken: Betrieb wird gestoppt und am Display steht: "GESTOPPT..."
-"GESTOPPT" bei Knopfdruck fängt die Farbmischung erneut an, nach einem Durchlauf geht das Gerät wieder in den Servobetrieb.
-es wird immer mitgezählt wie oft die Farbmischung bereits durchgelaufen ist. nach jedem Durchlauf wird dies auch angezeigt.
Gleichzeitig wird am LCD-Display angezeigt welche Farbmischung gerade aktiv ist.
Der Servomotor wird über einen Joystick gesteuert.
Detailfunktion:
-Start: Display schreibt "bereit..."
-1. mal Knopf drücken: Farbmischung startet und läuft 2x durch. Anschließend geht das Gerät in den Servobetrieb und der Servo kann über den Joystick bewegt werden.
-Servobetrieb Knopf drücken: Betrieb wird gestoppt und am Display steht: "GESTOPPT..."
-"GESTOPPT" bei Knopfdruck fängt die Farbmischung erneut an, nach einem Durchlauf geht das Gerät wieder in den Servobetrieb.
-es wird immer mitgezählt wie oft die Farbmischung bereits durchgelaufen ist. nach jedem Durchlauf wird dies auch angezeigt.
- Code:
//Allgemeines:
int Programm =0; // HilfsVariable für das aktive Unterprogramm
int Programmwahl = A2; // Eingang für den Taster "Programmwahl"
// ###############
// Display und Led
// ###############
#include <LiquidCrystal.h>
int Gruen = 10; // Grünen LED-Anschluss an 10 anschließen
int Blau = 9; // Blauen LED-Anschluss an 9 anschließen
int Rot = 8; // Roten LED-Anschluss an 8 anschließen
int Durchlaufanzahl = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int zeit = 150; // Setzt die Dauer fest, wie lange die einzelnen Farben aktiv sind.
int LowLevel = 0; // um die Helligkeit
int HighLevel = 100; // zu regulieren
// ###############
// Servo und Joystick //Werte für den Servo festlegen
// ###############
#include<Servo.h>
Servo Servo1;
const int Achse1 = A0;
int Winkel = 250;
int sensorValue_1 = 0;
int outputValue_1 = 0;
void setup() {
// ###############
// Display und Led
// ###############
lcd.begin(16, 2);
pinMode(Gruen,OUTPUT);
pinMode(Blau, OUTPUT);
pinMode(Rot,OUTPUT);
Durchlaufanzahl = 0; // Variable um anzuzeigen wie oft die Farbmischung bereits durchlaufen wurde.
lcd.setCursor(0,0);
pinMode(A2,INPUT);
lcd.clear();
lcd.setCursor(0,2);
lcd.print("bereit...");
// ###############
// Servo und Joystick
// ###############
Serial.begin(9600);
Servo1.attach(7); //Servo an Pin 7 anschließen!
}
void loop() {
//Programmwahl:
// start des Farbdurchlaufs..
Programmwahl = analogRead(A2);
if(Programmwahl == 0)
{
Programm = Programm +1;
if(Programm == 5){
Programm = 0;
}
lcd.clear();
lcd.setCursor(0,2);
lcd.print("warte...");
}
// ###############
// Display und Led (Programm == 1)
// ###############
//LED blinken lassen
while(Programm == 1) // Farbmischung START
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("LEDs blinken...");
analogWrite(Gruen,LowLevel);
analogWrite(Blau,LowLevel);
analogWrite(Rot,HighLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: Rot");
delay(zeit);
analogWrite(Gruen,LowLevel);
analogWrite(Blau,HighLevel);
analogWrite(Rot,LowLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: Blau");
delay(zeit);
analogWrite(Gruen,HighLevel);
analogWrite(Blau,LowLevel);
analogWrite(Rot,LowLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: Gruen");
delay(zeit);
analogWrite(Gruen,HighLevel);
analogWrite(Blau,HighLevel);
analogWrite(Rot,LowLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: GruenBlau");
delay(zeit);
lcd.setCursor(0,0);
lcd.print(" ");
analogWrite(Gruen,HighLevel);
analogWrite(Blau,LowLevel);
analogWrite(Rot,HighLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: GruenRot");
delay(zeit);
lcd.setCursor(0,0);
lcd.print(" ");
analogWrite(Gruen,LowLevel);
analogWrite(Blau,HighLevel);
analogWrite(Rot,HighLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: BlauRot");
delay(zeit);
lcd.setCursor(0,0);
lcd.print(" ");
analogWrite(Gruen,HighLevel);
analogWrite(Blau,HighLevel);
analogWrite(Rot,HighLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: Alle");
delay(zeit);
lcd.setCursor(0,0);
lcd.print(" ");
analogWrite(Gruen,LowLevel);
analogWrite(Blau,LowLevel);
analogWrite(Rot,LowLevel);
lcd.setCursor(0,0);
lcd.print("Farbe: Keine");
delay(zeit);
Durchlaufanzahl = Durchlaufanzahl +1;
if(Durchlaufanzahl <= 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Durchlauf: ");
lcd.print(Durchlaufanzahl);
delay(2000);
lcd.clear();
}
Programmwahl = analogRead(A2);
if(Programmwahl == 0)
{
Programm =0;
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Programm: ");
lcd.print(Programm);
}
if(Durchlaufanzahl >= 2) // wenn die Farbmischung 2x durchgelaufen ist, wird in den SERVO-Betrieb umgeschalten
{
Programm = 2;
lcd.clear();
lcd.setCursor(0,2);
lcd.print("wechsle zu Servo: ");
lcd.setCursor(0,0);
lcd.print("Durchlauf: ");
lcd.print(Durchlaufanzahl);
delay(2000);
}
}
// ###############
// Servo und Joystick // steuerung des SERVO´s
// ###############
if(Programm == 2)
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Servo aktiv... ");
sensorValue_1 = analogRead(A0)-331;
Winkel = map(sensorValue_1, 0, 1023, 10,540);
Servo1.write(Winkel);
Serial.print("sensor = ");
Serial.print(Programm);
Serial.print("\t output = ");
Serial.println(outputValue_1);
delay(5);
Programmwahl = analogRead(A2);
if(Programmwahl == 0) // wenn der Knopf gedrückt wird, wärend des Servobetriebs soll das Programm Pausiert werden
{
Programm =0;
lcd.clear();
lcd.setCursor(0,2);
lcd.print("GESTOPPT...");
delay(500);
}
}
}
Stefan Rebl- Anzahl der Beiträge : 3
Anmeldedatum : 23.02.16
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten
|
|