Mundarija:

TOYL vazifalarini kuzatuvchi: 3 qadam (rasmlar bilan)
TOYL vazifalarini kuzatuvchi: 3 qadam (rasmlar bilan)

Video: TOYL vazifalarini kuzatuvchi: 3 qadam (rasmlar bilan)

Video: TOYL vazifalarini kuzatuvchi: 3 qadam (rasmlar bilan)
Video: Луиза расулова.тойдаги холат 2024, Noyabr
Anonim
Image
Image
TOYL vazifalarini kuzatuvchi
TOYL vazifalarini kuzatuvchi
TOYL vazifalarini kuzatuvchi
TOYL vazifalarini kuzatuvchi

Siz ishlashni rejalashtirganingizda yoki undan ham yomonroq ishdan nafratlanmaysizmi, ish seansining o'rtasida turibsiz va telefoningizga xabar keladi-bir necha soatdan keyin "tezkor tekshirish" bo'ladi. Bundan tashqari, siz haftasiga ish uchun ajratilgan vaqtga nisbatan ma'lum vazifalar ustida qancha ishlayotganingizni bilasizmi?

TOYL vazifa kuzatuvchisiga kiring. Bu sizga telefoningizni o'chirib, ishga e'tiboringizni qaratish imkonini beradi, shu bilan birga siz haftasiga 60 soat ishlashni xohlagan vaqtingizni va bajarishni xohlagan vazifalarni belgilashga imkon beradi. Mashg'ulotga o'tirganingizda, umumiy ishingizga qancha vaqt qolgani haqida tasavvurga ega bo'lasiz. Tracker ikkita rejimga ega: Taymer, bu erda siz haftasiga bir ish uchun qancha vaqt sarflashni oldindan belgilab qo'ygansiz va soniya hisoblagichi, siz vazifani tanlagandan so'ng taymerni ishga tushirishingiz mumkin.

Ta'minotlar

O'chirish

  • Adafruit tuklar Huzzah
  • Adafruit FeatherWing
  • Erkak bosh pimlari
  • Ayol sarlavhasi pinlari
  • 500 mA / soat batareya
  • 100K ohmli rezistorlar x2
  • Izolyatsiya tasmasi
  • Qoplangan sim
  • Tel -chiziqlar
  • Lehim fanati

Qopqoq

  • Shaffof akril varaq 24 "x18"
  • Ikki tomonlama lenta
  • Lazerli kesgichga kirish
  • Vektorli dasturiy ta'minot

1 -qadam: O'chirish davrasini lehimlang

Sizning davrangizni lehimlang
Sizning davrangizni lehimlang
Sizning davrangizni lehimlang
Sizning davrangizni lehimlang
Sizning davrangizni lehimlang
Sizning davrangizni lehimlang

Ayol sarlavhasini tuklar Huzzaga mahkamlang. Ushbu qo'llanma Feather Huzzah uskunasini sozlash uchun foydalidir. Keyin, erkak boshini FeatherWing -ga ulang. Ularni shu tarzda lehimlash, agar kerak bo'lsa, tuklar qanotini tuklar huzzasidan birlashtirish va ajratish imkonini beradi. Bu, ayniqsa, FeatherWing -ga rezistorlar qo'shish kerak bo'lganda juda qulay bo'ladi, bu keyingi qadam. 3V ga ulangan har bir 0 va 2 pinli 100K ohmli rezistorlarni ulang.

Feather Huzzah uskunasini o'rnating

Feather Wing uskunasini o'rnating

2 -qadam: Kodni qo'shing

O'z kodingizni qo'shing
O'z kodingizni qo'shing
O'z kodingizni qo'shing
O'z kodingizni qo'shing

Bu kod 5 -dars Internet -narsalar kodining moslashuvi, vaqt ruxsat bersa, men Preceptitaton xizmatini ToDosit IFTTT appleti orqali qo'shilgan vazifalarni kuzatadigan xizmat bilan almashtirmoqchiman. Ayni paytda siz bir qator vazifalarni qo'lda kiritishingiz va ularni aylantirish uchun A tugmachasidan foydalanishingiz kerak bo'ladi. Bundan tashqari, men taymerni bir necha daqiqada sanashni va keyingi vazifaga o'tishda to'xtashni xohlardim. Tayki uchun tayanch kodni yaratganingiz va vazifalarni bajarishda velosipedda yurganingiz uchun Bekki Sternga katta rahmat. Agar siz loyihani Internetga ulashni xohlasangiz, men ushbu darslar to'plamidan o'tishni tavsiya qilaman.

// Ko'rsatiladigan Internet narsalar sinfining namuna kodi // O'chirish Internet ma'lumotlarini ko'rsatadi // Ob -havo ma'lumotlari tasmada to'planadi // Bir nechta NeoPixellar ob -havo holatini tasvirlaydi // // Becki Stern 2017 tomonidan o'zgartirilgan // Adafruit IO obuna namunasi asosida.

// Adafruit vaqt va resurslarni ushbu ochiq kodli kod bilan ta'minlaydi.

// Iltimos, Adafruit -dan // mahsulotlarini sotib olish orqali Adafruit va ochiq manbali uskunalarni qo'llab -quvvatlang! // // Adafruit Industries uchun Todd Treece tomonidan yozilgan // Mualliflik huquqi (c) 2016 Adafruit Industries // MIT litsenziyasi bo'yicha litsenziyalangan. // // Yuqoridagi barcha matnlar har qanday qayta taqsimotga kiritilishi kerak.

/************************ Adafruit IO konfiguratsiyasi ********************** *********

/ agar siz hisob yaratishingiz kerak bo'lsa, io.adafruit.com saytiga tashrif buyuring, // yoki sizga Adafruit IO kaliti kerak bo'lsa. #IO_USERNAME "YourUserername Here" ni aniqlang #IO_KEY "YourIOKeyHere" ni aniqlang.

/******************************* WIFI konfiguratsiyasi **************** **********************/

#WIFI_SSID "WifiName" ni aniqlang

#WIFI_PASS "WifiPassword" ni aniqlang

#"AdafruitIO_WiFi.h" ni qo'shing

AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

/************************ Asosiy dastur shu erda boshlanadi ********************* **********/

#qo'shish #qo'shish #qo'shish #qo'shish

#qo'shing

#qo'shish #qo'shish #qo'shish

#OLED_RESETni belgilang 3

Adafruit_SSD1306 displeyi (128, 32, & Wire, OLED_RESET);

// bu doimiy o'zgarmaydi:

const int buttonPinA = 0; // tugmachalari const int tugmasiga biriktirilgan pinlarPinB = 16; // bu allaqachon tortishish qarshiligiga ega, qolgan ikkisiga bitta const int buttonPinC = 2 kerak;

// O'zgaruvchilar o'zgaradi:

int tugmasiAPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonAState = 0; // tugmani hozirgi holati int lastButtonAState = 0; // tugmachaning oldingi holati

// O'zgaruvchilar o'zgaradi:

int tugmasiBPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonBState = 0; // tugmani hozirgi holati int lastButtonBState = 0; // tugmachaning oldingi holati

// O'zgaruvchilar o'zgaradi:

int tugmasiCPushCounter = 0; // tugmani bosish sonini hisoblagich int buttonCState = 0; // tugmani hozirgi holati int lastButtonCState = 0; // tugmachaning oldingi holati

String displayForecast = "noma'lum";

int timerVal = 0;

imzosiz uzoq lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *yog'ingarchilik = io.feed ("yog'ingarchilik"); // "yog'ingarchilik" tasmasini o'rnating

// AdafruitIO_Feed *vazifa boshqaruvchisi = io.feed ("vazifa boshqaruvchisi"); // "vazifa menejeri" tasmasini o'rnating

bo'sh o'rnatish () {

pinMode (tugmaPinA, Kirish); pinMod (tugmaPinB, INPUT_PULLUP); pinMode (tugmaPinC, Kirish);

// SSD1306_SWITCHCAPVCC = displeyda 3,3 V dan kuchlanish hosil qiladi

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 128x32 uchun 0x3C manzili

// Ekranda dastlabki bufer tarkibini ko'rsatish -

// kutubxona buni Adafruit ochilish ekrani bilan ishga tushiradi. display.display (); kechikish (2000); // 2 soniya pauza qiling

// Buferni tozalash.

display.clearDisplay ();

// ketma -ket ulanishni boshlang

Serial.begin (115200);

// io.adafruit.com saytiga ulaning

Serial.print ("Adafruit IO ga ulanish"); io.connect (); // "yog'ingarchilik" tasmasi uchun xabar ishlovchilarini o'rnating. // handleMessage funktsiyasi (quyida tavsiflangan) // adafruit io dan xabar kelganida // chaqiriladi. yog'ingarchilik-> onMessage (handleMessage);

// ulanishni kuting

while (io.status () <AIO_CONNECTED) {Serial.print ("."); kechikish (500); }

// biz aloqadamiz

Serial.println (); Serial.println (io.statusText ());

}

void loop () {

// io.run (); barcha eskizlar uchun talab qilinadi.

// u har doim loop // funktsiyasining yuqori qismida bo'lishi kerak. u mijozni // io.adafruit.com ga bog'lab turadi va kiruvchi ma'lumotlarni qayta ishlaydi. io.run ();

// kirish tugmachasini o'qing:

buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);

//State tugmachasini oldingi holatiga solishtiring

agar (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// agar holat o'zgargan bo'lsa, hisoblagichni oshiring agar (buttonAState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma APushCounter ++ tugmasi bosildi; Serial.print ("A tugmasi soni bosiladi:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma bosilgan ediBPushCounter ++; Serial.print ("B tugmasi bosiladi:"); Serial.println (buttonBPushCounter); Serial.println ("Ishga tushirish taymeri"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// agar hozirgi holat LOW bo'lsa, tugma bosildi buttonCPushCounter ++; Serial.print ("C tugmachasi bosiladi:"); Serial.println (buttonCPushCounter); Serial.println ("Vaqt taymerini to'xtatish"); timerEnabled = 0; }} if (timerEnabled == 1) {// taymerni faqat ishga tushirilganda oshiradi timerVal = (millis () - lastStartTime)/1000; }

// displey 1 -pozitsiya - prognoz

// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (oq); // display.setCursor (0, 0); // display.print ("Prognoz:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("ikkinchi qator"); // display.println ("misol mazmuni"); // displey.display (); // // kechikish (2000); //}

// displeyning 1 -pozitsiyasi - 1 -topshiriq

if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (oq); display.clearDisplay (); display.setCursor (0, 0); display.println ("Tadqiqot - intervyu"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }

// displeyning 2 -pozitsiyasi - 2 -topshiriq

if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Making Studio - Kod"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }

// displeyning 3 -pozitsiyasi - 3 -topshiriq

if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - eskiz"); displey.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }

// joriy holatni oxirgi holat sifatida saqlang, // keyingi safar loop orqali lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// bu funksiya har xabar kelganda chaqiriladi

// Adafruit IOdan olingan. yuqoridagi setup () funktsiyasidagi // tasmaga biriktirilgan. void handleMessage (AdafruitIO_Data *ma'lumotlari) {

String prognozi = data-> toString (); // kiruvchi ob -havo ma'lumotlarini satrda saqlang

Serial.print ("qabul qilingan <-"); Serial.println (prognoz); displayForecast = prognoz; // quyidagi satrlar men hozirgacha topgan IFTTT ob -havo hisobotining turli xil so'zlarini saqlaydi String task1 = String ("Vazifa 1"); String yomg'ir = String ("Yomg'ir"); String lightrain = String ("Engil yomg'ir"); String yomg'irli dush = String ("Yomg'irli dush"); String AMshowers = String ("AM dushlari"); String rainandsnow = String ("Yomg'ir va qor"); String qor = Ip ("Qor"); String snowshower = String ("Qorli dush"); String bulutli = String ("Bulutli"); String asosancloudy = String ("Ko'pincha bulutli"); Qisman bulutli = String ("Qisman bulutli"); String clearsky = String ("Tozalash"); String fair = String ("Fair"); String sunny = String ("Quyoshli");

// Agar bu bayonotlar kiruvchi ob -havo o'zgaruvchisini saqlangan sharoit bilan taqqoslasa va shunga mos ravishda NeoPixellarni boshqarsa.

// agar prognozda yomg'ir bo'lsa if (prognoz.equalsIgnoreCase (yomg'ir) || prognoz.equalsIgnoreCase (yengil) || prognoz.equalsIgnoreCase (yomg'ir) || prognoz.equalsIgnoreCase (AMshowers)) {Serial.println ("yog'ingarchilik bugunning prognozi ");

}

// agar bashoratda qor bo'lsa if (prognoz.equalsIgnoreCase (qor) || prognoz.equalsIgnoreCase (yomg'ir va qor) || prognoz.equalsIgnoreCase (qor yog'ishi)) {Serial.println ("bugun prognozda yog'ingarchilik");

}

// agar bashoratda quyosh bo'lsa if (prognoz.equalsIgnoreCase (clearsky) || prognoz.equalsIgnoreCase (adolatli) || prognoz.equalsIgnoreCase (quyoshli)) {Serial.println ("bugun bashoratda quyoshning bir turi");

}

// agar bashoratda bulutlar bo'lsa if (prognoz.equalsIgnoreCase (bulutli) || prognoz.equalsIgnoreCase (asosan bulutli) || prognoz.equalsIgnoreCase (qisman bulutli)) {Serial.println ("bugun ob -havo bulutli");

}

}

3 -qadam: Konteyner / qobiq yarating

Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating
Konteyner / qobiq yarating

Qobiq uchun, ramkangiz qanday o'lchamda bo'lishini aniqlashdan boshlang yoki mening faylimni yuklab olishingiz mumkin. O'lchamni aniqlagandan so'ng, siz MakerCase -dan foydalanib, vektorli faylning tartibini tuzishingiz mumkin.

Faylni lazer kesgich orqali ishga tushiring - taxminan 5 daqiqa davom etishi kerak. Shundan so'ng, qobiqni bir joyga qo'ying.

Men tugmachalarga kirishni qiyinlashtiradigan materialning kengligini hisobga olmadim. Men hali ham ularni biriktirishning yo'lini topishim kerak. Ular juda kichik, ular bilan ishlash qiyin.

Tavsiya: