#include"LiquidCrystal.h" //LCD könyvtár betöltése
LiquidCrystal lcd(4,5,6,7,8,9); // LCD bekötése
int mp=-1;
int perc=0;
int ora=12; // idő változók deklarálása
byte bekapcsolasH;
byte bekapcsolasL;
word bekapcsolas=1; // belső változók
#include"EEPROM.h" // EEPROM könyyvtár betöltése
void timeprint(){ //idő kiírás blokk
lcd.setCursor(0,1) ;
lcd.print(ora);
lcd.print("o ");
lcd.print(perc);
lcd.print("p ");
lcd.print(mp);
lcd.print(" mp");
}
void setup() {
lcd.begin(16,2); //LCD típus beállítása
bekapcsolasH=EEPROM.read(2); //magas helyiérték olvasása EEPROM-ból
bekapcsolasL=EEPROM.read(1); //alacsony helyiérték olvasása EEPROM-ból
bekapcsolas=word(bekapcsolasH,bekapcsolasL); //word-dé alakítás
lcd.print("Pappelektronika"); //kiírás
delay(2000); // 2 másodperc késleltetés
lcd.clear(); //LCD törlés
lcd.setCursor(0,0); // LCD Kuryor beállítás
lcd.print(bekapcsolas);
lcd.print(" inditas"); // bekapcsolások kiírása
bekapcsolas=bekapcsolas+1; //bekapcsolás számláló növelése
bekapcsolasH=bekapcsolas/256;
bekapcsolasL=bekapcsolas%256; //modulo alkalmazása
EEPROM.write(1,bekapcsolasL);
EEPROM.write(2,bekapcsolasH); //mentés EEPROM-ba
}
void loop() //program
{
mp=mp+1; //másodperc növelése
delay(1000); // 1 másodperc késleltetés
if (mp==60) //
{
mp=0; // Ha 60 akkor visszírás 0-nak és
perc=perc+1; // perc növelése
}
if (perc==60){ // Ha 60 akkor visszírás 0-nak és
perc=0;
ora=ora+1; // óra növelése
}
if (ora==24){ // Ha 24 akkor visszírás 0-nak és
ora=0;
}
timeprint(); // idő kiírás blokk hívása
}
Sziasztok !
Én így oldottam meg , kezdő vagyok szeretném kikérni a véleményeteket.
Előre is köszönöm ay építő hozzászólásokat!
#17 házi feladat megoldása
-
- Újonc
- Hozzászólások: 6
- Csatlakozott: 2019. december 8. vasárnap, 17:39
Re: #17 házi feladat megoldása
Tisztelt pappelektronika!
A loop részben nem így csináld a léptetést!
A delay() esetében egy másodpercig nem fut semmi! Csak toporog a proci egyhelyben.
A tavír lecke is leírja miért nem jó ez a megoldás.
Időzítés használj.... millis() erre a legjobb.
De ha a legpontosabb órát akarod akkor külső chip használata elengedhetetlen.
A kódod elméletileg léptet, csak soha nem lesz pontos.
A loop részben nem így csináld a léptetést!
A delay() esetében egy másodpercig nem fut semmi! Csak toporog a proci egyhelyben.
A tavír lecke is leírja miért nem jó ez a megoldás.
Időzítés használj.... millis() erre a legjobb.
De ha a legpontosabb órát akarod akkor külső chip használata elengedhetetlen.
A kódod elméletileg léptet, csak soha nem lesz pontos.
-
- Újonc
- Hozzászólások: 6
- Csatlakozott: 2019. december 8. vasárnap, 17:39
Re: #17 házi feladat megoldása
Tisztelt Verjoz!%
Nagyon köszönöm a tanácsot!
Számomra igen hasznosnak bizonyult, mert épp az idő beállításán törtem a fejem és ez a (delay) ,bizony akadályt jelent...
dolgozom rajta...
Nagyon köszönöm a tanácsot!
Számomra igen hasznosnak bizonyult, mert épp az idő beállításán törtem a fejem és ez a (delay) ,bizony akadályt jelent...
dolgozom rajta...
Re: #17 házi feladat megoldása
Sziasztok,
Én így oldottam meg a házit, de van egy gondom.
Amikor elkezdenek számolni a számlálók egy karaktert használnak kilencig, azután jobbra tolódnak egyet és úgy folytatják. Ezzel nem is lenne gondom mindaddig míg nem nullázódik. Miután a számlálók nullázódnak és újra kezdi a számolást az első 9 értékig megint csak a baloldali karakter helyet használják, de tőle jobbra lévő karakterhelyen marad egy nulla így 10,20,30,40,50,60,70,80,90,10,11,12...stb.)
Mit lehetne tenni?
Köszönöm, ha segítetek
Én így oldottam meg a házit, de van egy gondom.
Amikor elkezdenek számolni a számlálók egy karaktert használnak kilencig, azután jobbra tolódnak egyet és úgy folytatják. Ezzel nem is lenne gondom mindaddig míg nem nullázódik. Miután a számlálók nullázódnak és újra kezdi a számolást az első 9 értékig megint csak a baloldali karakter helyet használják, de tőle jobbra lévő karakterhelyen marad egy nulla így 10,20,30,40,50,60,70,80,90,10,11,12...stb.)
Mit lehetne tenni?
Köszönöm, ha segítetek
Kód: Egész kijelölése
#include "LiquidCrystal.h"
#include "EEPROM.h";
byte bekapcsolasH;//bekapcsolás számláló
byte bekapcsolasL;
word bekapcsolas;
unsigned long masodPerc = 0; //másodperc változók
unsigned long mPSzamlalo = 0;
int mPOszto = 0;
unsigned long perc = 0; //perc változók
unsigned long pSzamlalo = 0;
int pOszto = 0;
unsigned long ora = 0; //óra változók
unsigned long oSzamlalo = 0;
int oOszto = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(2, 1);
lcd.print(":");
lcd.setCursor(5, 1);
lcd.print(":");
bekapcsolasH = EEPROM.read(4); //bekapcsolásokat számláló rész
bekapcsolasL = EEPROM.read(3);
bekapcsolas = word(bekapcsolasH, bekapcsolasL);
bekapcsolas = bekapcsolas + 1;
bekapcsolasH = bekapcsolas / 256;
bekapcsolasL = bekapcsolas % 256;
EEPROM.write (3, bekapcsolasL);
EEPROM.write (4, bekapcsolasH);
lcd.setCursor(10, 1);
lcd.print(bekapcsolas);
}
void loop() {
masodPerc = millis() / 1000; //másodperc beállítás
mPSzamlalo = masodPerc - mPOszto * 60;
if (mPSzamlalo == 60) {
mPOszto++;
}
lcd.setCursor(6, 1); //másodperc kiiratás
lcd.print(mPSzamlalo);
perc = millis() / 60000; //perc beállítás
pSzamlalo = perc - pOszto * 60;
if (pSzamlalo == 60) {
pOszto++;
}
lcd.setCursor(3, 1); //perc kiiratás
lcd.print(pSzamlalo);
ora = millis() / 3600000; //óra beállítás
oSzamlalo = ora - oOszto * 24;
if (oSzamlalo == 24) {
oOszto++;
}
lcd.setCursor(0, 1); // óra kiiratás
lcd.print(oSzamlalo);
}