#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int swReset = 2;
const int ledLila = 3;
const int ledRed = 4;
const int ledYel = 5;
const int ledGreen = 6;
int adc = 6;
int umin = 6;
int pwm = 6;
int fnot = 6;
int fblink = 6;
void setup() {
attachInterrupt(digitalPinToInterrupt(swReset), ISR_Reset, FALLING);
pinMode(swReset, INPUT_PULLUP);
pinMode(ledLila, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledYel, OUTPUT);
setLed(0,0,0);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" Leistungstest");
lcd.setCursor(4,1);
lcd.print("My Name");
delay(5000);
lcd.clear();
}
void loop() {
if(fnot)
{
lcd.setCursor(0,0);
lcd.print("Notabschaltung!!!");
setLed(1,1,1);
}
else
{
lcd.setCursor(0,0);
lcd.print("Drehzahl: ");
adc = analogRead(A0);
umin = map(adc,0,1023,0,500);
pwm = map(adc,0,1023,0,255);
calcLed(umin);
lcd.setCursor(0,1);
lcd.print(umin);
lcd.print(" U/min ");
analogWrite(ledLila,pwm);
}
}
void calcLed(int u)
{
if(u==0)setLed(0,0,0);
if((u>0) && (u<=400))setLed(0,0,1);
if((u>400) && (u<450))setLed(0,1,0);
if(u>=450)setLed(1,0,0);
if(u==500)fnot = 1;
}
void setLed(int valR,int valY,int valG)
{
digitalWrite(ledRed,valR);
digitalWrite(ledYel,valY);
digitalWrite(ledGreen,valG);
}
void ISR_Reset()
{
fnot = 0;
}