#include <Keypad.h>
#include <Servo.h>
#include <Arduino.h>
#include <U8x8lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
unsigned long previousMillisLED = 0;
unsigned long previousMillisPrint = 0;
const long intervalLed = 1000;
const long intervalPrint = 800;
//Hier wird die größe des Keypads definiert
const byte COLS = 4; //4 Spalten
const byte ROWS = 4; //4 Zeilen
//Die Ziffern und Zeichen des Keypads werden eingegeben:
char hexaKeys[ROWS][COLS]={
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
};
int servo_wert = 0;
Servo myservo;
byte colPins[COLS] = {2,3,4,5}; //Definition der Pins für die 4 Spalten
byte rowPins[ROWS] = {6,7,8,9};//Definition der Pins für die 4 Zeilen
char Taste; //Taste ist die Variable für die jeweils gedrückte Taste.
Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //Das Keypad kann absofort mit "Tastenfeld" angesprochen werden
byte Tasten_Status;
#define RELAIS4 A0
#define RELAIS3 A1
void setup(void) {
Serial.begin(9600);
myservo.attach(10); // attaches the servo on pin 9 to the servo object
pinMode(RELAIS4, OUTPUT);
digitalWrite(RELAIS4, HIGH);
pinMode(RELAIS4, OUTPUT);
digitalWrite(RELAIS4, HIGH);
u8x8.begin();
u8x8.setPowerSave(0);
Serial.begin(115200);
}
void loop(void){
u8x8.clear();
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.drawString(0,1,"Claas");
u8x8.setInverseFont(0);
u8x8.drawString(0,4,"Lexion 480");
u8x8.setInverseFont(0);
delay(1);
Taste = Tastenfeld.getKey(); //Mit Unter der Variablen pressedKey entspricht der gedrückten Taste
Tasten_Status = Tastenfeld.getState();
if (Tasten_Status > 0)
{
if (Taste == 'A')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(0); //Servo auf Position 30
delay(500); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
return;
if (Taste == 'B')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(30); //Servo auf Position 30
delay(500); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW);//Relais4 aus
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
return;
if (Taste == 'C')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(60); //Servo auf Position 30
delay(500); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW);//Relais4 aus
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
return;
if (Taste == 'D')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(90); //Servo auf Position 30
delay(500); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW);//Relais4 aus
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
return;
if (Taste == '#')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(120); //Servo auf Position 30
delay(500); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW);//Relais4 aus
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
if (Taste == '7')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
servo_wert = servo_wert+5;
myservo.write(servo_wert);
delay(2000); //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
}
else if (Taste == '8')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
servo_wert = servo_wert-5;
myservo.write(servo_wert);
delay(2000); //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
}
else if (Taste == '9')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
digitalWrite(RELAIS4, LOW);
digitalWrite(RELAIS3, LOW);
delay(2000); //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
}
else // Tastenstatus = 0, keine Taste gedrückt, dann alle Pumpen ausschalten
{
//Beide Relais und Pumpen ausschalten
digitalWrite(RELAIS3, HIGH);
digitalWrite(RELAIS4, HIGH);
}
if (Taste == '0')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(0); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(30); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(60); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(90); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4,LOW);//Relais4 aus
delay(500); //1sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
myservo.write(120); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500);} //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
if (Taste == '1')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(0); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1000);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(30); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1000);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(60); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1000);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(90); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1000);
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(120); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS3, LOW); //Relais3 an
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(1000); //3sek. warten
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(1000);
digitalWrite(RELAIS4, HIGH); //Relais3 an
delay(500);} //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
if (Taste == '2')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(0); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(500); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1500);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(30); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(500); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1500);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(60); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(500); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(500);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(90); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(500); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1500);
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(120); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS3, LOW); //Relais3 an
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(500); //3sek. warten
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(1500);
digitalWrite(RELAIS4, HIGH); //Relais3 an
delay(500);} //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
if (Taste == '3')
{ //Wenn eine Taste gedrückt wurde
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beginnt");
myservo.write(0); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(300); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1700);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(30); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(300); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1700);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(60); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(300); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1700);
digitalWrite(RELAIS3, HIGH); //Relais3 an
delay(500); //1sek. warten
myservo.write(90); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS4, LOW); //Relais3 an
digitalWrite(RELAIS3, LOW); //Relais3 an
delay(300); //3sek. warten
digitalWrite(RELAIS4, HIGH);//Relais4 aus
delay(1700);
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(500); //1sek. warten
myservo.write(120); //Servo auf Position 30
delay(300); //1sek. warten
digitalWrite(RELAIS3, LOW); //Relais3 an
digitalWrite(RELAIS4, LOW); //Relais3 an
delay(300); //3sek. warten
digitalWrite(RELAIS3, HIGH);//Relais4 aus
delay(1700);
digitalWrite(RELAIS4, HIGH); //Relais3 an
delay(500);} //1sek. warten
u8x8.clear();
u8x8.drawString(0,2,"Auftrag");
u8x8.drawString(0,4,"beendet");
}
}