#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int motor =3;
const int swein=4;
const int swaus=5;
const int ledred=6;
const int ledblue=7;
const int rgbred=9;
const int rgbgreen=10;
const int rgbblue=11;
const int Motor_Aus=0;
const int Motor_Ein=1;
const int Sw_Off=1;
const int Sw_On=0;
int status = Motor_Aus;
int adc=0;
int pwm=0;
int proz=0;
void setup() {
pinMode(swein, INPUT_PULLUP);
pinMode(swaus, INPUT_PULLUP);
pinMode(ledred, OUTPUT);
pinMode(ledblue, OUTPUT);
pinMode(rgbred, OUTPUT);
pinMode(rgbgreen, OUTPUT);
pinMode(rgbblue, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(5,0);
lcd.print("Motor");
lcd.setCursor(5,1);
lcd.print("Berat");
delay(5000);
lcd.clear();
}
void loop() {
if(digitalRead(swein)==Sw_On) status =Motor_Ein;
if (status ==Motor_Ein)
{
lcd.setCursor(0,0);
lcd.print("Status ein");
digitalWrite(ledred,1);
digitalWrite(ledblue,0);
adc= analogRead(A0);
pwm= map(adc,0,1023,0,255);
proz= map(pwm,0,255,0,100);
lcd.setCursor(0,1);
lcd.print("Drehzahl: ");
lcd.print(proz);
lcd.print("% ");
calcRgb(proz);
}
if (digitalRead(swaus)==Sw_On) status= Motor_Aus;
if (status==Motor_Aus)
{
lcd.setCursor(0,0);
lcd.print("Status aus");
digitalWrite(ledred,0);
digitalWrite(ledblue,1);
digitalWrite(rgbred,1);
digitalWrite(rgbgreen,1);
digitalWrite(rgbblue,1);
adc =0;
pwm =0;
proz =0;
calcRgb(proz);
lcd.setCursor(0,1);
lcd.print(" ");
}
analogWrite(motor,pwm);
}
void calcRgb(int prozVal)
{
if((prozVal>=0) && (prozVal<50))setRgb(0,0,1);
if((prozVal>=51) && (prozVal<70))setRgb(0,1,0);
if((prozVal>=71) && (prozVal<100))setRgb(1,0,0);
}
void setRgb(int valR, int valG, int valB)
{
digitalWrite(rgbred,!valR);
digitalWrite(rgbgreen,!valG);
digitalWrite(rgbblue,!valB);
}