Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // include the library code:
- #include <LiquidCrystal.h>
- // initialize the library with the numbers of the interface pins
- LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
- volatile byte oszto = 0; //0.5 sec-es a megszakitas, 1 sec-re hozza fel
- volatile byte menus = 1; //menu valaszto segedvaltozo, beallitassal kezd
- volatile byte idos = 0; //Az ido kimondasahoz segedvaltozo
- volatile byte idost = 0; //Az ido tizeseinek kimondasahoz segedvaltozo
- volatile byte idose = 0; //Az ido egyeseinekkimondasahoz segedvaltozo
- volatile byte Ora = 12;
- volatile byte Perc = 30;
- volatile byte Mperc = 0;
- volatile byte Hora; //Az ido kimondasahoz segedvaltozok
- volatile byte Hperc;
- volatile byte Hmperc;
- volatile byte Horat;
- volatile byte Hperct;
- volatile byte Hmperct;
- volatile byte Horae;
- volatile byte Hperce;
- volatile byte Hmperce;
- volatile byte Ev = 15; //Datum ev
- volatile byte Honap = 10; //Datum honap
- volatile byte Nap = 29; //Datum nap
- volatile byte Eora = 12; //Ebresztes ora
- volatile byte Eperc = 30; //Ebresztes perc
- volatile byte Alarm = 0; // Ebreszto bekapcsolva(1)
- volatile word prell = 400; //bill. pergesmentesires hasznalja
- byte a1[8] = {B10,B100,B1110,B1,B1111,B10001,B1111}; //á
- byte e1[8] = {B10,B100,B11111,B10000,B11100,B10000,B11111}; //nagy É
- byte i1[8] = {B100,B100,B01010,B10001,B11111,B10001,B10001}; //nagy Á
- byte o1[8] = {B100,B100,B0,B1110,B10001,B10001,B1110}; // hosszú ó
- byte o2[8] = {B1010,B0,B1110,B10001,B10001,B10001,B1110}; //ö
- byte o3[8] = {B1010,B1010,B0,B1110,B10001,B10001,B1110}; // hosszú ő
- byte u1[8] = {B1,B1,B10,B10,B100,B10100,B1100,B1000}; // pipa
- byte u2[8] = {B100,B100,B1110,B10001,B10001,B10001,B11111,B100}; // harang
- byte u3[8] = {B11011,B11011,B100,B100,B10101,B10001,B1110,B0}; // vigyori
- //kis ekezetes betuk
- void setup() {
- Serial.begin(2400); //hanghoz kell
- delay(500);
- //karakterdefinialas
- lcd.createChar(0, a1);
- lcd.createChar(1, e1);
- lcd.createChar(2, i1);
- lcd.createChar(3, o1);
- lcd.createChar(4, o3);
- lcd.createChar(5, u1);
- lcd.createChar(6, u2);
- lcd.createChar(7, u3);
- delay(500);
- pinMode(13,OUTPUT);
- //D2 H--> L szintre valt
- pinMode(2,INPUT);
- //D2 belso felhuzoellenallas
- digitalWrite(2, HIGH);
- // HANG nyomogomb
- pinMode(3,INPUT);
- digitalWrite(3, HIGH);
- // MENU nyomogomb
- pinMode(9,INPUT);
- digitalWrite(9, HIGH);
- // PLUSZ nyomogomb
- pinMode(8,INPUT);
- digitalWrite(8, HIGH);
- // MINUSZ nyomogomb
- pinMode(10,INPUT);
- digitalWrite(10, HIGH);
- //Megszakitaskezeles
- attachInterrupt(0, idoalap, FALLING);
- digitalWrite(13,HIGH); // bekapcsolja a hattervilagitast
- // beallitja, hany sor, s hany karakter lesz
- lcd.begin(16, 2);
- // kiirja a szoveget az LCD-re
- lcd.print(" ");lcd.write(1); lcd.print("breszt"); lcd.write(4); lcd.print("s "); lcd.write(3); lcd.print("ra");
- lcd.setCursor(0,1);
- lcd.print("Apjok ");lcd.write(2);lcd.print("kos 2015.");
- delay(8000);
- scroll();
- lcd.clear();}
- void loop() {
- switch (menus) {
- case 0:
- kiir(); //alaphelyzet, kiirja az idot, s a datumot
- break;
- case 1: //beallitas menuk eleje
- digitalWrite(13,HIGH); // bekapcsolja a hattervilagitast
- lcd.setCursor(0,0);lcd.print("ora beallitas: ");
- lcd.setCursor(0,1);lcd.print(Ora);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Ora;}
- if (digitalRead(10) == LOW){
- --Ora;}
- if (Ora>23) {
- Ora=0;}
- if (Ora<0) {
- Ora=23;}
- delay(prell);
- break;
- case 2:
- lcd.setCursor(0,0);lcd.print("perc beallitas: ");
- lcd.setCursor(0,1);lcd.print(Perc);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Perc;}
- if (digitalRead(10) == LOW){
- --Perc;}
- if (Perc>59) {
- Perc=0;}
- if (Perc<0) {
- Perc=59;}
- delay(prell);
- Mperc=0;
- break;
- case 3:
- lcd.setCursor(0,0);lcd.print("honap beallitas:");
- lcd.setCursor(0,1);lcd.print(Honap);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Honap;}
- if (digitalRead(10) == LOW){
- --Honap;}
- if (Honap>12) {
- Honap=1;}
- if (Honap<1) {
- Honap=12;}
- delay(prell);
- break;
- case 4:
- lcd.setCursor(0,0);lcd.print("nap beallitas: ");
- lcd.setCursor(0,1);lcd.print(Nap);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Nap;}
- if (Honap==2 && Nap>28){
- Nap=1;}
- if ((Honap==4 || Honap==6 || Honap==9 || Honap==11) && Nap>30) {
- Nap=1;}
- else {
- if (Nap>31) {
- Nap=1;}}
- if (digitalRead(10) == LOW){
- --Nap;}
- if (Nap<1) {
- Nap=1;}
- delay(prell);
- break;
- case 5: //Ebreszto engedelyez/tilt
- lcd.setCursor(0,0);lcd.print("Ebr. enged/tilt:");
- lcd.setCursor(0,1);lcd.write(6);
- if (Alarm==1){
- lcd.write(5);}
- else {
- lcd.print(" ");}
- lcd.print(" ");
- if (digitalRead(8) == LOW){
- Alarm=1;lcd.setCursor(0,1);lcd.write(6);lcd.write(5);lcd.print(" ");}
- if (digitalRead(10) == LOW){
- Alarm=0;lcd.setCursor(0,1);lcd.write(6);lcd.print(" ");}
- delay(prell);
- break;
- case 6:
- lcd.setCursor(0,0);lcd.print("Ebr.ora beall.: ");
- lcd.setCursor(0,1);lcd.print(Eora);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Eora;}
- if (digitalRead(10) == LOW){
- --Eora;}
- if (Eora>23) {
- Eora=0;}
- if (Eora<0) {
- Eora=23;}
- delay(prell);
- break;
- case 7:
- lcd.setCursor(0,0);lcd.print("Ebr.perc beall.:");
- lcd.setCursor(0,1);lcd.print(Eperc);lcd.print(" ");
- if (digitalRead(8) == LOW){
- ++Eperc;}
- if (digitalRead(10) == LOW){
- --Eperc;}
- if (Eperc>59) {
- Eperc=0;}
- if (Eperc<0) {
- Eperc=59;}
- delay(prell);
- break;
- }}
- void kiir(){ //kiirja az idot,s a datumot
- if (Ora>19 || Ora<7){
- digitalWrite(13,HIGH);} // bekapcsolja a hattervilagitast
- else{
- digitalWrite(13,LOW);} // kikapcsolja a hattervilagitast
- if (Alarm==1 && Mperc==0 && Ora==Eora && Perc==Eperc) { // Ebresztes!!!
- ebreszto();}
- lcd.setCursor(0,0);lcd.print(" ");
- if (Ora < 10) {
- lcd.print(" ");}
- lcd.print(Ora); lcd.print(":");
- if (Perc < 10) {
- lcd.print("0");}
- lcd.print(Perc); lcd.print(":");
- if (Mperc < 10) {
- lcd.print("0");}
- lcd.print(Mperc); lcd.print(" ");
- if (Alarm==1) {
- lcd.write(6); lcd.write(5);lcd.print(" ");}
- else{
- lcd.print(" ");}
- lcd.setCursor(0,1);lcd.print(" ");
- lcd.print("20");lcd.print(Ev);lcd.print(".");lcd.print(Honap);lcd.print(".");lcd.print(Nap);lcd.print(".");lcd.print(" ");}
- void szoveg(){
- Hora = Ora; Hperc = Perc; Hmperc = Mperc; //elmentem az aktualis idot
- Hmperc=Hmperc+7; //Hozzaadok 7 sec-et, hogy a pontos idot mondja ki
- if (Hmperc > 59) {
- Hmperc=Hmperc-60; Hperc=Hperc+1;}
- if (Hperc > 59) {
- Hperc=0; Hora=Hora+1;}
- if (Hora > 23) {
- Hora=0;}
- //innen kezdodik az ido szovegre konvertalasa
- idos=Hora;Valt();Horat=idost;Horae=idose; //orat konvertalja
- idos=Hperc;Valt();Hperct=idost;Hperce=idose; //percet konvertalja
- idos=Hmperc;Valt();Hmperct=idost;Hmperce=idose; //masodpercet konvertalja
- Serial.write(13); //kimondja az osszevagott szoveget
- Serial.write(137); //128+db szoveg
- Serial.write(Horat); Serial.write(Horae);
- Serial.write(17); //ora
- Serial.write(Hperct); Serial.write(Hperce);
- Serial.write(18); //perc
- Serial.write(Hmperct); Serial.write(Hmperce);
- Serial.write(19);} //masodperc
- void ebreszto() // Ebresztes!!!
- {
- Serial.write(13); //kimondja az osszevagott szoveget
- Serial.write(129); //128+db szoveg
- Serial.write(21);} // Ne lazsalj!
- void Valt() //az adott idot atvaltja kimondhatova
- {
- idost=255;idose=idos+1; // 10-nel kisebb
- if (idos>10){
- idost=12;idose=idos-9;} //10-nel nagyobb
- if (idos>20){
- idost=13;idose=idos-19;} //20-nal nagyobb
- if (idos>30){
- idost=14;idose=idos-29;} //30-nal nagyobb
- if (idos>40){
- idost=15;idose=idos-39;} //40-nel nagyobb
- if (idos>50){
- idost=16;idose=idos-49;} //50-nel nagyobb
- if (idos==0) {
- idost=255;idose=1;} //pont 0
- if (idos==10) {
- idost=255;idose=11;} //pont 10
- if (idos==20) {
- idost=255;idose=20;} //pont 20
- if (idos==30) {
- idost=255;idose=14;} //pont 30
- if (idos==40) {
- idost=255;idose=15;} //pont 40
- if (idos==50) {
- idost=255;idose=16;}} //pont 50
- void scroll() //kepernyo tartalmat balra kifuttatja
- {
- for (int i=0; i<17; i++){
- lcd.scrollDisplayLeft();delay(140);}}
- void idoalap ()
- {
- oszto = ! oszto; //0.5 masodperces a megszakitas, az 1 sec-hez kell
- if (digitalRead(3) == LOW){
- szoveg();} //HANG gombot nyomtak, kimondja a pontos idot
- // menu valaszto gomb figyeles
- if (digitalRead(9) == LOW) {
- ++menus;}
- if (menus==6 && Alarm==0){ //ha nincs bekapcsolva az ebresztes, nem kell az idejet beallitani...
- menus=0;}
- if (menus==8) {
- menus=0;}
- if (oszto == 0) {
- ++Mperc;} //lepteti az idoszamlalokat
- if (Mperc == 60){
- ++Perc; Mperc=0;}
- if (Perc == 60) {
- ++Ora; Perc=0;}
- if (Ora == 24) {
- Ora=0; ++Nap;
- if (Honap==2 && Nap>28){ //honapot, napot leptet
- Nap=1;++Honap;}
- if ((Honap==4 || Honap==6 || Honap==9 || Honap==11) && Nap>30) { //30 napos honapok
- Nap=1;++Honap;}
- else {
- if (Nap>31) {
- Nap=1;++Honap;}}
- if (Honap>12){
- Honap=1;}
- lcd.clear();
- }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement