#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int swOn = 4;
const int swOff = 5;
const String titel = "Motorsteuerung";
const String name = "Safa";
const String motorOn = "Motor ein ";
const String motorOff = "Motor aus ";
const int ledRed = 6;
const int ledBlue = 7;
const int rgbRed = 9;
const int rgbGreen = 10;
const int rgbBlue = 11;
const int potiPin = A0;
const int motorPin=3;
int adcVal = 0; // Wert für Umwandlung von 0-1023
int pwmVal=0; // Wert für PWM 0-255
int prozent=0; // prozentwert
void setup()
{
pinMode(swOn, INPUT_PULLUP);
pinMode(swOff, INPUT_PULLUP);
pinMode(ledRed, OUTPUT);
pinMode(ledBlue, OUTPUT);
pinMode (rgbRed, OUTPUT);
pinMode (rgbGreen, OUTPUT);
pinMode (rgbBlue, OUTPUT);
digitalWrite (rgbGreen, 1); // rgb grün off
digitalWrite (rgbRed, 1); // rgb rot off
digitalWrite (rgbBlue, 1); // rgb blau off
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print(titel);
lcd.setCursor(6, 1);
lcd.print(name);
delay(5000);
lcd.clear();
}
void loop()
{
if (digitalRead (swOn) == 0) //Motor eingeschaltet
{
digitalWrite (ledRed, 1); // rote led on
digitalWrite (ledBlue, 0); // blaue led off
lcd.setCursor(0, 0);
lcd.print(motorOn);
adcVal = analogRead (potiPin); //adcwert zeigen
lcd.setCursor(0, 1);
lcd.print(adcVal);
lcd.print(" ") ;
pwmVal=map(adcVal,0,1023,0,255); //PWM signal berechnen
lcd.setCursor(6, 1);
lcd.print(pwmVal);
lcd.print(" ") ;
prozent=map(pwmVal,0,255,0,100); // Prozent berechnen
lcd.print(prozent);
lcd.print("%");
lcd.print(" ");
analogWrite (motorPin,pwmVal);
if ((prozent>0) && (prozent<50))
setled (0,0,1);
if ((prozent>50)&& (prozent<=70))
setled (0,1,0);
if ((prozent>70)&& (prozent=100))
setled(1,0,0);
}
else //Motor ausgeschaltet
{
digitalWrite (ledRed, 0); // rote led off
digitalWrite (ledBlue, 1); // blaue led on
lcd.setCursor(0, 0);
lcd.print(motorOff);
lcd.setCursor(0, 1);
lcd.print(" ");
setled(0,0,0);
analogWrite (motorPin,0);
}
}
void setled (int valrgbR,int valrgbG, int valrgbB)
{
digitalWrite (rgbRed, !valrgbR);
digitalWrite (rgbGreen, !valrgbG);
digitalWrite (rgbBlue, !valrgbB);
}