Բովանդակություն:

Առավոտ ընկեր: 8 քայլ
Առավոտ ընկեր: 8 քայլ

Video: Առավոտ ընկեր: 8 քայլ

Video: Առավոտ ընկեր: 8 քայլ
Video: Գեղեցիկ խոսքեր 2024, Հուլիսի
Anonim
Image
Image

Ոմանք շատ զբաղված գրաֆիկ ունեն, ինչը հեշտացնում է մեկ -երկու բան մոռանալը: Այս զարթուցիչի օգնությամբ դուք կարող եք մի քանի ահազանգ տեղադրել `ժամանակացույցի վրա պահելու համար: Theամացույցը գործում է 24-ժամյա ռեժիմով, և մնում է միայն ծրագրել, որ այն անջատվի օրվա տարբեր ժամերին, որոնք համապատասխանում են ձեր ժամանակացույցին: Երբ դա անում եք, ձեր սահմանած ժամանակները կհայտնվեն LCD էկրանին, այնպես որ կարող եք ստուգել `համոզվելու համար, որ դրանք ճիշտ են և ծառայում են որպես լրացուցիչ հիշեցում:

Քայլ 1. Մտածեք գաղափարի մասին

Էսքիզներ և նյութեր
Էսքիզներ և նյութեր

Երբ մենք փորձում էինք լուծել հարցը, մենք ձկնորսության մեթոդով գաղափար ստեղծեցինք և արդյունքում ստացանք մեր զարթուցիչը:

Քայլ 2: Էսքիզ և նյութեր

Էսքիզներ և նյութեր
Էսքիզներ և նյութեր

Այս քայլի ընթացքում մենք փորձեցինք կազմել այն բոլոր իրերի ցուցակը, որոնք մենք կարծում էինք, որ մեզ անհրաժեշտ կլինեն էլեկտրոնիկայի և արտաքին պատյանների համար: Հետո մենք եկանք մի ուրվագծով, թե ինչպիսին ենք ուզում լինել զարթուցիչը և ինչպես ենք հավաքելու դրա արտաքին պատյանը:

Քայլ 3: Արտաքին պատյան ստեղծելը

Արտաքին պատյան ստեղծելը
Արտաքին պատյան ստեղծելը
Արտաքին պատյան ստեղծելը
Արտաքին պատյան ստեղծելը

Առաջին նախատիպի համար ես պարզապես ուզում էի տեսնել, թե ինչպես են մատների հոդերը տեղավորվում միմյանց հետ, ուստի ես օգտագործեցի կոշիկի տուփ և չկիրառեցի ճշգրիտ չափումներ:

Քայլ 4: Արտաքին պատյանների լազերային կտրում

Լազերային կտրում արտաքին պատյան
Լազերային կտրում արտաքին պատյան

Երկրորդ նախատիպի համար ես ուզում էի ճշգրիտ չափումներ ստանալ և ստիպված էի ստեղծել pdf ՝ լազերային դանակին ուղարկելու համար: Որպեսզի դա անեմ, ես օգտագործեցի տուփեր ստեղծող հավելվածների կայք ՝ https://boxdesigner.connectionlab.org: Այդ կայքում ես այնուհետև մուտքագրեցի տուփի եռաչափ չափերը, մեր նյութի հաստությունը, չափման միավորները և այն, թե ինչ տեսակի ֆայլ եմ ուզում ստեղծել: Տուփերի չափսերն էին 7,5 x 3 x 5 դյույմ, և ես օգտագործեցի 1/8 հաստ ակրիլային նյութ: Այնուհետև մատների հոդերի չափումների չափումները ինքնաբերաբար կազմաձևվեցին 0,46875 դյույմ: Ես ընտրեցի pdf տարբերակը, որովհետև դա ֆայլի այն տեսակն է, որը կարդում է լազերային դանակը, և ես ուզում էի որոշ փոփոխություններ կատարել ֆայլում adobe- ում: Գծի գույները փոխեցի կարմիրի, որպեսզի լազերային կտրիչը իմանա դրանք կտրել ՝ ձևը փորագրելու փոխարեն, և ավելացրեցի ուղղանկյուն տուփ ՝ 3.92 դյույմ չափերով ՝ 1.56 դյույմով, այն, ինչ լինելու էր առջևի հատվածը: տուփ: Ես նաև ավելացրեցի ուղղանկյուն, որը կտրված էր 1 դյույմ ՝ 0.5 դյույմ, ներքևի աջ կողմում, որպեսզի ծառայեր որպես զարթուցիչին միացված լարի բաց: Վերջում ես երեք շրջանաձև բացվածք ավելացրի վերևում ՝ երկու բզզոցների և կոճակի համար: Zխի բացվածքների տրամագիծը 0.5 դյույմ էր, իսկ կոճակի բացումը `0.375 դյույմ:

Քայլ 5: Միավորել այն

Միասին դնելը
Միասին դնելը

Երբ բոլոր կտորները կտրվեցին, ես ներարկիչով և ակրիլային սոսինձով ամրացրեցի այն: Ես կտորները միասին պահեցի և սոսինձը կաթեցի ակոսների միջև ՝ կողքերը միասին կազմելու համար, բայց վերևը սոսնձված չէր:

Քայլ 6: Կոդ

Ներածություն:

Այս նախագիծը կոդավորված է ՝ օգտագործելով Arduino IDE ծրագրաշարի c ++ լեզուն: Օգտագործված միկրոհսկիչը NodeMCU- ն էր ESP8266- ով: Այս նախագծի համար մեզ անհրաժեշտ կլինի ժամանակը ճշգրիտ պահելու միջոց, ազդանշանի ձայն, ազդանշանային համակարգի ազդանշանային ազդանշանի ազդանշանային համակարգ, և էկրան `ամբողջ ժամանակը և տագնապի ժամերը ցուցադրելու համար: Ամբողջական ծածկագրի համար տե՛ս այս հղումը ՝

Գրադարանների ներմուծում

Առաջին հերթին, մենք պետք է ներմուծենք անհրաժեշտ գրադարանները:

#ներառել «RTClib.h»

#ներառել «Wire.h» #ներառել #ներառել #ներառել #ներառել

Փոփոխականների նախաձեռնում

Հաջորդը, մենք պետք է փոփոխականներ գործարկենք հետագայում, նշանակենք ազդանշանային կոճակների քորոցների դասավորությունը, կարգավորենք RTC- ը և LCD էկրանին I2C հասցեն սահմանենք:

LiquidCrystal_I2C LCD (0x27, 20, 4);

const int buzzer1 = 12; const int buzzer2 = 0; const int կոճակ = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"կիրակի", "երկուշաբթի", "երեքշաբթի", "չորեքշաբթի", "հինգշաբթի", "ուրբաթ", "շաբաթ"} int starttime; int ակտիվ ժամանակ; int նախընտրական ժամանակ = 0; char ahours1 [3]; char amins1 [3]; int ժամ 1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int ժամ 2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int ժամ 3 = 0; int min3 = 0; int ահազանգ = 0; int ByteReceived; char recainedChar; const բայթ numChars = 32; char ստացվեց Chars [numChars];

Կարգավորում

Հաջորդը, մենք պետք է ունենանք գործառույթ, որը սկսում է բոլոր անհրաժեշտ գործընթացները: Այս գործառույթում մենք պետք է գործարկենք LCD- ն և տպենք սկզբնական ժամանակները, կատարենք ավելի փոքր գործառույթ, որը տալիս է RTC- ին իրական ժամանակ, եթե այն արդեն չունի, և գործարկենք սերիական մոնիտորը:

void setup () {

#ifndef ESP8266 իսկ (! Սերիա); #endif if (! rtc.begin ()) {Serial.println ("Չհաջողվեց գտնել RTC"); մինչդեռ (1); } if (rtc.lostPower ()) {Serial.println («RTC- ն կորցրեց էներգիան, թույլ տվեք սահմանել ժամանակը»); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))} lcd.init (); lcd. լուսարձակը (); // դարձնում է Baklight ON- ը: lcd. հստակ (); // Մաքրում է LCD lcd.print- ը («00:00»); // ցուցադրել LCD- ով կոդի վերբեռնումից հետո lcd.setCursor (10, 0); lcd.print («00:00»); lcd.setCursor (0, 1); lcd.print («"ամանակ»); lcd.setCursor (10, 1); lcd.print («rmարթուցիչ 1»); lcd.setCursor (0, 3); lcd.print («rmարթուցիչ 2»); lcd.setCursor (0, 2); lcd.print («00:00»); lcd.setCursor (10, 3); lcd.print («Alaարթուցիչ 3»); lcd.setCursor (10, 2); lcd.print («00:00»); rtc.begin (); pinMode (կոճակ, Մուտք); // Սահմանել քորոց լռության կոճակի համար pinMode (buzzer1, OUTPUT); // սահմանել քորոց ազդանշանային ելքային pinMode- ի համար (buzzer2, OUTPUT); // նշիչ դնել ազդանշանային թողարկման համար Serial.begin (9600); Serial.println («Ահազանգերի մուտքագրման ժամանակը HHMM ձևաչափով ՝ առանց ահազանգերի միջև տարածության»); մեկնարկ = millis ()/1000; }

Տվյալների ստացում

Այժմ մենք պետք է կարողանանք ստանալ ահազանգի ժամերը: Դա անելու համար մենք ստեղծեցինք գործառույթ ՝ սերիալային մոնիտորից տվյալները ստանալու և դրանք զանգվածում պահելու համար:

void recvWithEndMarker () {

ստատիկ int ndx = 0; String timein = Serial.readString (); համար (ndx = 0; timein [ndx]; ndx ++) {Ստացված Chars [ndx] = timein [ndx]; } Ստացված մրցանակներ [ndx] = '\ 0'; Serial.print (ստացել է Chars); }

Alaարթուցիչների կարգավորում

Հաջորդ քայլը ահազանգեր տեղադրելն է: Ահա ահազանգի ծածկագիրը 1. 2 -րդ և 3 -րդ ահազանգերի դեպքում նույն գործընթացը կրկնվեց մի քանի թվային փոփոխություններով:

/* Rmարթուցիչ 1*/

recvWithEndMarker (); int h, m; (h = 0; h <2; h ++) {aours 1 [h] = ստացված Chars [h]; } (m = 2; m <4; m ++) {amins1 [m-2] = ստացվել է Chars [m]; } ahours1 [h] = '\ 0'; ամիններ 1 [մ -2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); ժամ 1 = ատոյ (ժամ 1); min1 = ատոյ (ամիններ 1); Serial.print (ժամ 1); Serial.print (min1);

Buzzer/կոճակ

Ավարտելով դա, մենք պետք է ստիպենք ազդանշանը անջատել, երբ իրական ժամանակի և ահազանգի ժամանակը հավասար են: Նաև այս քայլում մենք կատարում ենք snooze- ի նման կոճակ, որը դադարեցնում է ազդանշանը, մինչ այն պահում եք:

/ * Լռության կոճակ */

ներքին լռություն; int բ; b = digitalRead (2); if (b == LOW) {լռություն = 1; } else {լռություն = 0; } / * Startարթուցիչ սկսել * / եթե (ժամ == ժամ 1 && րոպե == րոպե 1) {ահազանգ = 1; } else if (ժամ == ժամ 2 && րոպե == րոպե 2) {ահազանգ = 1; } else if (ժամ == ժամ 3 && րոպե == րոպե 3) {ահազանգ = 1; } else {ահազանգ = 0; լռություն = 0; } if (տագնապ == 1 && լռություն == 0) {տոն (ազդանշան 1, 4000, 1000); հնչերանգ (buzzer2, 4000, 1000); ուշացում (1000); noTone (buzzer1); noTone (buzzer2); ուշացում (1000); }

Տպագրական ժամանակներ

Ի վերջո, մենք պետք է տագնապի ժամերը և իրական ժամանակը տպենք LCD էկրանին:

DateTime now = rtc.now ();

int ժամ = (այժմ. ժամ ()); int mins = (այժմ. րոպե ()); / * Rmարթուցիչ ժամը 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); / * Displayուցադրման ժամանակը RTC- ից */ lcd.setCursor (0, 0); lcd.print (ժամ); lcd.print (":"); lcd.print (րոպե);

Քայլ 7: Էլեկտրոնիկա

Էլեկտրոնիկա
Էլեկտրոնիկա
Էլեկտրոնիկա
Էլեկտրոնիկա
Էլեկտրոնիկա
Էլեկտրոնիկա

Այս նախագծի էլեկտրոնիկայի մեջ կան բազմաթիվ կտորներ, ինչպես երևում է նյութերի օրինագծում: Առաջին պատկերը նախագծերի վերջնական էլեկտրոնիկայի սխեմատիկ պատկերն է: Երկրորդ պատկերը մեր վերջնական էլեկտրոնային ձևավորումն է: Երրորդ պատկերը մեր նախագծի երկրորդ նախատիպի արանքում է:

Սկսելու համար ամրացրեք ձեր NodeMCU- ն ձեր տախտակի ծայրին: Այնուհետև ձեզ հարկավոր կլինի ձեր մյուս բոլոր էլեկտրոնիկան միացնել NodeMCU- ին և տախտակին: Սկսեք `ձեր LCD էկրանը միացնելով SC1- ի համար D1 և SDA- ի համար D2 կապումներին: LCD- ն թույլ կտա օգտվողին տեսնել ընթացիկ ժամը և ազդանշանի սահմանված ժամերը: Այժմ մետաղալարով միացրեք ձեր ազդանշանները D3 և D6 կապումներին: Բզզոցները թույլ կտան ահազանգին զգուշացնել օգտվողին, երբ սահմանված ժամանակը հասնի: Այժմ դուք պետք է կցեք մի կոճակ, որը թույլ կտա ազդանշանը դադարեցնել: Կցեք այս կոճակը D4 ամրացմանը: Այժմ դուք կցեք ձեր իրական ժամանակի ժամացույցը հացատախտակին: Միացրեք իրական ժամանակի ժամացույցը, որպեսզի այն օգտագործի նույն SDA և SCL կապերը, որոնք օգտագործվում են LCD էկրանին:

Քայլ 8: Վերջնական

Վերջնական
Վերջնական

Եթե հետևել եք տրված տեղեկատվությանը, ձեր նախագիծը կարող է նմանվել վերը նշված պատկերին: Մաղթում ենք ձեզ հաջողություն այս նախագիծը վերստեղծելու ձեր փորձերում, և երբ ավարտեք ձեր նախագիծը, մենք խրախուսում ենք ձեզ կիսվել նկարներով և դիտողություններով մեզ հետ մեկնաբանություններում: Շնորհակալություն և հաջողություն ընկերներ:

Խորհուրդ ենք տալիս: