Sisukord:

Hommikune sõber: 8 sammu
Hommikune sõber: 8 sammu

Video: Hommikune sõber: 8 sammu

Video: Hommikune sõber: 8 sammu
Video: БОЕВИК, РАССКАЗЫВАЮЩИЙ, КАК РОЖДАЛСЯ СОБР В ЛИХИЕ 90 - е. Собр. 2024, Juuli
Anonim
Image
Image

Mõnel inimesel on väga tihe graafik, mistõttu on lihtne üks või kaks asja unustada. Selle äratuskellaga saate seadistada mitu äratust, et hoida teid graafikus. Kell töötab ööpäevaringselt ja piisab vaid selle programmeerimisest, et see lülituks välja vastavalt teie ajakavale erinevatel kellaaegadel. Kui teete seda, ilmuvad teie määratud ajad LCD -ekraanile, et saaksite veenduda, et need on õiged ja toimivad täiendava meeldetuletusena.

1. samm: idee ajurünnak

Joonistamine ja materjalid
Joonistamine ja materjalid

Probleemi lahendades kasutasime idee leidmiseks kalaluude meetodit ja saime oma äratuskella.

2. samm: visandamine ja materjalid

Joonistamine ja materjalid
Joonistamine ja materjalid

Selle sammu ajal proovisime koostada nimekirja kõigist asjadest, mida arvasime, et vajame elektroonika ja väliskesta jaoks. Siis mõtlesime välja visandi, milline me tahame äratuskella välja nägema ja kuidas me selle väliskesta kokku paneme.

3. samm: välimise korpuse loomine

Välise korpuse loomine
Välise korpuse loomine
Välise korpuse loomine
Välise korpuse loomine

Esimese prototüübi jaoks tahtsin lihtsalt näha, kuidas sõrmeühendused kokku sobivad, seega kasutasin kingakarpi ega kasutanud täpseid mõõtmisi.

4. samm: väliskesta lõikamine laseriga

Väliskesta lõikamine laseriga
Väliskesta lõikamine laseriga

Teise prototüübi jaoks tahtsin saada täpseid mõõtmisi ja pidin laserlõikurile saatmiseks looma pdf -faili. Selleks kasutasin karbitegija rakenduse veebisaiti https://boxdesigner.connectionlab.org. Seejärel sisestasin sellel veebisaidil kasti kolmemõõtmelised mõõtmed, meie materjali paksuse, mõõtühikud ja selle, millist tüüpi faili ma soovisin luua. Karpide mõõtmed olid 7,5 x 3 x 5 tolli ja ma kasutasin 1/8 paksust akrüülmaterjalist. Seejärel konfigureeriti sõrmeühenduste sälkude mõõtmed automaatselt 0,46875 tollile. Valisin pdf -versiooni, kuna seda tüüpi faili loeb laserlõikur ja tahtsin failis Adobe'is mõningaid muudatusi teha. Muutsin joonte värvid punaseks, et laserlõikur oskaks need kuju lõikamise asemel välja lõigata, ja lisasin ristkülikukasti mõõtmetega 3,92 tolli ja 1,56 tolli kohta selle kohta, mis saab olema esiosa. kast. Lisasin ka ristküliku, mille mõõtmed on 1 tolli kuni 0,5 tolli ja mis on välja lõigatud paremal küljel, allosas, et olla äratuskellaga ühendatud juhtme ava. Viimati lisasin ülaosas kolm ümmargust ava kahe helisignaali ja nupu jaoks. Signaali avade läbimõõt oli 0,5 tolli ja nupu ava 0,375 tolli.

5. samm: pange see kokku

Selle kokku panemine
Selle kokku panemine

Kui kõik tükid olid välja lõigatud, kasutasin selle sulgemiseks süstalt ja akrüülliimi. Hoidsin tükke kokku ja tilgutasin liimi sälkude vahele, et küljed kokku saada, kuid ülemist külge ei liimitud.

6. samm: kood

Sissejuhatus:

See projekt kodeeriti Arduino IDE tarkvara keeles c ++. Kasutatud mikrokontroller oli NodeMCU koos ESP8266-ga. Selle projekti jaoks vajame viisi aja täpseks hoidmiseks, helisignaali helisignaali, häiresüsteemi, mis tekitab häire, ja ekraani, mis kuvab kogu kellaaja ja äratusajad. Täieliku koodi leiate sellelt lingilt

Raamatukogude importimine

Kõigepealt peame importima vajalikud teegid.

#include "RTClib.h"

#kaasama "Wire.h" #kaasama #kaasama #kaasama #kaasama

Muutujate algatamine

Järgmisena peame muutujad hilisemaks initsieerima, määrama summeri nuppude tihvtide paigutuse, seadistama RTC ja seadistama LCD -ekraani I2C -aadressi.

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int helisignaal1 = 12; const int helisignaal2 = 0; const int nupp = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"pühapäev", "esmaspäev", "teisipäev", "kolmapäev", "neljapäev", "reede", "laupäev"} int algusaeg; int aktivetime; int eeltööaeg = 0; char ahours1 [3]; char amins1 [3]; int tund1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int tund2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int tund3 = 0; int min3 = 0; int alarm = 0; int ByteReceived; char saanudChar; const bait numChars = 32; süsinik saadud sümbolid [numbrid];

Seadistamine

Järgmisena peab meil olema funktsioon, mis käivitab kõik vajalikud protsessid. Selle funktsiooni puhul peame käivitama LCD -ekraani ja printima esialgsed ajad, tegema väiksema funktsiooni, mis annab RTC -le reaalajas, kui seda veel pole, ja käivitama jadamonitori.

tühine seadistus () {

#ifndef ESP8266 while (! Serial); #endif if (! rtc.begin ()) {Serial.println ("RTC -d ei leitud"); samas (1); } if (rtc.lostPower ()) {Serial.println ("RTC kaotas toite, lubame määrata aja!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd.taustavalgus (); // lülitab Baklighti sisse. lcd.clear (); // Kustutab LCD lcd.print ("00:00"); // kuvatakse LCD -l pärast koodi üleslaadimist lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Aeg"); lcd.setCursor (10, 1); lcd.print ("Alarm 1"); lcd.setCursor (0, 3); lcd.print ("Alarm 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarm 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (nupp, INPUT); // Vaigistusnupu pin -režiimi pinMode (sumin1, OUTPUT) määramine; // määrake sumisti väljundi pin pinMode (buzzer2, OUTPUT); // määrake tihvti summeri väljundile Serial.begin (9600); Serial.println ("Häirete sisendaeg HHMM -vormingus, kusjuures häirete vahel pole tühikut"); algusaeg = millis ()/1000; }

Andmete vastuvõtmine

Nüüd peame suutma äratusajad vastu võtta. Selleks lõime funktsiooni, et saada andmeid jadamonitorilt ja salvestada need massiivi.

void recvWithEndMarker () {

staatiline int ndx = 0; String timein = Serial.readString (); jaoks (ndx = 0; timein [ndx]; ndx ++) {saidisümbolid [ndx] = timein [ndx]; } ReceiveChars [ndx] = '\ 0'; Serial.print (ReceiveChars); }

Alarmide seadistamine

Järgmine samm on äratuste seadmine. Siin on häire 1. kood. Alarmi 2 ja 3 puhul korrati sama protsessi mõne numbrimuudatusega.

/* Alarm 1*/

recvWithEndMarker (); int h, m; jaoks (h = 0; h <2; h ++) {ahours1 [h] = saanudChars [h]; } jaoks (m = 2; m <4; m ++) {amins1 [m-2] = saadudChars [m]; } tundi1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); tund1 = atoi (tunnid1); min1 = atoi (amins1); Serial.print (tund1); Seeriatrükk (min1);

Signaal/nupp

Kui see on tehtud, peame helisignaali välja lülitama, kui reaalajas ja äratuse aeg on võrdsed. Ka selles etapis teeme edasilükkamise sarnase nupu, mis peatab helisignaali hoidmise ajal.

/ * Vaigistamise nupp */

int vaikus; int b; b = digitalRead (2); kui (b == MADAL) {vaikus = 1; } muu {vaikus = 0; } / * Algusalarm * / if (tunnid == tund1 && min == min1) {alarm = 1; } muidu kui (tunnid == tund2 && min == min2) {alarm = 1; } muidu kui (tunnid == tund3 && min = = min3) {alarm = 1; } muu {alarm = 0; vaikus = 0; } if (alarm == 1 && vaikus == 0) {tone (summeri1, 4000, 1000); toon (sumin2, 4000, 1000); viivitus (1000); noTone (sumin1); noTone (sumin2); viivitus (1000); }

Trükiajad

Lõpuks peame printima häire ajad ja reaalajas LCD -ekraanile.

DateTime now = rtc.now ();

int tundi = (praegu.tund ()); int mins = (nüüd.minute ()); / * Äratuse aeg vormingus 00:00 */ lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd.print (amins2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd.print (amins3); / * Kuvamisaeg RTC -st */ lcd.setCursor (0, 0); lcd.print (tundi); lcd.print (":"); lcd.print (min);

7. samm: elektroonika

Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika
Elektroonika

Selle projekti elektroonikas on mitu tükki, nagu on näha materjalide loendist. Esimene pilt on projekti lõpliku elektroonika skeem. Teine pilt on meie viimane elektrooniline disain. Kolmas pilt on meie projektist teise prototüübi keskel.

Alustamiseks kinnitage oma NodeMCU oma leivalaua kaugemasse otsa. Seejärel peate ühendama kogu muu elektroonika NodeMCU ja leivalauaga. Alustuseks ühendage oma LCD -ekraan SCL -i tihvtidega D1 ja SDA -ga D2. LCD -ekraan võimaldab kasutajal näha praegust aega ja seatud äratusaegu. Nüüd laske traadil ühendada oma summerid tihvtidega D3 ja D6. Summurid võimaldavad alarmil kasutajat hoiatada, kui määratud aeg on täis. Alarmi peatamiseks peate nüüd kinnitama nupu. Kinnitage see nupp tihvti D4 külge. Nüüd kinnitate oma reaalajas kella leivaplaadile. Ühendage reaalajas kell nii, et see kasutaks samu SDA- ja SCL-kontakte, mida kasutatakse LCD-ekraanil.

8. samm: finaal

Finaal
Finaal

Kui olete antud teavet järginud, võib teie projekt välja näha nagu ülaltoodud pilt. Soovime teile õnne selle projekti taasloomise katsetes ja kui olete oma projekti lõpetanud, soovitame teil kommentaarides meiega pilte ja märkusi jagada. Aitäh ja edu kaastegijatele.

Soovitan: