Mündəricat:

TOYL Task Tracker: 3 Addım (Şəkillərlə birlikdə)
TOYL Task Tracker: 3 Addım (Şəkillərlə birlikdə)

Video: TOYL Task Tracker: 3 Addım (Şəkillərlə birlikdə)

Video: TOYL Task Tracker: 3 Addım (Şəkillərlə birlikdə)
Video: Pərdə arxası #2 - Fahişə həyatı - uşaqlar baxmasın 2024, Noyabr
Anonim
Image
Image
TOYL Tapşırıq İzləyicisi
TOYL Tapşırıq İzləyicisi
TOYL Tapşırıq İzləyicisi
TOYL Tapşırıq İzləyicisi

İşləməyi planlaşdıranda və ya daha da pisləşdiyiniz zaman nifrət etməyin, bir iş seansının ortasındayıq və telefonunuza bir bildiriş gəlir-bir saat sonra "sürətli yoxlama" olacaq. Ayrıca, həftədə bir iş üçün ayırdığınız vaxtla əlaqədar olaraq müəyyən vəzifələr üzərində nə qədər vaxt işlədiyinizi bilirsinizmi?

TOYL Tapşırıq İzləyicisinə daxil olun. Telefonunuzu söndürə və işə diqqət yetirməyinizə imkan verir, eyni zamanda həftədə 60 saat işləmək istədiyiniz vaxtın miqdarını və yerinə yetirmək istədiyiniz vəzifələri təyin etməyə imkan verir. Bir iclas üçün oturduğunuzda, ümumi işiniz üçün nə qədər vaxtınız qaldığını təsəvvür edirsiniz. İzləyicinin iki rejimi var: Taymer, həftədə bir iş üçün nə qədər vaxt sərf etmək istədiyinizi əvvəlcədən təyin edirsiniz və bir işi seçdikdən sonra sadəcə taymeri işə sala biləcəyiniz Saniyəölçən.

Təchizat

Dövrə

  • Adafruit Lələk Huzzah
  • Adafruit FeatherWing
  • Kişi başlıq sancaqları
  • Qadın başlıq pinləri
  • 500 mAh batareya
  • 100K ohm rezistorlar x2
  • İzolyasiya lenti
  • Bükülmüş tel
  • Tel çıxarıcılar
  • Lehim Fanı

Korpus

  • Şəffaf akril təbəqə 24 "x18"
  • İki tərəfli lent
  • Lazer kəsiciyə giriş
  • Vektor proqram

Addım 1: Dövrənizi lehimləyin

Dövrənizi lehimləyin
Dövrənizi lehimləyin
Dövrənizi lehimləyin
Dövrənizi lehimləyin
Dövrənizi lehimləyin
Dövrənizi lehimləyin

Dişi başlıq çubuqlarını Lələk Hüzzaha bağlayın. Bu təlimat Feather Huzzah hardware qurğusu üçün faydalıdır. Sonra, kişi başlıq sancaqlarını FeatherWing -ə lehimləyin. Onları bu şəkildə lehimləmək, lazım olduqda Lələk Qanadını Tüy Hüzzasından birləşdirməyə və ayırmağa imkan verir. Növbəti addım olan FeatherWing -ə rezistorlar əlavə etməyiniz lazım olduqda bu xüsusilə faydalıdır. 3V -ə qoşulmuş hər 0 və 2 pinlərindən 100K ohm rezistorları bağlayın.

Feather Huzzah cihazınızı qurun

Feather Wing cihazınızı qurun

Addım 2: Kodunuzu əlavə edin

Kodunuzu əlavə edin
Kodunuzu əlavə edin
Kodunuzu əlavə edin
Kodunuzu əlavə edin

Bu kod, 5 -ci Dərslik İnterneti kodunun uyğunlaşmasıdır, vaxt imkan verir, mən Preceptitaton xidmətini ToDosit IFTTT proqramı vasitəsilə əlavə olunan vəzifələri izləyən bir xidmətlə əvəz etmək istərdim. Hal -hazırda bir sıra tapşırıqları əl ilə daxil etməli və onları keçmək üçün A düyməsini istifadə etməlisiniz. Əlavə olaraq, bir neçə dəqiqəyə saymaq və növbəti işə keçərkən dayanmaq üçün taymeri kodlaşdırmaq istərdim. Taymeri üçün baza kodu yaratdığınıza və tapşırıqlar arasında velosiped sürdüyünüzə görə Becky Stern -ə çox təşəkkür edirəm. Layihəni internetə bağlamaqla maraqlanırsınızsa, bu dərslər qrupundan keçməyi çox tövsiyə edərdim.

// Əşyaların İnterneti Sinifinin nümunə kodu // Dövrə İnternet Verilərini Göstərir // Hava məlumatları bir lentdə toplanır // Birdən çox NeoPiksel hava şəraitini görüntüləyir // // Becky Stern 2017 tərəfindən dəyişdirilmişdir // Adafruit IO Abunə Nümunəsinə əsaslanaraq.

// Adafruit, bu açıq mənbə kodunu təmin etmək üçün vaxt və resurslar qoyur.

// Zəhmət olmasa Adafruit -dən // məhsulları alaraq Adafruit və açıq mənbə aparatlarına dəstək olun! // // Adafruit Industries üçün Todd Treece tərəfindən yazılmışdır // Müəlliflik hüququ (c) 2016 Adafruit Industries // MIT lisenziyası altında lisenziyalıdır. // // Yuxarıdakı bütün mətnlər hər hansı bir yenidən paylamaya daxil edilməlidir.

/************************ Adafruit IO Konfiqurasiyası ********************** *********

/ Bir hesab yaratmaq lazımdırsa io.adafruit.com saytına daxil olun, // və ya Adafruit IO açarınıza ehtiyacınız varsa. #IO_USERNAME "İstifadəçi Adın Burda" #IO_KEY "SəninKeyim Buradadır" ı təyin et

/******************************* WIFI Konfiqurasiyası **************** **********************/

#define WIFI_SSID "WifiName"

#WIFI_PASS "WifiPassword" təyin edin

#"AdafruitIO_WiFi.h" daxil edin

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

/************************ Əsas Proqram Buradan Başlar ********************* **********/

#daxil edin #əlavə edin #daxil edin

#daxil edin

#daxil edin #daxil edin #daxil edin

#OLED_RESETini təyin edin 3

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

// bu sabit dəyişməyəcək:

const int buttonPinA = 0; // düymələrin const int düyməsinə bağlandığı sancaqlarPinB = 16; // bunun artıq çəkmə rezistoru var, digər ikisinin bir const int buttonPinC = 2 ehtiyacı var;

// Dəyişənlər dəyişəcək:

int buttonAPushCounter = 0; // düymə basma sayının sayğacı int buttonAState = 0; // düymənin indiki vəziyyəti int lastButtonAState = 0; // düymənin əvvəlki vəziyyəti

// Dəyişənlər dəyişəcək:

int düyməsiBPushCounter = 0; // düymə basma sayının sayğacı int buttonBState = 0; // düymənin indiki vəziyyəti int lastButtonBState = 0; // düymənin əvvəlki vəziyyəti

// Dəyişənlər dəyişəcək:

int buttonCPushCounter = 0; // düymə basma sayına görə sayğac int buttonCState = 0; // düymənin indiki vəziyyəti int lastButtonCState = 0; // düymənin əvvəlki vəziyyəti

String displayForecast = "naməlum";

int timerVal = 0;

imzasız uzun lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *yağış = io.feed ("yağış"); // 'yağış' yemini qurun

// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // 'taskmanager' lentini qurun

boş quraşdırma () {

pinMode (düyməPinA, GİRİŞ); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, GİRİŞ);

// SSD1306_SWITCHCAPVCC = daxili 3.3V -dən ekran gərginliyi yaradır

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 128x32 üçün 0x3C ünvanı

// Ekranda ilkin ekran buferinin məzmununu göstər -

// kitabxana bunu Adafruit sıçrayış ekranı ilə işə salır. display.display (); gecikmə (2000); // 2 saniyə ara verin

// Tamponu silin.

display.clearDisplay ();

// serial bağlantısına başlayın

Serial.begin (115200);

// io.adafruit.com saytına qoşulun

Serial.print ("Adafruit IO -ya qoşulma"); io.connect (); // 'yağış' lenti üçün bir mesaj işləyicisi qurun. // handleMessage funksiyası (aşağıda müəyyən edilmişdir) // adafruit io -dan bir mesaj alındıqda // çağırılacaq. yağış-> onMessage (handleMessage);

// əlaqə gözləyin

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

// bağlıyıq

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

}

boşluq döngəsi () {

// io.run (); bütün eskizlər üçün tələb olunur.

// həmişə loop // funksiyanızın üstündə olmalıdır. müştərini // io.adafruit.com ilə əlaqəli saxlayır və gələn məlumatları emal edir. io.run ();

// düymə giriş pinini oxuyun:

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

// Status düyməsini əvvəlki vəziyyətlə müqayisə edin

əgər (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// vəziyyət dəyişibsə, sayacı artırın (buttonAState == LOW) {// əgər cari vəziyyət LOW olarsa düyməni APushCounter ++ düyməsinə basıldı; Serial.print ("A düyməsinin sayı itələyir:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// cari vəziyyət LOW olarsa, düyməyə basıldı buttonBPushCounter ++; Serial.print ("B düyməsinin sayı:"); Serial.println (buttonBPushCounter); Serial.println ("Başlanğıc taymeri"); timerEnabled = 1; lastStartTime = milis (); } if (buttonCState == LOW) {// cari vəziyyət LOW olarsa düyməyə basıldı buttonCPushCounter ++; Serial.print ("C düyməsinin sayı:"); Serial.println (buttonCPushCounter); Serial.println ("Taymeri dayandırmaq"); timerEnabled = 0; }} if (timerEnabled == 1) {// timerVal = (millis () - lastStartTime)/1000 işə salındıqda sayğacı artırın; }

// ekran mövqeyi 1 - proqnoz

// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (BEYAZ); // display.setCursor (0, 0); // display.print ("Proqnoz:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("ikinci sətir"); // display.println ("nümunə məzmun"); // display.display (); // // gecikmə (2000); //}

// ekran mövqeyi 1 - Tapşırıq 1

əgər (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (BEYAZ); display.clearDisplay (); display.setCursor (0, 0); display.println ("Araşdırma - Müsahibələr"); display.println (); display.print ("Taymer:"); display.println (timerVal); display.display (); }

// ekran mövqeyi 2 - Tapşırıq 2

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

// ekran mövqeyi 3 - Tapşırıq 3

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

// cari vəziyyəti son vəziyyət kimi qeyd edin, // növbəti dəfə loop vasitəsilə lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// bu funksiya bir mesaj gəldikdə çağırılır

// Adafruit IO -dan alınmışdır. yuxarıdakı setup () funksiyasındakı // yemə qoşuldu. void handleMessage (AdafruitIO_Data *data) {

String proqnozu = data-> toString (); // daxil olan hava məlumatlarını bir sətirdə saxlayın

Serial.print ("alındı <-"); Serial.println (proqnoz); displayForecast = proqnoz; // aşağıdakı sətirlər indiyə qədər kəşf etdiyim müxtəlif IFTTT hava hesabatı sözlərini saxlayır String task1 = String ("Tapşırıq 1"); Simli yağış = Simli ("Yağış"); String lightrain = String ("Yüngül Yağış"); Yağış duşu = String ("Yağış duşu"); String AMshowers = String ("AM Duşları"); String rainandsnow = String ("Yağış və Qar"); Simli qar = String ("Qar"); String snowshower = String ("Qar duşu"); Buludlu simli = String ("Buludlu"); String əsasəncloudy = String ("Çox Buludlu"); String partlycloudy = String ("Qismən Buludlu"); String clearsky = String ("Sil"); String fair = String ("Ədalətli"); Günəşli tel = String ("Günəşli");

// Bunlar ifadələr daxil olan hava dəyişənini saxlanılan şərtlərlə müqayisə edir və buna uyğun olaraq NeoPixelləri idarə edir.

// əgər proqnozda yağış varsa if (proqnoz.equalsIgnoreCase (yağış) || proqnoz.equalsIgnoreCase (lightrain) || proqnoz.equalsIgnoreCase (yağış yağışı) || proqnoz.equalsIgnoreCase (AMshowers)) {Serial.println ("yağış bu gün üçün proqnoz ");

}

// əgər proqnozda qar varsa if (proqnoz.equalsIgnoreCase (qar) || proqnoz.equalsIgnoreCase (yağış və qar) || proqnoz.equalsIgnoreCase (qar yağışı)) {Serial.println ("bu gün proqnozda yağış");

}

// əgər proqnozda günəş varsa if (proqnoz.equalsIgnoreCase (clearsky) || proqnoz.equalsIgnoreCase (ədalətli) || proqnoz.equalsIgnoreCase (günəşli)) {Serial.println ("bu gün hava proqnozunda bir növ günəş");

}

// əgər proqnozda bulud varsa if (proqnoz.equalsIgnoreCase (buludlu) || proqnoz.equalsIgnoreCase (əsasən buludlu) || proqnoz.equalsIgnoreCase (qismən buludlu)) {Serial.println ("bu gün hava proqnozunda buludlu səma");

}

}

Addım 3: Konteyner / Qabıq yaradın

Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın
Konteyner / qabıq yaradın

Qabıq üçün, çərçivənizin hansı ölçüdə olmasını istədiyinizi təyin edərək başlayın və ya faylımı yükləyə bilərsiniz. Ölçüsü təyin etdikdən sonra, vektor faylının düzülüşünü yaratmaq üçün MakerCase -dən istifadə edə bilərsiniz.

Dosyanı lazer kəsicidən keçirin - təxminən 5 dəqiqə çəkəcək. Bundan sonra qabığı bir yerə qoyun.

Düymələrimə çatmağı çətinləşdirən materialın genişliyini nəzərə almadım. Onları bağlamaq üçün hələ bir yol tapmalıyam. Həm də çox kiçikdirlər ki, bu da onlarla işləməyi çətinləşdirir.

Tövsiyə: