Proszę bardzo , jak widzisz głupie parę literek na lcd potrafią porządnie skomplikować kod programu miłej zabawy
Kod:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#include <Keypad.h>
int niski = 0;
int wysoki = 0;
long pm = 0;
byte czujnik = 10 ;
byte odliczone = 13 ;
byte stan = LOW ;
int ilosc_og = 0 ;
int ilosc_licz = 0 ;
int przekroczono = 0;
int z = 0 ;
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = { 2,3,4,5 };
byte colPins[COLS] = { 6,7,8 };
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
Serial.begin(9600);
pinMode( czujnik , INPUT_PULLUP ) ;
pinMode( odliczone , OUTPUT );
digitalWrite( odliczone , LOW );
lcd.begin(16, 2);
lcd.clear();
wysoki = GetNumber();
lcd.clear();
Serial.print("Zadana ilosc = ");
Serial.println(wysoki);
}
void loop()
{
if ( digitalRead(czujnik) == LOW and stan == LOW ){
delay(50);
stan = HIGH;
ilosc_og = ilosc_og + 1 ;
if ( wysoki > 0 ){
if ( ilosc_og >= niski and ilosc_og <= wysoki ){ ilosc_licz = ilosc_licz + 1;
if ( (wysoki - ilosc_licz) == 0 )digitalWrite( odliczone , HIGH );
}
if ( ilosc_og > wysoki ){przekroczono = przekroczono - 1;}
}
Serial.print("Zadana ilosc - ");
Serial.print( wysoki - niski );
Serial.print(" / Aktualna ilosc - ");
Serial.println(ilosc_licz);
}
if ( digitalRead(czujnik) == HIGH)stan = LOW ;
if ( przekroczono < 0 ){
lcd.setCursor(0,0);lcd.print(" ODLICZONO !! ");lcd.print(wysoki - niski);
lcd.setCursor(0,1);lcd.print("ZA DUZO = ");lcd.print(przekroczono);lcd.print(" ");}
else {
lcd.setCursor(0,0);lcd.print("Zadana = ");lcd.print(wysoki - niski);
lcd.setCursor(0,1);lcd.print("Aktualna = ");lcd.print(ilosc_licz);}
}
int GetNumber()
{
int num = 0;
char key = kpd.getKey();
while(key != '#')
{
switch (key)
{
case NO_KEY:
break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
Serial.print(key);
num = num * 10 + (key - '0');
break;
case '*':
num = 0;
break;
}
key = kpd.getKey();
unsigned long cm = millis();
if ( cm - pm < 1000){lcd.setCursor(0,0);lcd.print("Licznik szt.v1");}
if ( cm - pm > 1000 and cm - pm < 2000){lcd.setCursor(0,0);lcd.print("Wprowadz ilosc");}
if ( cm - pm > 2000 and cm - pm < 3000){lcd.setCursor(0,0);lcd.print("zatwierdz # ");}
if ( cm - pm > 3000 and cm - pm < 4000){lcd.setCursor(0,0);lcd.print("skasuj * ");}
if ( cm - pm > 4000 ){pm = cm;}
lcd.setCursor(0,1);lcd.print("Ilosc = ");lcd.print(num);lcd.print(" ");
}
Serial.println();return num;
}