SHARE
TWEET

Untitled

a guest May 19th, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   // include the library code:
  2. #include <LiquidCrystal.h>
  3.  
  4. // initialize the library with the numbers of the interface pins
  5. LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
  6. volatile byte oszto = 0;  //0.5 sec-es a megszakitas, 1 sec-re hozza fel
  7. volatile byte menus  = 1;  //menu valaszto segedvaltozo, beallitassal kezd
  8. volatile byte idos = 0;    //Az ido kimondasahoz segedvaltozo
  9. volatile byte idost = 0;    //Az ido tizeseinek kimondasahoz segedvaltozo
  10. volatile byte idose = 0;    //Az ido egyeseinekkimondasahoz segedvaltozo
  11. volatile byte Ora = 12;      
  12. volatile byte Perc = 30;
  13. volatile byte Mperc = 0;
  14. volatile byte Hora;        //Az ido kimondasahoz segedvaltozok
  15. volatile byte Hperc;
  16. volatile byte Hmperc;
  17. volatile byte Horat;
  18. volatile byte Hperct;
  19. volatile byte Hmperct;
  20. volatile byte Horae;
  21. volatile byte Hperce;
  22. volatile byte Hmperce;
  23. volatile byte Ev = 15;    //Datum ev
  24. volatile byte Honap = 10;  //Datum honap
  25. volatile byte Nap = 29;    //Datum nap
  26. volatile byte Eora = 12;    //Ebresztes ora
  27. volatile byte Eperc = 30;    //Ebresztes perc
  28. volatile byte Alarm = 0; // Ebreszto bekapcsolva(1)
  29. volatile word prell = 400; //bill. pergesmentesires hasznalja
  30. byte a1[8] = {B10,B100,B1110,B1,B1111,B10001,B1111};  //á
  31. byte e1[8] = {B10,B100,B11111,B10000,B11100,B10000,B11111}; //nagy É
  32. byte i1[8] = {B100,B100,B01010,B10001,B11111,B10001,B10001};  //nagy Á
  33. byte o1[8] = {B100,B100,B0,B1110,B10001,B10001,B1110}; // hosszú ó
  34. byte o2[8] = {B1010,B0,B1110,B10001,B10001,B10001,B1110};  //ö
  35. byte o3[8] = {B1010,B1010,B0,B1110,B10001,B10001,B1110}; // hosszú ő
  36. byte u1[8] = {B1,B1,B10,B10,B100,B10100,B1100,B1000}; // pipa
  37. byte u2[8] = {B100,B100,B1110,B10001,B10001,B10001,B11111,B100}; // harang
  38. byte u3[8] = {B11011,B11011,B100,B100,B10101,B10001,B1110,B0}; // vigyori
  39.    //kis ekezetes betuk
  40.   void setup() {
  41.     Serial.begin(2400); //hanghoz kell
  42.     delay(500);
  43.       //karakterdefinialas
  44.   lcd.createChar(0, a1);
  45.   lcd.createChar(1, e1);
  46.   lcd.createChar(2, i1);
  47.   lcd.createChar(3, o1);
  48.   lcd.createChar(4, o3);
  49.   lcd.createChar(5, u1);
  50.   lcd.createChar(6, u2);
  51.   lcd.createChar(7, u3);
  52.   delay(500);
  53.   pinMode(13,OUTPUT);
  54.    //D2 H--> L szintre valt
  55.   pinMode(2,INPUT);
  56.     //D2 belso felhuzoellenallas
  57.     digitalWrite(2, HIGH);
  58.     // HANG nyomogomb
  59.     pinMode(3,INPUT);
  60.     digitalWrite(3, HIGH);
  61.     // MENU nyomogomb
  62.     pinMode(9,INPUT);
  63.     digitalWrite(9, HIGH);
  64.     // PLUSZ nyomogomb
  65.     pinMode(8,INPUT);
  66.     digitalWrite(8, HIGH);
  67.     // MINUSZ nyomogomb
  68.     pinMode(10,INPUT);
  69.     digitalWrite(10, HIGH);
  70.     //Megszakitaskezeles
  71.   attachInterrupt(0, idoalap, FALLING);
  72.   digitalWrite(13,HIGH);  // bekapcsolja a hattervilagitast
  73.   // beallitja, hany sor, s hany karakter lesz
  74.   lcd.begin(16, 2);
  75.   // kiirja a szoveget az LCD-re
  76.   lcd.print(" ");lcd.write(1); lcd.print("breszt"); lcd.write(4); lcd.print("s "); lcd.write(3); lcd.print("ra");
  77.   lcd.setCursor(0,1);
  78.   lcd.print("Apjok ");lcd.write(2);lcd.print("kos 2015.");
  79.    delay(8000);
  80.    scroll();
  81.    lcd.clear();}
  82.  
  83. void loop() {
  84.   switch (menus) {
  85.   case 0:
  86.   kiir();    //alaphelyzet, kiirja az idot, s a datumot
  87.   break;
  88.   case 1:    //beallitas menuk eleje
  89.   digitalWrite(13,HIGH);  // bekapcsolja a hattervilagitast
  90.       lcd.setCursor(0,0);lcd.print("ora beallitas:  ");
  91.   lcd.setCursor(0,1);lcd.print(Ora);lcd.print("               ");
  92.   if (digitalRead(8) == LOW){
  93.     ++Ora;}
  94.   if (digitalRead(10) == LOW){
  95.     --Ora;}
  96.     if (Ora>23) {
  97.     Ora=0;}
  98.   if (Ora<0) {
  99.   Ora=23;}
  100.  delay(prell);
  101.   break;
  102.   case 2:
  103.   lcd.setCursor(0,0);lcd.print("perc beallitas: ");
  104.   lcd.setCursor(0,1);lcd.print(Perc);lcd.print("                ");
  105.   if (digitalRead(8) == LOW){
  106.     ++Perc;}
  107.   if (digitalRead(10) == LOW){
  108.     --Perc;}
  109.     if (Perc>59) {
  110.     Perc=0;}
  111.   if (Perc<0) {
  112.   Perc=59;}
  113.  delay(prell);
  114.   Mperc=0;
  115.     break;
  116. case 3:
  117.     lcd.setCursor(0,0);lcd.print("honap beallitas:");
  118.   lcd.setCursor(0,1);lcd.print(Honap);lcd.print("                ");
  119.   if (digitalRead(8) == LOW){
  120.     ++Honap;}
  121.   if (digitalRead(10) == LOW){
  122.     --Honap;}
  123.     if (Honap>12) {
  124.     Honap=1;}
  125.   if (Honap<1) {
  126.   Honap=12;}
  127.  delay(prell);
  128.   break;
  129. case 4:
  130.     lcd.setCursor(0,0);lcd.print("nap beallitas:  ");
  131.   lcd.setCursor(0,1);lcd.print(Nap);lcd.print("                ");
  132.   if (digitalRead(8) == LOW){
  133.     ++Nap;}
  134. if (Honap==2 && Nap>28){
  135. Nap=1;}
  136. if ((Honap==4 || Honap==6 || Honap==9 || Honap==11) && Nap>30) {
  137.   Nap=1;}
  138.   else {
  139.     if (Nap>31) {
  140.       Nap=1;}}
  141.   if (digitalRead(10) == LOW){
  142.     --Nap;}
  143.   if (Nap<1) {
  144.   Nap=1;}
  145.  delay(prell);
  146.   break;  
  147. case 5:    //Ebreszto engedelyez/tilt
  148.     lcd.setCursor(0,0);lcd.print("Ebr. enged/tilt:");
  149.   lcd.setCursor(0,1);lcd.write(6);
  150.   if (Alarm==1){
  151.     lcd.write(5);}
  152.     else {
  153.     lcd.print(" ");}
  154.   lcd.print("                ");
  155.   if (digitalRead(8) == LOW){
  156.     Alarm=1;lcd.setCursor(0,1);lcd.write(6);lcd.write(5);lcd.print("              ");}
  157.   if (digitalRead(10) == LOW){
  158.     Alarm=0;lcd.setCursor(0,1);lcd.write(6);lcd.print("               ");}
  159.   delay(prell);
  160.      break;  
  161. case 6:
  162.       lcd.setCursor(0,0);lcd.print("Ebr.ora beall.: ");
  163.   lcd.setCursor(0,1);lcd.print(Eora);lcd.print("               ");
  164.   if (digitalRead(8) == LOW){
  165.     ++Eora;}
  166.   if (digitalRead(10) == LOW){
  167.     --Eora;}
  168.     if (Eora>23) {
  169.     Eora=0;}
  170.   if (Eora<0) {
  171.   Eora=23;}
  172.  delay(prell);
  173.   break;
  174. case 7:
  175.       lcd.setCursor(0,0);lcd.print("Ebr.perc beall.:");
  176.   lcd.setCursor(0,1);lcd.print(Eperc);lcd.print("               ");
  177.   if (digitalRead(8) == LOW){
  178.     ++Eperc;}
  179.   if (digitalRead(10) == LOW){
  180.     --Eperc;}
  181.     if (Eperc>59) {
  182.     Eperc=0;}
  183.   if (Eperc<0) {
  184.   Eperc=59;}
  185.  delay(prell);
  186.   break;  
  187.       }}
  188.      
  189. void kiir(){    //kiirja az idot,s a datumot
  190.   if (Ora>19 || Ora<7){
  191.   digitalWrite(13,HIGH);}  // bekapcsolja a hattervilagitast  
  192.   else{
  193.   digitalWrite(13,LOW);}  // kikapcsolja a hattervilagitast  
  194. if (Alarm==1 && Mperc==0 && Ora==Eora && Perc==Eperc) { // Ebresztes!!!
  195. ebreszto();}
  196.     lcd.setCursor(0,0);lcd.print("   ");
  197.       if (Ora < 10) {
  198.     lcd.print(" ");}
  199.   lcd.print(Ora); lcd.print(":");
  200.    if (Perc < 10) {
  201.     lcd.print("0");}
  202.     lcd.print(Perc); lcd.print(":");
  203.  if (Mperc < 10) {
  204.   lcd.print("0");}
  205.   lcd.print(Mperc); lcd.print(" ");
  206.   if (Alarm==1) {
  207.   lcd.write(6); lcd.write(5);lcd.print("  ");}
  208.   else{
  209.     lcd.print("     ");}
  210.   lcd.setCursor(0,1);lcd.print("   ");
  211.   lcd.print("20");lcd.print(Ev);lcd.print(".");lcd.print(Honap);lcd.print(".");lcd.print(Nap);lcd.print(".");lcd.print("  ");}
  212.  
  213. void  szoveg(){
  214.   Hora = Ora; Hperc = Perc; Hmperc = Mperc; //elmentem az aktualis idot
  215.   Hmperc=Hmperc+7; //Hozzaadok 7 sec-et, hogy a pontos idot mondja ki
  216.   if (Hmperc > 59) {
  217.   Hmperc=Hmperc-60; Hperc=Hperc+1;}
  218.     if (Hperc > 59) {
  219.     Hperc=0; Hora=Hora+1;}
  220.       if (Hora > 23) {
  221.       Hora=0;}
  222.       //innen kezdodik az ido szovegre konvertalasa
  223. idos=Hora;Valt();Horat=idost;Horae=idose;  //orat konvertalja
  224. idos=Hperc;Valt();Hperct=idost;Hperce=idose;  //percet konvertalja
  225. idos=Hmperc;Valt();Hmperct=idost;Hmperce=idose;  //masodpercet konvertalja
  226.       Serial.write(13); //kimondja az osszevagott szoveget
  227.       Serial.write(137); //128+db szoveg
  228.       Serial.write(Horat);  Serial.write(Horae);
  229.       Serial.write(17);  //ora
  230.       Serial.write(Hperct); Serial.write(Hperce);
  231.       Serial.write(18);  //perc
  232.       Serial.write(Hmperct); Serial.write(Hmperce);
  233.       Serial.write(19);}  //masodperc
  234.  
  235.   void ebreszto()  // Ebresztes!!!
  236.   {
  237.    Serial.write(13); //kimondja az osszevagott szoveget
  238.    Serial.write(129); //128+db szoveg
  239.    Serial.write(21);}  // Ne lazsalj!
  240.  
  241.   void Valt()  //az adott idot atvaltja kimondhatova
  242.   {
  243.     idost=255;idose=idos+1;  // 10-nel kisebb
  244.     if (idos>10){
  245.        idost=12;idose=idos-9;}  //10-nel nagyobb
  246.     if (idos>20){
  247.        idost=13;idose=idos-19;}   //20-nal nagyobb
  248.      if (idos>30){
  249.        idost=14;idose=idos-29;}  //30-nal nagyobb
  250.      if (idos>40){
  251.        idost=15;idose=idos-39;}    //40-nel nagyobb
  252.      if (idos>50){
  253.        idost=16;idose=idos-49;}    //50-nel nagyobb
  254.     if (idos==0) {
  255.       idost=255;idose=1;}    //pont 0
  256.     if (idos==10) {
  257.       idost=255;idose=11;}  //pont 10
  258.     if (idos==20) {
  259.       idost=255;idose=20;}  //pont 20
  260.     if (idos==30) {
  261.       idost=255;idose=14;}  //pont 30
  262.     if (idos==40) {
  263.       idost=255;idose=15;}  //pont 40
  264.     if (idos==50) {
  265.       idost=255;idose=16;}} //pont 50
  266.  
  267.   void scroll()    //kepernyo tartalmat balra kifuttatja
  268.   {
  269.      for (int i=0; i<17; i++){
  270.   lcd.scrollDisplayLeft();delay(140);}}
  271.  
  272.    void idoalap ()
  273. {  
  274.   oszto = ! oszto;  //0.5 masodperces a megszakitas, az 1 sec-hez kell
  275.   if (digitalRead(3) == LOW){
  276.   szoveg();}      //HANG gombot nyomtak, kimondja a pontos idot
  277.   // menu valaszto gomb figyeles
  278.   if (digitalRead(9) == LOW) {
  279.     ++menus;}
  280.     if (menus==6 && Alarm==0){    //ha nincs bekapcsolva az ebresztes, nem kell az idejet beallitani...
  281.       menus=0;}
  282.     if (menus==8) {
  283.       menus=0;}
  284.    if (oszto == 0) {
  285.    ++Mperc;} //lepteti az idoszamlalokat
  286.     if (Mperc == 60){
  287.     ++Perc; Mperc=0;}
  288.      if (Perc == 60) {
  289.      ++Ora; Perc=0;}
  290.       if (Ora == 24) {
  291.       Ora=0; ++Nap;
  292. if (Honap==2 && Nap>28){    //honapot, napot leptet
  293. Nap=1;++Honap;}
  294. if ((Honap==4 || Honap==6 || Honap==9 || Honap==11) && Nap>30) { //30 napos honapok
  295.   Nap=1;++Honap;}
  296.   else {
  297.     if (Nap>31) {
  298.       Nap=1;++Honap;}}  
  299.   if (Honap>12){
  300.   Honap=1;}
  301. lcd.clear();
  302. }}
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top