Docelowo zrobiłem to tak :
Kod:
int switchPin = 8; PIN 8
int Display = 0;
void setup()
{
lcd.begin(20, 4);
pinMode(switchPin, INPUT);
digitalWrite(switchPin, HIGH);
}
void loop()
{
if (digitalRead(switchPin) == LOW){
delay(200); // trzymanie przycisku
Display = Display + 1;
if(Display > 3){
lcd.clear();
Display = 1;
}
switch (Display) {
case 1: {
lcd.setCursor(0, 1);
lcd.print("ekran");
break;
}
case 2: {
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("ekran");
break;
}
case 3: {
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("ekran");
break;
}
}
}
}
I mam problem dopiero po wciśnięciu pokazuje się 1 ekran, a druga modernizacja chciałbym aby zawsze była wyświetlana w 1 linijce godzina i czas.
Kod:
byte decToBcd(byte val){ return( (val/10*16) + (val%10) ); }
byte bcdToDec(byte val){ return( (val/16*10) + (val%16) ); }
void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
// okieśla, że następna wartość ma trafić do rejestru sekund
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void displayTime()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
if (hour < 10)
{
lcd.setCursor(1, 0);
lcd.print("0");
lcd.setCursor(2, 0);
lcd.print(hour , DEC);
}
if (hour > 9)
{
lcd.setCursor(1, 0);
lcd.print(hour , DEC);
}
lcd.setCursor(3, 0);
lcd.print(":");
if (minute < 10)
{
lcd.setCursor(4, 0);
lcd.print("0");
lcd.setCursor(5, 0);
lcd.print(minute , DEC);
}
if (minute > 9)
{
lcd.setCursor(4, 0);
lcd.print(minute , DEC);
}
lcd.setCursor(6, 0);
lcd.print(":");
if (second < 10)
{
lcd.setCursor(7, 0);
lcd.print("0");
lcd.setCursor(8, 0);
lcd.print(second, DEC);
}
if (second > 9)
{
lcd.setCursor(7, 0);
lcd.print(second, DEC);
}
if (dayOfMonth < 10)
{
lcd.setCursor(10, 0);
lcd.print("0");
lcd.setCursor(11, 0);
lcd.print(dayOfMonth, DEC);
lcd.setCursor(12, 0);
lcd.print("-");
}
if (dayOfMonth > 9)
{
lcd.setCursor(10, 0);
lcd.print(dayOfMonth, DEC);
lcd.setCursor(12, 0);
lcd.print("-");
}
if (month < 10)
{
lcd.setCursor(13, 0);
lcd.print("0");
lcd.setCursor(14, 0);
lcd.print(month, DEC);
lcd.setCursor(15, 0);
lcd.print("-");
}
if (month > 9)
{
lcd.setCursor(13, 0);
lcd.print(month, DEC);
lcd.setCursor(15, 0);
lcd.print("-");
}
lcd.setCursor(16, 0);
lcd.print("20");
lcd.setCursor(18, 0);
lcd.print(year, DEC);
}