LCD-Display RGB-LED und Servo

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten

LCD-Display RGB-LED und Servo

Beitrag von Stefan Rebl am Do März 03, 2016 3:00 pm

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.





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);
  }
  }
}
avatar
Stefan Rebl

Anzahl der Beiträge : 3
Anmeldedatum : 23.02.16

Nach oben Nach unten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben


 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten