Advertisement
Guest User

Untitled

a guest
May 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.46 KB | None | 0 0
  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. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement