Мазмұны:

Таңғы дос: 8 қадам
Таңғы дос: 8 қадам

Бейне: Таңғы дос: 8 қадам

Бейне: Таңғы дос: 8 қадам
Бейне: #Донор Қазірден бастап барлық кинотеатрларда! 2024, Қараша
Anonim
Image
Image

Кейбір адамдарда бос емес кестелер бар, бұл бір -екі нәрсені ұмытып кетуге мүмкіндік береді. Бұл оятқышпен сіз уақытты сақтау үшін бірнеше оятқышты орната аласыз. Сағат 24 рет жұмыс істейді және сізге оны күннің әр уақытында сіздің кестеңізге сәйкес келетін етіп бағдарламалау қажет. Бұл әрекетті орындаған кезде, сіз орнатқан уақыт СКД экранында пайда болады, осылайша сіз олардың дұрыстығын тексеріп, қосымша еске салғыш ретінде қызмет ете аласыз.

1 -қадам: Ойға ми шабуылы

Эскиз және материалдар
Эскиз және материалдар

Біз мәселені шешуге тырысқанда, біз идеяны ойлап табу үшін балық сүйегінің әдісін қолдандық және оятқышпен жұмыс жасадық.

2 -қадам: Эскиз және материалдар

Эскиз және материалдар
Эскиз және материалдар

Бұл қадамда біз электроника мен сыртқы корпусқа қажет болатын барлық нәрселердің тізімін жасауға тырыстық. Содан кейін біз оятқыштың қандай болуын қалайтынымызды және оның сыртқы корпусын қалай жинайтындығының эскизін ойлап таптық.

3 -қадам: Сыртқы корпусты құру

Сыртқы корпусты құру
Сыртқы корпусты құру
Сыртқы корпусты құру
Сыртқы корпусты құру

Алғашқы прототип үшін мен саусақ буындарының бір -бірімен қалай үйлесетінін көргім келді, сондықтан мен аяқ киім қорабын қолдандым және дәл өлшеуді пайдаланбадым.

4 -қадам: Сыртқы корпусты лазермен кесу

Сыртқы корпусты лазермен кесу
Сыртқы корпусты лазермен кесу

Екінші прототип үшін дәл өлшеуді алғым келді және лазерлік кескішке жіберу үшін pdf құруға тура келді. Мұны істеу үшін мен https://boxdesigner.connectionlab.org қорап жасаушы қосымшасының веб -сайтын қолдандым. Сол веб-сайтта мен қораптың 3-D өлшемдерін, біздің материалдың қалыңдығын, өлшем бірліктерін және қандай файл түрін жасағым келетінін енгіздім. Қораптардың өлшемдері 7,5 дюйм 3 х 5 дюйм болды, мен 1/8 дюйм қалың акрилді материалды қолдандым. Саусақ буындарының өлшемдері автоматты түрде 0,46875 дюймге теңшелді. Мен pdf нұсқасын таңдадым, себебі бұл лазерлік кескіш оқитын файл түрі және мен файлға Adobe -те кейбір өзгертулер енгізгім келді. Мен сызық түстерін қызылға өзгерттім, осылайша лазерлік кескіш пішінді ойып жазудың орнына оларды қиып алуды білуі үшін мен өлшемі 3,92 дюймнен 1,56 дюймге дейін төртбұрышты қорапты қостым. қорап. Мен сондай -ақ оятқышқа қосылған сымның саңылауы ретінде қызмет ету үшін төменгі жағындағы оң жақ бөлігінде өлшемі 1 дюймден 0,5 дюймге дейін кесілген тіктөртбұрышты қостым. Соңында мен екі дыбыстық сигнал мен түйменің жоғарғы жағындағы үш дөңгелек тесікті қостым. Дыбыстық сигналдардың диаметрі 0,5 дюйм, ал түйменің ашылуы 0,375 дюйм болды.

5 -қадам: оны біріктіру

Оны біріктіру
Оны біріктіру

Барлық бөліктерді кесіп тастағанда, мен шприц пен акрилді желімді қолдандым. Мен бөліктерді бір -біріне бекітіп, жақтарды біріктіру үшін ойықтардың арасына желім тамыздым, бірақ үстіңгі жағы жабыстырылмаған.

6 -қадам: код

Кіріспе:

Бұл жоба Arduino IDE бағдарламалық жасақтамасындағы c ++ тілінің көмегімен кодталған. Қолданылған микроконтроллер ESP8266 бар NodeMCU болды. Бұл жоба үшін бізге уақытты дәл ұстау әдісі, дыбыстық сигнал, дабылдың дабылын шығаратын дабыл жүйесі, барлық уақыт пен дабыл уақыттарын көрсететін экран қажет. Толық кодты мына сілтемеден қараңыз

Кітапханаларды импорттау

Біріншіден, біз қажетті кітапханаларды импорттауымыз керек.

#«RTClib.h» қосыңыз

#қосу «Wire.h» #қосу #қосу #қосу #қосу

Айнымалыларды енгізу

Содан кейін біз айнымалы мәндерді кейінірек іске қосуымыз керек, дыбыстық сигнал түймелерінің түйреуішінің орналасуын тағайындауымыз керек, RTC орнатамыз және СКД дисплейінің 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 start time; int белсенді уақыт; int prevoustime = 0; char ahours1 [3]; чар аминдер1 [3]; int hour1 = 0; int min1 = 0; char ahours2 [3]; char amin2 [3]; int hour2 = 0; int min2 = 0; char ahours3 [3]; char amin3 [3]; int hour3 = 0; int min3 = 0; int дабыл = 0; int ByteReceived; char recievedChar; const байт numChars = 32; char алдыChars [numChars];

Орнату

Әрі қарай, бізде барлық қажетті процестерді бастайтын функция болуы керек. Бұл функцияда біз СКД -ны іске қосып, бастапқы уақытты басып шығаруымыз керек, егер ол жоқ болса, RTC -ге нақты уақыт беретін кішірек функцияны жасап, сериялық мониторды іске қосу керек.

жарамсыз орнату () {

#ifndef ESP8266 while (! сериялық); #endif if (! rtc.begin ()) {Serial.println («RTC табылмады»); кезінде (1); } if (rtc.lostPower ()) {Serial.println («RTC қуатын жоғалтты, уақытты орнатуға мүмкіндік береді!»); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))} lcd.init (); lcd.backlight (); // Baklight қосады. lcd.clear (); // LCD lcd.print тазартады («00:00»); // lcd.setCursor кодын жүктегеннен кейін LCD дисплейінде көрсету (10, 0); lcd.print («00:00»); lcd.setCursor (0, 1); lcd.print («Уақыт»); lcd.setCursor (10, 1); lcd.print («Дабыл 1»); lcd.setCursor (0, 3); lcd.print («Дабыл 2»); lcd.setCursor (0, 2); lcd.print («00:00»); lcd.setCursor (10, 3); lcd.print («Дабыл 3»); lcd.setCursor (10, 2); lcd.print («00:00»); rtc.begin (); pinMode (түйме, INPUT); // PinMode (дыбыстық сигнал 1, OUTPUT) үнсіздік түймесінің түйреуішін орнатыңыз; // pinMode (дыбыстық сигнал 2, OUTPUT) дыбыстық сигнал шығаратын түйреуішті орнатыңыз; // сигнал шығаратын түйреуішті орнатыңыз Serial.begin (9600); Serial.println («Дабылдардың арасында бос орын жоқ HHMM форматындағы дабылдарды енгізу уақыты»); іске қосу уақыты = millis ()/1000; }

Деректерді қабылдау

Енді біз дабыл уақытын қабылдай білуіміз керек. Ол үшін біз сериялық монитордан деректерді алу және оны массивте сақтау функциясын құрдық.

жарамсыз recvWithEndMarker () {

статикалық int ndx = 0; String timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {takenChars [ndx] = timein [ndx]; } алындыChars [ndx] = '\ 0'; Serial.print (алынғанChars); }

Дабылдарды орнату

Келесі қадам - дабылдарды орнату. Міне 1 дабылының коды. 2 және 3 дабылы үшін сол процесс бірнеше сан өзгерісімен қайталанды.

/* Дабыл 1*/

recvWithEndMarker (); int сағ, м; үшін (h = 0; h <2; h ++) {ahours1 [h] = алынғанChars [h]; } үшін (m = 2; m <4; m ++) {amins1 [m-2] = алынғанChars [m]; } ahours1 [h] = '\ 0'; амин1 [m-2] = '\ 0'; Serial.print (ahours1); Serial.print (amins1); hour1 = atoi (ahours1); min1 = atoi (amins1); Serial.print (сағат1); Serial.print (min1);

Дабыл/Түйме

Мұны істеу үшін біз нақты уақыт пен дабыл уақыты тең болған кезде дыбыстық сигналды өшіруіміз керек. Сондай -ақ, бұл қадамда біз дыбыстық сигналды ұстап тұрғанда оны тоқтататын, кейінге қалдыру түймесін жасаймыз.

/ * Үнсіздік түймесі */

тыныштық; int b; b = digitalRead (2); if (b == LOW) {үнсіздік = 1; } басқа {үнсіздік = 0; } / * Дабылды бастау * / if (сағат == сағат1 && мин == мин1) {дабыл = 1; } if if (hours == hour2 && mins == min2) {alarm = 1; } if if (hours == hour3 && mins == min3) {alarm = 1; } басқа {дабыл = 0; үнсіздік = 0; } if (дабыл == 1 && тыныштық == 0) {тонус (дыбыстық сигнал 1, 4000, 1000); үн (дыбыстық сигнал 2, 4000, 1000); кешіктіру (1000); noTone (дыбыстық сигнал 1); noTone (дыбыстық сигнал 2); кешіктіру (1000); }

Басып шығару уақыты

Ақырында, біз СКД экранына дабыл уақыты мен нақты уақытты басып шығаруымыз керек.

DateTime now = rtc.now ();

int сағат = (қазір.сағ ()); int mins = (now.minute ()); / * 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); / * RTC -ден көрсету уақыты */ lcd.setCursor (0, 0); lcd.print (сағат); lcd.print («:»); lcd.print (мин);

7 -қадам: электроника

Электроника
Электроника
Электроника
Электроника
Электроника
Электроника

Бұл жобаның электроникасында көптеген мәліметтер бар, бұл материалдардың есебінде көрінеді. Бірінші сурет - бұл соңғы электроника жобаларының схемасы. Екінші сурет - бұл біздің соңғы электронды дизайн. Үшінші сурет - біздің жобамыздың екінші прототипінің ортасында.

Бастау үшін NodeMCU тақтасының шетіне бекітіңіз. Содан кейін сіз барлық басқа электрониканы NodeMCU мен тақтаға қосуыңыз керек. СКД экранын SCL үшін D1 және SDA үшін D2 түйреуіштеріне жалғаудан бастаңыз. СКД пайдаланушыға ағымдағы уақыт пен орнатылған дабыл уақытын көруге мүмкіндік береді. Енді сигналды D3 және D6 түйреуіштеріне қосатын сым бар. Дыбыстық сигналдар қолданушыға белгіленген уақыт жеткенде дабыл беруге мүмкіндік береді. Енді сіз дабылды тоқтатуға мүмкіндік беретін түймені бекітуіңіз керек. Бұл түймені D4 түйреуішіне бекітіңіз. Енді сіз нақты уақыт сағатын тақтаға қосасыз. Нақты уақыттағы сымды сымсыз дисплейде қолданылатын SDA және SCL түйреуіштерін қолданыңыз.

8 -қадам: Финал

Финал
Финал

Егер сіз берілген ақпаратты орындасаңыз, сіздің жобаңыз жоғарыдағы суретке ұқсас болуы мүмкін. Сізге бұл жобаны қайта құру әрекетінде сәттілік тілейміз және сіз жобаны аяқтағаннан кейін бізді түсініктемелерде суреттер мен ескертулермен бөлісуге шақырамыз. Рахмет және әріптестерге сәттілік.

Ұсынылған: