Pametna budilica
Osnovna škola ZametVideo snimka
Izrada projekta
Laserska dioda i foto otpornik. U trenutku prekida laserske zrake dolazi do promjene izlazne vrijednosti na foto otporniku. Posljedično, gasi se svjetlo pametne budilice.
Mobilna aplikacija
Shema projekta
Shema grafički prikazuje projekt pametne budilice.
Shemu ovoga projekta možete preuzeti ovdje.
Arduino program
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
#define BLYNK_PRINT SerialUSB #include #include #include #include #include // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "b6866a82e925480db0520a53b9a5c3cb"; // Your WiFi credentials. // Set password to "" for open networks. char ssid[] = "P2 Lite"; char pass[] = "12345678ab"; int fo = A0; int r = 3, b = 5, g = 4; int laser = 7; int alarm = 0; int hours, minutes, seconds, currTime; int diff; int brightness = 0; int last = 0; int cnt = 0; int changed = 0; bool radi = true; WidgetTerminal terminal(V1); WidgetRTC rtc; BLYNK_WRITE(V1) { String curr = param.asStr(); if (String("on") == param.asStr()) { //upali ledicu terminal.println("Palim svjetlo"); radi = true; } else if (String("off") == param.asStr()) { //ugasi ledicu terminal.println("Gasim svjetlo"); analogWrite(r, 0); analogWrite(g, 0); analogWrite(b, 0); radi = false; } else if (curr.length() > 12){ //postavi alarm za pametnu budilicu radi = true; String alarmStr = ""; for (int i = 13; i < curr.length(); ++i){ alarmStr += curr[i]; } int h = ((alarmStr[0] - '0') * 10) + (alarmStr[1] - '0'); int m = ((alarmStr[3] - '0') * 10) + (alarmStr[4] - '0'); alarm = h * 3600 + m*60; terminal.println("Your alarm is set to :" + alarmStr); last = 130; } terminal.flush(); } void changeBrightness(){ //ovo sluzi za mijenjanje boja dok pametna budilica radi hours = hour(); minutes = minute(); currTime = hours * 3600 + minutes * 60 + second(); diff = alarm - currTime; if (diff > 120 || diff < 0){ return; } if (diff < 120 && last != 120){ analogWrite(r, 150); analogWrite(g, 150); analogWrite(b, 0); } if (diff < 110 && last != 110){ analogWrite(r, 100); analogWrite(g, 100); analogWrite(b, 0); } if (diff < 100){ analogWrite(r, 150); analogWrite(g, 150); analogWrite(b, 0); } if (diff < 90 && last != 90){ analogWrite(r, 150); analogWrite(g, 100); analogWrite(b, 0); } if (diff < 80){ analogWrite(r, 100); analogWrite(g, 100); analogWrite(b, 0); } if (diff < 70){ analogWrite(r, 150); analogWrite(g, 100); analogWrite(b, 0); } if (diff < 60){ analogWrite(r, 200); analogWrite(g, 150); analogWrite(b, 0); } if (diff < 50){ analogWrite(r, 150); analogWrite(g, 150); analogWrite(b, 0); } if (diff < 40){ analogWrite(r, 200); analogWrite(g, 200); analogWrite(b, 0); } if (diff < 30){ analogWrite(r, 250); analogWrite(g, 200); analogWrite(b, 0); } if (diff < 20){ analogWrite(r, 200); analogWrite(g, 200); analogWrite(b, 0); } if (diff < 10){ analogWrite(r, 250); analogWrite(g, 200); analogWrite(b, 0); } } void saveEnergy(){ //ugasi svijetlo ako izadem iz sobe int val = analogRead(fo); if (val < 200 && changed == 0){ analogWrite(r, 0); analogWrite(b, 0); analogWrite(g, 0); changed = 1; } else if (val > 200){ changed = 0; r = 3; g = 4; b = 5; } } void cs(){ for (int i = 0; i <= 24; i++) { terminal.println(""); } terminal.flush(); } BLYNK_CONNECTED() { rtc.begin(); } void setup() { changed = 0; SerialUSB.begin(9600); Blynk.begin(auth, ssid, pass); cs(); pinMode(r, OUTPUT); pinMode(g, OUTPUT); pinMode(b, OUTPUT); pinMode(laser, OUTPUT); } void loop() { Serial.println(radi); Blynk.run(); if (radi){ //provjera dal radi digitalWrite(laser, HIGH); changeBrightness(); saveEnergy(); } else { analogWrite(r, 0); analogWrite(g, 0); analogWrite(b, 0); } } |
Arduino program ovoga projekta možete preuzeti ovdje.
Autori
Projekt su izradili Filip Višnić i Boris Španić uz mentorstvo Dine Abrule iz OŠ Zamet.
Projekt je prijavljen na temu: Internet of Things: Pametna rasvjeta.