#include <LiquidCrystal.h> //Dołączenie bilbioteki
#include <EEPROM.h>
LiquidCrystal lcd(10, 9, 8, 7, 6, 5); //Informacja o podłączeniu nowego wyświetlacza
int menu = 17;
int up = 16;
int down = 15;
int start = 14;
int wyjscie = 11;
int menulevel = 0;
int Z1; //= 0;
int T1 = 0;
int Z2 = 0;
int Zinc = 20; //co ile zwiekszac parametr "Z"
int Tinc = 20; //co ile zwiekszac parametr "Z"
int Zmax = 500;
int Tmax = 500;
int Pfaz = 5;
int Pfazinc = 5; //przesuniecie fazowe
int Pfazmax = 300;
int Z1_E = 1;
int T1_E = 5;
int Z2_E = 9;
int Pfaz_E = 13;
int delayTime = 20;
bool state = 0;
bool stateM = 0;
void setup() {
// put your setup code here, to run once:
pinMode(start, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
pinMode(up, INPUT_PULLUP);
pinMode(menu, INPUT_PULLUP);
pinMode(wyjscie, OUTPUT);
lcd.begin(16, 2); //Deklaracja typu
lcd.clear();
Z1 = EEPROM.read(Z1_E);
if ((Z1 == 0) or (Z1 == 255)) {
Z1 = 0;
}
else {
Z1 = Z1;
}
Z2 = EEPROM.read(Z2_E);
if ((Z2 == 0) or (Z2 == 255)) {
Z2 = 0;
}
else {
Z2 = Z2;
}
T1 = EEPROM.read(T1_E);
if ((T1 == 0) or (T1 == 255)) {
T1 = 0;
}
else {
T1 = T1;
}
Pfaz = EEPROM.read(Pfaz_E);
if ((Pfaz == 0) or (Pfaz == 255)){
Pfaz = 0;
}
else {
Pfaz = Pfaz;
}
delay(1000); //zmienic/usunac
if (isButtonPressed(menu)) {
stateM = 1;
lcd.clear();
int menulevel = menulevel + 1;
switch (menulevel) {
case 1:
while (menulevel == 1) {
lcd.setCursor(0, 0);
if ((Pfaz < 100) and (Pfaz >= 10)){
lcd.print("0");
lcd.print(Pfaz);
}
else if (Pfaz < 10){
lcd.print("00");
lcd.print(Pfaz);
}
else {
lcd.print(Pfaz);
}
//lcd.print(Z1);
lcd.setCursor(0, 1);
lcd.print("Pfaz");
while (isButtonPressed(menu) and (stateM == 1)) {
delay(5);
}
stateM = 0;
if (isButtonPressed(up)) {
//state = !state;
Pfaz = Pfaz + Pfazinc;
if (Pfaz > Pfazmax) {
Pfaz = Pfazmax;
}
lcd.setCursor(0, 0);
if ((Pfaz < 100) and (Pfaz >= 10)) {
lcd.print("0");
lcd.print(Pfaz);
}
else if (Pfaz < 10){
lcd.print("00");
lcd.print(Pfaz);
}
else {
lcd.print(Pfaz);
}
//lcd.print(Z1);
EEPROM.update(Pfaz_E, Pfaz);
while (isButtonPressed(up)) {
delay(5);
}
}
if (isButtonPressed(down)) {
//state = !state;
Pfaz = Pfaz - Pfazinc;
if (Pfaz <= 0) {
Pfaz = 0;
}
lcd.setCursor(0, 0);
if ((Pfaz < 100) and (Pfaz >= 10)){
lcd.print("0");
lcd.print(Pfaz);
}
else if (Pfaz < 10){
lcd.print("00");
lcd.print(Pfaz);
}
else {
lcd.print(Pfaz);
}
//lcd.print(Z1);
EEPROM.update(Pfaz_E, Pfaz);
while (isButtonPressed(down)) {
delay(5);
}
}
if (isButtonPressed(menu)) {
//state = !state;
lcd.clear();
menulevel = menulevel + 1;
stateM = 1;
while (isButtonPressed(menu)) {
delay(5);
}
break;
}
}
}
}
lcd.setCursor(0, 0); //Ustawienie kursora
if ((Z1 < 100) and (Z1 > 10)) {
lcd.print("0");
lcd.print(Z1);
}
else if (Z1 < 10) {
lcd.print("00");
lcd.print(Z1);
}
else {
lcd.print(Z1);
}
lcd.print("_");
if ((T1 < 100) and (T1 > 10)) {
lcd.print("0");
lcd.print(T1);
}
else if (T1 < 10) {
lcd.print("00");
lcd.print(T1);
}
else {
lcd.print(T1);
}
lcd.print("_");
if ((Z2 < 100) and (Z2 > 10)) {
lcd.print("0");
lcd.print(Z2);
}
else if (Z2 < 10) {
lcd.print("00");
lcd.print(Z2);
}
else {
lcd.print(Z2);
}
//lcd.print("_");
//lcd.print(T1);
//lcd.print("_");
//lcd.print(Z2);
lcd.setCursor(0, 1);
lcd.print("Z1");
lcd.setCursor(4, 1);
lcd.print("T1");
lcd.setCursor(8, 1);
lcd.print("Z2");
}
void loop() {
lcd.setCursor(0, 0); //Ustawienie kursora
if ((Z1 < 100) and (Z1 > 10)) {
lcd.print("0");
lcd.print(Z1);
}
else if (Z1 < 10) {
lcd.print("00");
lcd.print(Z1);
}
else {
lcd.print(Z1);
}
lcd.print("_");
if ((T1 < 100) and (T1 > 10)) {
lcd.print("0");
lcd.print(T1);
}
else if (T1 < 10) {
lcd.print("00");
lcd.print(T1);
}
else {
lcd.print(T1);
}
lcd.print("_");
if ((Z2 < 100) and (Z2 > 10)) {
lcd.print("0");
lcd.print(Z2);
}
else if (Z2 < 10) {
lcd.print("00");
lcd.print(Z2);
}
else {
lcd.print(Z2);
}
//lcd.print("_");
//lcd.print(T1);
//lcd.print("_");
//lcd.print(Z2);
lcd.setCursor(0, 1);
lcd.print("Z1");
lcd.setCursor(4, 1);
lcd.print("T1");
lcd.setCursor(8, 1);
lcd.print("Z2");
if (isButtonPressed(menu)) {
stateM = 1;
lcd.clear();
int menulevel = menulevel + 1;
switch (menulevel) {
case 1:
while (menulevel == 1) {
lcd.setCursor(0, 0);
if ((Z1 < 100) and (Z1 > 10)){
lcd.print("0");
lcd.print(Z1);
}
else if (Z1 < 10){
lcd.print("00");
lcd.print(Z1);
}
else {
lcd.print(Z1);
}
//lcd.print(Z1);
lcd.setCursor(0, 1);
lcd.print("Z1");
while (isButtonPressed(menu) and (stateM == 1)) {
delay(5);
}
stateM = 0;
if (isButtonPressed(up)) {
//state = !state;
//skokprzycisku:
Z1 = Z1 + Zinc;
if (Z1 > Zmax) {
Z1 = Zmax;
}
lcd.setCursor(0, 0);
if ((Z1 < 100) and (Z1 > 10)) {
lcd.print("0");
lcd.print(Z1);
}
else if (Z1 < 10){
lcd.print("00");
lcd.print(Z1);
}
else {
lcd.print(Z1);
}
//lcd.print(Z1);
EEPROM.update(Z1_E, Z1);
while (isButtonPressed(up)) {
delay(20);
//goto skokprzycisku;
}
}
if (isButtonPressed(down)) {
//state = !state;
Z1 = Z1 - Zinc;
if (Z1 <= 0) {
Z1 = 0;
}
lcd.setCursor(0, 0);
if ((Z1 < 100) and (Z1 > 10)){
lcd.print("0");
lcd.print(Z1);
}
else if (Z1 < 10){
lcd.print("00");
lcd.print(Z1);
}
else {
lcd.print(Z1);
}
//lcd.print(Z1);
EEPROM.update(Z1_E, Z1);
while (isButtonPressed(down)) {
delay(5);
}
}
if (isButtonPressed(menu)) {
//state = !state;
lcd.clear();
menulevel = menulevel + 1;
stateM = 1;
break;
}
}
case 2:
while (menulevel == 2) {
lcd.setCursor(4, 0);
if ((T1 < 100) and (T1 > 10)){
lcd.print("0");
lcd.print(T1);
}
else if (T1 < 10){
lcd.print("00");
lcd.print(T1);
}
else {
lcd.print(T1);
}
//lcd.print(T1);
lcd.setCursor(4, 1);
lcd.print("T1");
while (isButtonPressed(menu) and (stateM == 1)) {
delay(5);
}
stateM = 0;
if (isButtonPressed(up)) {
//state = !state;
T1 = T1 + Tinc;
if (T1 > Tmax) {
T1 = Tmax;
}
lcd.setCursor(4, 0);
if ((T1 < 100) and (T1 > 10)) {
lcd.print("0");
lcd.print(T1);
}
else if (T1 < 10){
lcd.print("00");
lcd.print(T1);
}
else {
lcd.print(T1);
}
EEPROM.update(T1_E, T1);
while (isButtonPressed(up)) {
delay(5);
}
}
if (isButtonPressed(down)) {
//state = !state;
T1 = T1 - Tinc;
if (T1 <= 0) {
T1 = 0;
}
lcd.setCursor(4, 0);
if ((T1 < 100) and (T1 > 10)){
lcd.print("0");
lcd.print(T1);
}
else if (T1 < 10){
lcd.print("00");
lcd.print(T1);
}
else {
lcd.print(T1);
}
//lcd.print(T1);
EEPROM.update(T1_E, T1);
while (isButtonPressed(down)) {
delay(5);
}
}
if (isButtonPressed(menu)) {
//state = !state;
lcd.clear();
menulevel = menulevel + 1;
stateM = 1;
break;
}
}
case 3:
while (menulevel == 3) {
lcd.setCursor(8, 0);
if ((Z2 < 100) and (Z2 > 10)){
lcd.print("0");
lcd.print(Z2);
}
else if (Z2 < 10){
lcd.print("00");
lcd.print(Z2);
}
else {
lcd.print(Z2);
}
//lcd.print(Z2);
lcd.setCursor(8, 1);
lcd.print("Z2");
while (isButtonPressed(menu) and (stateM == 1)) {
delay(5);
}
stateM = 0;
if (isButtonPressed(up)) {
//state = !state;
Z2 = Z2 + Zinc;
if (Z2 > Zmax) {
Z2 = Zmax;
}
lcd.setCursor(8, 0);
if ((Z2 < 100) and (Z2 > 10)) {
lcd.print("0");
lcd.print(Z2);
}
else if (Z2 < 10){
lcd.print("00");
lcd.print(Z2);
}
else {
lcd.print(Z2);
}
//lcd.print(Z2);
EEPROM.update(Z2_E, Z2);
while (isButtonPressed(up)) {
delay(5);
}
}
if (isButtonPressed(down)) {
//state = !state;
Z2 = Z2 - Zinc;
if (Z2 <= 0) {
Z2 = 0;
}
lcd.setCursor(8, 0);
if ((Z2 < 100) and (Z2 > 10)){
lcd.print("0");
lcd.print(Z2);
}
else if (Z2 < 10){
lcd.print("00");
lcd.print(Z2);
}
else {
lcd.print(Z2);
}
//lcd.print(Z2);
EEPROM.update(Z2_E, Z2);
while (isButtonPressed(down)) {
delay(5);
}
}
if (isButtonPressed(menu)) {
//state = !state;
lcd.clear();
menulevel = menulevel + 1;
stateM = 1;
break;
}
}
case 4:
while (menulevel == 4) {
lcd.clear();
while (isButtonPressed(menu)) {
delay(5);
}
break;
}
}
}
if (isButtonPressed(start)) {
if ((Z1 == 0) and (Z2 ==0)) {
goto konieclinii;
}
lcd.setCursor(15, 1);
lcd.print("!");
digitalWrite(wyjscie, HIGH);
delay(Z1);
digitalWrite(wyjscie, LOW);
delay(T1);
digitalWrite(wyjscie, HIGH);
delay(Z2);
digitalWrite(wyjscie, LOW);
lcd.setCursor(15, 1);
lcd.print(" ");
konieclinii:
while (isButtonPressed(start)) {
delay(5);
}
}
}
bool isButtonPressed (int button) {
if (digitalRead(button) == LOW) {
delay(delayTime);
if (digitalRead(button) == LOW) {
return true;
}
}
return false;
}