//---importování knihoven------------------------------------------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneButton.h>
//---deklarace proměnných------------------------------------------------------------------
LiquidCrystal_I2C lcd(0x27, 16, 2); //Nastavení adresy LCD na 0x27 pro 16znakový a 2řádkový displej
OneButton back(5, true); //Definování vstupu arduina (tlačítko zpět)
OneButton pushButton(11, true); //Definování vstupu arduina (tlačítko encoderu dopředu)
#define zeroPosition 10 //Definování vstupu arduina (spínací kontakt kalibrace)
#define feedstepPin 9 //Definování vstupu arduina (step pin H-můstku pro podavač)
#define feeddirPin 8 //Definování vstupu arduina (dir pin H-můstku pro podavač)
#define cutstepPin 6 //Definování vstupu arduina (step pin H-můstku pro střihač)
#define cutdirPin 7 //Definování vstupu arduina (dir pin H-můstku pro střihač)
const int RotaryCLK = 2; //Definování vstupu arduina (pin encoderu rotace)
const int RotaryDT = 4; //Definování vstupu arduina (pin encoderu rotace)
const int STOP = 3; //Definování vstupu arduina (pin 3 STOP tlačítko)
const int DOOR = 18; //Definování vstupu arduina (pin 18 koncový spínač dvířek)
const int OPTIC = 19;
int PBdelay = 200; //Deklarace proměnné zpoždění
int push = 0; //Deklarace proměnné pro počet zmáčknutí zlačítka dopředu
int qty = 0; //Deklarace proměnné pro počet kusů vodičů
int oldqty = 0;
long len = 0; //Deklarace proměnné pro délku vodičů
long countA = 0; //Deklarace pomocné (pro rotate) proměnné pro délku vodičů
int i = 0; //Deklarace pomocné proměnné pro postupné oděčítání počtu kusů ve funkci cutting()
int position2 = 0; //Deklarace pomocné proměnné pro zjištění zda jsem byl na pozici 2
int position3 = 0; //Deklarace pomocné proměnné pro zjištění zda jsem byl na pozici 3
int pressed1 = 0; //Deklarace pomocné proměnné pro zjišťování počtu dlouhého zmáčknutí tlačítka dopředu
int pressed2 = 0; //Deklarace pomocné proměnné pro zjišťování počtu zmáčknutí tlačítka zpět
int pressed3 = 0; //Deklarace pomocné proměnné pro zjišťování počtu po dlouhém zmáčknutí tlačítka dopředu
int calibration = 0; //Deklarace pomocné proměnné pro fuknci kalibrace
long feedsteppermm = 100; //Deklarace pomocné proměnné pro kroky podavače
int cutstep = 3000; //Deklarace pomocné proměnné pro střihač
int CLKNow; //Deklarace pomocné proměnné pro zjišťování času počátku rotace encoderu
int CLKPrevious; //Deklarace pomocné proměnné pro zjišťování času dokončení rotace encoderu
int setlength1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu setlength
int setqty1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu setqty
int confirm1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu confirm
int stop1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu stop
int door1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu door
int optic1 = 0; //Deklarace pomocné proměnné pro právě jedno refreshnutí screenu optic
int oldpush = 0; //Deklarace pomocné proměnné pro uložení pozice předešlého screenu
int door4 = 0;
boolean clickEnabled = true; //Deklarace pomocné proměnné pro deaktivaci tlačtka "pushButton"
volatile unsigned long lastRotateTime = 0;
//---deklarace hlavičky programu-----------------------------------------------------------
void setup(){
pinMode (feedstepPin, OUTPUT); //Definování pinu 9 na OUTPUT
pinMode (feeddirPin, OUTPUT); //Definování pinu 8 na OUTPUT
pinMode (cutstepPin, OUTPUT); //Definování pinu 7 na OUTPUT
pinMode (cutdirPin, OUTPUT); //Definování pinu 6 na OUTPUT
pinMode (RotaryCLK, INPUT_PULLUP); //Definování pinu 2 na INPUT_PULLUP
pinMode (RotaryDT, INPUT_PULLUP); //Definování pinu 4 na INPUT_PULLUP
pinMode (zeroPosition, INPUT_PULLUP); //Definování pinu 10 na INPUT_PULLUP
pinMode (STOP, INPUT_PULLUP); //Definování pinu 3 na INPUT_PULLUP
pinMode (DOOR, INPUT_PULLUP); //Definování pinu 18 na INPUT_PULLUP
pinMode (OPTIC, INPUT_PULLUP);
pinMode(27, OUTPUT); //Definování pinu 27 na OUTPUT
CLKPrevious = digitalRead(RotaryCLK); //Prvotní uložení času pro encoder
attachInterrupt(digitalPinToInterrupt(RotaryCLK), rotate, CHANGE); //Definování přerušení pro rotaci encoderu
attachInterrupt(digitalPinToInterrupt(STOP), Stop, CHANGE);
attachInterrupt(digitalPinToInterrupt(DOOR), Door, CHANGE);
attachInterrupt(digitalPinToInterrupt(OPTIC), Optic, CHANGE);
pushButton.attachClick(click1); //Definování pro jedno zmáčknutí tlačítka dopředu
pushButton.attachDuringLongPress(longPress1); //Definování pro dlouhé zmáčknutí tlačítka dopředu
pushButton.attachLongPressStop(longPressStop1); //Definování po dlouhém zmáčknutí tlačítka dopředu
back.attachClick(click2); //Definování pro jedno zmáčknutí tlačítka zpět
back.attachDoubleClick(doubleclick2); //Definování pro dvojité zmáčknutí tlačítka zpět
back.attachDuringLongPress(longPress2); //Definování pro dlouhé zmáčknutí tlačítka zpět
back.attachLongPressStop(longPressStop2); //Definování po dlouhém zmáčknutí tlačítka zpět
Serial.begin (9600); //Inicializace sériové komunikace arduina a PC
lcd.init(); //Inicializace komunikace LCD s arduinem
lcd.backlight(); //Zapnutí podsvícení displaye
lcd.clear(); //Vymazání případného textu na displayi
digitalWrite(27, HIGH);
}
//---deklarace těla programu---------------------------------------------------------------
void loop(){
if(calibration == 0 && digitalRead(zeroPosition) && digitalRead(DOOR)){ //Zapnutí kalibrace hned po zapnutí zařízení
loading(); //Volání funkce loading() pro výpis textu na během kalibrace
delay(2000); //Zpoždění 2s mezi zapnutím a spuštěním kalibrace
Calibration(); //Volání funkce Calibration pro spuštění kalibrace
calibration = 1;
if(oldpush == 4){
push = 3;
} else {
push = oldpush;
}
}
if (clickEnabled == true) {
pushButton.tick(); //Volání jednotlivých funkcí tlačítka dopředu podle způsobu jejich stlačení
//delay(5);
back.tick(); //Volání jednotlivých funkcí tlačítka zpět podle způsobu jejich stlačení
//delay(5);
}
Stop(); //Volání funkce pro tlačítko STOP
//delay(5);
Door(); //Volání funkce pro detekci otevření dvířek
//delay(5);
Optic(); //Volání funkce pro detekci nepřítomnosti vodiče
//delay(5);
switch (push){ //Použití funkce switch pro zobrazování jednotlivých screenů displaye
case 0:
homescreen(); //Volání funkce Domovská obrazovka
break;
case 1:
setlength(); //Volání screenu pro nastavení délky vodiče
break;
case 2:
setqty(); //Volání screenu pro nastavení počtů vodičů
break;
case 3:
confirm(); //Volání screenu pro rekapitulace požadovaných hodnot
break;
case 5:
finish(); //Volání screenu po dokončení stříhání
break;
case 7:
stop(); //Volání creenu po zmáčknutí tlačítka STOP
break;
case 8:
door(); //Volání creenu po otevření dvířek
break;
case 9:
optic(); //Volání screenu po zjištění chybějícího vodiče optickou bránou
break;
}
if(position2 == 0 && push == 1){ //Funkce pro zajištění vynulování hodnot pro nastavení velikosti skoku čítání
position2 = 1;
position3 = 0;
pressed1 = 0;
pressed3 = 0;
}
if (!digitalRead(RotaryCLK)&& push == 1){ //Funkce pro nastavení délky pomocí encoderu
rotate(); //Volání funkce rorate() pro správné odečtení hodnot z encoderu
}
if(position3 == 0 && push == 2){ //Funkce pro zajištění vynulování hodnot pro nastavení velikosti skoku čítání
position2 = 0;
position3 = 1;
pressed1 = 0;
pressed3 = 0;
}
if (!digitalRead(RotaryCLK)&& push == 2){ //Funkce pro nastavení počtu kusů vodičů pomocí encoderu
rotate(); //Volání funkce rorate() pro správné odečtení hodnot z encoderu
}
if (push == 4){ //Funkce pro spuštění stříhání vodičů
lcd.clear(); //Funkce pro smazání displaye
Cutting(); //Volání funkce Cutting()
if(!digitalRead(STOP)){
push = 7;
} else if(!digitalRead(DOOR)){
push = 8;
} else if(digitalRead(OPTIC)){
push = 9;
} else {
push = 5; //Nastavení proměnné push na hodnotu 5
}
}
if(push == 6){ //Funkce pro obnovení výchozích hodnot
lcd.clear(); //Funkce pro smazání displaye
push = 0; //Nastavení proměnné push na hodnotu 0
len = 0; //Nastavení proměnné len na hodnotu 0
qty = 0; //Nastavení proměnné qty na hodnotu 0
oldqty = 0;
i = 0;
countA = 0; //Nastavení proměnné countA na hodnotu 0
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
oldpush = 0;
delay(PBdelay);
}
}
//---deklarace funkci pro jednotlivá tlačítka----------------------------------------------
void Stop(){ //Deklarace funkce pro zmáčknutí tlačítka "STOP"
if(!digitalRead(STOP) && push == 4){
delay(10);
oldqty = i;
push = 7;
}
}
//-------------------------------
void Door(){ //Deklarace funkce pro detekci otevření dvířek
if(!digitalRead(DOOR) /*&& push != 8*/){
delay(100);
if(push != 8){
oldpush = push;
}
push = 8;
door4 = 0;
}
if(digitalRead(DOOR) && push == 8 && door4 == 0){
delay(100);
if(oldpush == 4){
//push = 3;
calibration = 0;
} else {
push = oldpush;
}
door4 = 1;
}
}
//-------------------------------
void Optic(){ //Deklarace funkce pro detekci nepřítomnosti vodiče
if(digitalRead(OPTIC) && push == 4){
oldpush = push;
oldqty = i;
delay(10);
push = 9;
}
}
//-------------------------------
void click1() { //Deklarace jedno zmáčknutí tlačítka encoderu (pushButton)
if (millis() - lastRotateTime >= PBdelay){ //Funkce pro deaktivaci tlačítka "pushButton" 200 ms po použití encoderu
lcd.clear();
delay(15);
if(push >= 0 && push < 7){
delay(10);
push++; //Přičtení 1 k proměnné push
}
if(push == 7) {
push = 6;
calibration = 0;
}
if(push == 9) {
push = 3;
calibration = 0;
}
delay(PBdelay);
Serial.println(push);
}
}
//-------------------------------
void longPress1() { //Deklaarce funkce dlouhé zmáčknutí tlačítka encoderu (pushButton)
if(pressed3 == 1 && (push == 1 || push == 2)){
pressed1 = 2;
} else if (pressed3 == 2 && push == 1) {
pressed1 = 3;
} else {
pressed1 = 1;
}
if(push == 0){ //Funkce pro manuální pohyb posuvného mechanismu
digitalWrite(feeddirPin, HIGH); //Nastavení směru otáčení podavacího krokového motoru
for(int t = 0; t<100; t++){
digitalWrite(feedstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(feedstepPin, LOW);
delayMicroseconds(100);
}
}
Serial.println(pressed1);
}
//-------------------------------
void longPressStop1() { //Deklarace funkce po dlouhém zmáčknutí tlačítka encoderu (pushButton)
if(pressed1 == 1 && (push == 1 || push == 2)){
pressed3 = 1;
} else if (pressed1 == 2 && push == 1) {
pressed3 = 2;
} else {
pressed1 = 0;
pressed3 = 0;
}
Serial.println(pressed1);
}
//-------------------------------
void click2() { //Deklarace funkce jedno zmáčknutí tlačítka zpět (back)
lcd.clear();
/*if(push == 0){
push = 0;
}*/
if(push < 4 && push > 0){
push--;
}
delay(PBdelay);
Serial.println(push);
}
//-------------------------------
void doubleclick2() { //Deklarace funkce dvojité zmáčknutí tlačítka zpět (back)
lcd.clear();
if(push == 1){
countA = 0;
len = 0;
}
if(push == 2){
countA = 0;
qty = 0;
}
}
//-------------------------------
void longPress2() { //Deklarace funkce dlouhé zmáčknutí tlačítka zpět (back)
pressed2++;
if(pressed2 == 1){
lcd.clear();
push = 6;
}
}
//-------------------------------
void longPressStop2() { //Deklarace funkce po dlouhém zmáčknutí tlačítka zpět (back)
pressed2 = 0;
}
//---funkce pro nastaveni hodnot pomocí encoderu-------------------------------------------
void rotate(){
clickEnabled = false; //Deaktivace tlačítka "pushButton"
if(push == 1){
countA = len;
}
if(push == 2){
countA = qty;
}
CLKNow = digitalRead(RotaryCLK); //Uložení si počáteční doby kdy bylo pootočeno s encoderem
if (CLKNow != CLKPrevious && CLKNow == 1){
if (digitalRead(RotaryDT) == CLKNow) {
if(countA < 6000){ //Omezení maximální hodnoty délky vodiče na 6 metrů
if(pressed1 == 0){ //Funkce pro odečítání hodnot z enkoderu po jednotkách
countA++;
delay(30);
}
if(pressed1 == 1){ //Funkce pro odečítání hodnot z enkoderu po desítkách
countA = countA + 10;
delay(30);
}
if(pressed1 == 2){ //Funkce pro odečítání hodnot z enkoderu po stovkách
countA = countA + 100;
delay(30);
}
} else {
countA = 0; //Nastavení countA na 0 pokud je překročena hodnota 6000
}
} else {
if(countA < 1) { //Omezení hodnot pouze na kladná čísla
countA = 6000; //Nastavení countA na 6000 pokud je hodnota nižší jak 0
} else {
if(pressed1 == 0){ //Funkce pro odečítání hodnot z enkoderu po jednotkách
countA--;
delay(30);
}
if(pressed1 == 1){ //Funkce pro odečítání hodnot z enkoderu po desítkách
countA = countA - 10;
delay(30);
}
if(pressed1 == 2){ //Funkce pro odečítání hodnot z enkoderu po stovkách
countA = countA - 100;
delay(30);
}
}
}
}
CLKPrevious = CLKNow; //Uložení si poslední hodnoty času kdy bylo otáčeno s encoderem
if(push == 1){
len = countA; //Přepsání hodnoty len pro zobrazení na display
delay(PBdelay);
}
if(push == 2){
qty = countA; //Přepsání hodnoty qty pro zobrazení na display
delay(PBdelay);
}
delay(20);
lastRotateTime = millis();
clickEnabled = true;
}
//---deklarace funkce stříhání-------------------------------------------------------------
void Cutting(){ //Deklarace funkce Cutting() (stříhání vodičů)
if(len > 0){ ; //Předstřihací funkce
digitalWrite(feeddirPin, HIGH);
for(int r = 0; r < 1000; r++){
digitalWrite(feedstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(feedstepPin, LOW);
delayMicroseconds(100);
}
digitalWrite(cutdirPin, HIGH); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < cutstep; y++){ //For cyklus pro přesné otočení krokového motoru dle dráhy stříhací hlavy
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(100);
}
digitalWrite(cutdirPin, LOW); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < cutstep; y++){ //For cyklus pro přesné otočení krokového motoru dle dráhy stříhací hlavy
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(100);
}
}
long steptotake = len * feedsteppermm; //Deklarace proměnné pro určení počtu kroků podavacího krokové motoru
for (i = 0; i<qty; i++){ //For cyklus pro opakování stříhaní dle požadovaných kusů
Stop();
Door();
Optic();
if(push == 7 || push == 8 || push == 9){
i = qty;
}
cutting(); //Volání funkce cutting() zodpovědné za zobrazení aktuálního počtu ustřiženách vodičů
digitalWrite(feeddirPin, HIGH); //Nastavení směru otáčení podavacího krokového motoru
for (long x = 0; x < steptotake; x++){ //For cyklus pro přesné otočení krokového motoru dle nastavené délky
Stop();
Door();
Optic();
if(push == 7 || push == 8 || push == 9){
x = steptotake;
}
digitalWrite(feedstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(feedstepPin, LOW);
delayMicroseconds(100);
}
digitalWrite(cutdirPin, HIGH); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < cutstep; y++){ //For cyklus pro přesné otočení krokového motoru dle dráhy stříhací hlavy
Stop();
Door();
Optic();
if(push == 7 || push == 8 || push == 9){
y = cutstep;
}
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(100);
}
digitalWrite(cutdirPin, LOW); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < cutstep; y++){ //For cyklus pro přesné otočení krokového motoru dle dráhy stříhací hlavy
Stop();
Door();
Optic();
if(push == 7 || push == 8 || push == 9){
y = cutstep;
}
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(100);
}
}
Serial.println(oldqty);
}
void Calibration(){ //Deklarace funkce Calibration() počáteční kalibrace během zpouštění zařízení
digitalWrite(cutdirPin, LOW); //Nastavení směru otáčení stříhácího krokového motoru
while (digitalRead(zeroPosition)){ //While cyklus posouvající stříhácí hlavu do doby než je stlačen koncový spínač
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(100);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(100);
}
digitalWrite(cutdirPin, HIGH); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < 1600; y++){ //For cyklus pro posunutí stříhací hlavy zpět od koncového spínače
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(200);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(200);
}
digitalWrite(cutdirPin, LOW); //Nastavení směru otáčení stříhácího krokového motoru
while (digitalRead(zeroPosition)){ //While cyklus pro opětovné ale přesnější posunutí stříhací hlavy do pozice u koncového spínače
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(500);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(500);
}
digitalWrite(cutdirPin, HIGH); //Nastavení směru otáčení stříhácího krokového motoru
for (int y = 0; y < 1800; y++){ //For cyklus pro posunutí stříhací hlavy zpět od koncového spínače
digitalWrite(cutstepPin, HIGH);
delayMicroseconds(200);
digitalWrite(cutstepPin, LOW);
delayMicroseconds(200);
}
}
//---deklarace funkci pro jednotlivé screeny-----------------------------------------------
void loading(){ //fuknce pro načítání a kalibraci
lcd.setCursor(0, 0); //Nastavení cursoru na pozici 0,0 pro přesné psaní textu na display
lcd.print("NACITANI.... ");
lcd.setCursor(0, 1);
lcd.print(" ");
}
void homescreen(){ //fuknce pro domovskou obrazovku
lcd.setCursor(0, 0);
lcd.print("STRIHACKA KABELU");
lcd.setCursor(0, 1);
lcd.print(" -->");
pressed1 = 0;
pressed3 = 0;
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void setlength(){ //funkce pro screen nastavení délky vodiče
if(setlength1 == 0){
lcd.clear();
setlength1++;
}
lcd.setCursor(0, 0);
lcd.print("DELKA [mm]");
lcd.setCursor(0, 1);
lcd.print("<--");
lcd.setCursor(6, 1);
lcd.print(len);
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print("-->");
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void setqty(){ //funkce pro screen nastavení počtu kusů
if(setqty1 == 0){
lcd.clear();
setqty1++;
}
lcd.setCursor(0, 0);
lcd.print("MNOZSTVI [ks]");
lcd.setCursor(0, 1);
lcd.print("<--");
lcd.setCursor(6, 1);
lcd.print(qty);
lcd.print(" ");
lcd.setCursor(13, 1);
lcd.print("-->");
setlength1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void confirm(){ //funkce pro screen rekapitulace požadovaných hodnot
if(confirm1 == 0){
lcd.clear();
confirm1++;
}
lcd.setCursor(0, 0);
lcd.print("DELKA[mm] = ");
lcd.setCursor(12, 0);
lcd.print(len);
lcd.setCursor(0, 1);
lcd.print("KUSU = ");
lcd.setCursor(7, 1);
lcd.print(qty);
lcd.setCursor(11, 1);
lcd.print("READY");
pressed1 = 0;
pressed3 = 0;
oldqty = 0;
setlength1 = 0;
setqty1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void cutting(){ //funkce pro screen během stříhání
int k = qty - i;
int cursor1 = 0;
int cursor2 = 0;
if(qty < 10){
cursor1 = 13;
}
if(qty < 100 && qty > 9){
cursor1 = 12;
}
if(qty < 1000 && qty > 99){
cursor1 = 11;
}
if(qty < 10000 && qty > 999){
cursor1 = 10;
}
if(k < 10){
cursor2 = 2;
}
if(k < 100 && k > 9){
cursor2 = 3;
}
if(k < 1000 && k > 99){
cursor2 = 4;
}
if(k < 10000 && k > 999){
cursor2 = 5;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("STRIHANI");
lcd.setCursor(cursor1 - cursor2, 1);
lcd.print(k);
lcd.setCursor(cursor1, 1);
lcd.print("Z " +(String)qty);
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void finish(){ //funkce pro screen po dokončení stříhání
lcd.setCursor(0, 0);
lcd.print(" KONEC STRIHANI ");
lcd.setCursor(0, 1);
lcd.print(" DOMU>");
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void stop(){ //funkce pro screen po zmáčknutí tlačítka "STOP"
if(stop1 == 0){
lcd.clear();
stop1++;
}
lcd.setCursor(0, 0);
lcd.print("----->STOP<-----");
lcd.setCursor(0, 1);
lcd.print("NASTRIHANO ");
lcd.setCursor(11, 1);
lcd.print(oldqty);
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
door1 = 0;
optic1 = 0;
}
//-------------------------------
void door(){ //funkce pro screen po detekci otevření dvířek
if(door1 == 0){
lcd.clear();
door1++;
}
lcd.setCursor(0, 0);
lcd.print("DVIRKA OTEVRENA");
lcd.setCursor(0, 1);
lcd.print(" ");
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
optic1 = 0;
}
//-------------------------------
void optic(){ //funkce pro screen po detekci nepřítomnosti vodiče
if(optic1 == 0){
lcd.clear();
optic1++;
}
lcd.setCursor(0, 0);
lcd.print("->CHYBI VODIC<-");
lcd.setCursor(0, 1);
lcd.print("NASTRIHANO ");
lcd.setCursor(11, 1);
lcd.print(oldqty);
setlength1 = 0;
setqty1 = 0;
confirm1 = 0;
stop1 = 0;
door1 = 0;
}
//-------------------------------