Talaan ng mga Nilalaman:

TOYL Task Tracker: 3 Mga Hakbang (na may Mga Larawan)
TOYL Task Tracker: 3 Mga Hakbang (na may Mga Larawan)

Video: TOYL Task Tracker: 3 Mga Hakbang (na may Mga Larawan)

Video: TOYL Task Tracker: 3 Mga Hakbang (na may Mga Larawan)
Video: Biglang nag Trending sa tiktok Ang Bata na nag dance ng sa malamig🙀 2024, Nobyembre
Anonim
Image
Image
TOYL Task Tracker
TOYL Task Tracker
TOYL Task Tracker
TOYL Task Tracker

Hindi mo ba kinamumuhian ito kapag nagpaplano kang magtrabaho o mas masahol pa, nasa kalagitnaan ng isang sesyon sa trabaho at isang notification ang dumating sa iyong telepono-ang isang "mabilis na pagsusuri" ay nagiging oras mamaya. Gayundin, alam mo ba kung gaano karaming oras ang iyong pagtatrabaho sa ilang mga gawain na nauugnay sa oras na iyong inilalaan para sa trabaho bawat linggo?

Ipasok ang TOYL Task Tracker. Nagbibigay-daan ito sa iyo upang patayin ang iyong telepono at mag-focus sa trabaho, habang sabay na nagbibigay-daan sa iyo upang i-set up ang dami ng oras na nais mong gumana bawat linggo-sabihin 60 oras-at ang mga gawain na nais mong matapos. Kapag umupo ka para sa isang sesyon, nakakakuha ka ng ideya kung gaano karaming oras ang natitira para sa iyong pangkalahatang trabaho. Ang Tracker ay may dalawang mga mode: timer, kung saan mo naitakda ang kung gaano karaming oras ang nais mong gugulin bawat gawain bawat linggo, at Stopwatch, kung saan maaari mo lamang simulang ihinto ang timer pagkatapos pumili ng isang gawain.

Mga gamit

Circuit

  • Adafruit Feather Huzzah
  • Adafruit FeatherWing
  • Mga male header pin
  • Mga pin ng header ng babae
  • 500mAh na baterya
  • 100K ohm resistors x2
  • Insulation tape
  • Maiiwan tayo na kawad
  • Mga striper ng wire
  • Fan na Fan

Casing

  • Opaque acrylic sheet 24 "x18"
  • Double sided tape
  • Pag-access sa isang pamutol ng laser
  • Vector software

Hakbang 1: Paghinang ng Iyong Circuit

Paghinang ng iyong Circuit
Paghinang ng iyong Circuit
Paghinang ng iyong Circuit
Paghinang ng iyong Circuit
Paghinang ng iyong Circuit
Paghinang ng iyong Circuit

Paghinang ang mga babaeng pin ng header sa Feather Huzzah. Ang tutorial na ito ay kapaki-pakinabang para sa pag-setup ng hardware ng Feather Huzzah. Pagkatapos, paghihinang ang mga lalaking pin ng header sa FeatherWing. Ang paghihinang sa kanila sa ganitong pamamaraan ay nagbibigay-daan sa iyo upang sumali at paghiwalayin ang Feather Wing mula sa Feather Huzzah kung kinakailangan. Lalo na madaling gamiting ito kapag kailangan mong magdagdag ng mga resistors sa iyong FeatherWing, na kung saan ay ang susunod na hakbang. Ikonekta ang 100K ohm resistors mula sa bawat pin 0 at 2, na konektado sa 3V.

I-setup ang iyong hardware ng Feather Huzzah

I-setup ang iyong hardware ng Feather Wing

Hakbang 2: Idagdag ang Iyong Code

Idagdag ang Iyong Code
Idagdag ang Iyong Code
Idagdag ang Iyong Code
Idagdag ang Iyong Code

Ang code na ito ay isang pagbagay ng Aralin 5 Internet ng Mga bagay na code, Pinapayagan ang Oras, nais kong palitan ang serbisyo ng Preceptitaton ng isa na sumusubaybay sa mga gawain na idinagdag sa pamamagitan ng ToDosit IFTTT applet. Sa sandaling ito ay kailangan mong manu-manong mag-input ng isang hanay ng mga gawain at gamitin ang Button A upang paikutin ang mga ito. Bilang karagdagan, nais kong ma-code ang timer upang mabilang sa ilang minuto at huminto kapag lumilipat sa susunod na gawain. Isang malaking salamat sa Becky Stern para sa paglikha ng base code para sa timer at pagbibisikleta sa mga gawain. Kung interesado ka sa pagkonekta sa proyekto sa internet, lubos kong inirerekumenda ang pagdaan sa hanay ng mga klase na ito.

// Instructables Internet of Things Class sample code // Circuit Ipinapakita ang Data ng Internet // Ang data ng panahon ay nakolekta sa isang feed // Maramihang NeoPixels na nakikita ang kalagayan ng panahon // // Binago ni Becky Stern 2017 // batay sa Halimbawa ng Subscription ng Adafruit IO

// Namumuhunan ang Adafruit ng oras at mga mapagkukunan na nagbibigay ng bukas na source code na ito.

// Mangyaring suportahan ang Adafruit at buksan ang mapagkukunan ng hardware sa pamamagitan ng pagbili ng // mga produkto mula sa Adafruit! // // Sinulat ni Todd Treece para sa Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Lisensyado sa ilalim ng lisensya ng MIT. // // Lahat ng teksto sa itaas ay dapat na isama sa anumang muling pamamahagi.

/ ***** *********

/ bisitahin ang io.adafruit.com kung kailangan mong lumikha ng isang account, // o kung kailangan mo ng iyong Adafruit IO key. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"

/ ***** *****

# tukuyin ang WIFI_SSID "WifiName"

# tukuyin ang WIFI_PASS "WifiPassword"

# isama ang "AdafruitIO_WiFi.h"

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

/ ***** ********* /

# isama # isama # isama # isama

# isama

# isama ang # isama ang # isama

# tukuyin ang OLED_RESET 3

Display ng Adafruit_SSD1306 (128, 32, & Wire, OLED_RESET);

// ang pare-pareho na ito ay hindi magbabago:

Const int buttonPinA = 0; // ang mga pin na ang mga pushbutton ay nakakabit sa const int buttonPinB = 16; // ang isang ito ay mayroon nang isang pullup risistor, ang iba pang dalawa ay nangangailangan ng isang const int buttonPinC = 2;

// Magbabago ang mga variable:

int buttonAPushCounter = 0; // counter for the number of button presses int buttonAState = 0; // kasalukuyang estado ng button na int last ButtonAState = 0; // nakaraang estado ng pindutan

// Magbabago ang mga variable:

int buttonBPushCounter = 0; // counter for the number of button presses int buttonBState = 0; // kasalukuyang estado ng pindutan int last ButtonBState = 0; // nakaraang estado ng pindutan

// Magbabago ang mga variable:

int buttonCPushCounter = 0; // counter for the number of button presses int buttonCState = 0; // kasalukuyang estado ng pindutan int last ButtonCState = 0; // nakaraang estado ng pindutan

String displayForecast = "hindi kilalang";

int timerVal = 0;

unsigned matagal lastStartTime = 0; bool timerEnified = 0;

AdafruitIO_Feed * ulan = io.feed ("pag-ulan"); // i-set up ang 'ulan' feed

// AdafruitIO_Feed * taskmanager = io.feed ("taskmanager"); // i-set up ang feed na 'taskmanager'

walang bisa ang pag-setup () {

pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);

// SSD1306_SWITCHCAPVCC = makabuo ng boltahe ng display mula sa 3.3V sa loob

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C para sa 128x32

// Ipakita ang mga unang nilalaman ng buffer ng display sa screen -

// pinasimulan ito ng library gamit ang isang splash screen ng Adafruit. display.display (); pagkaantala (2000); // I-pause ng 2 segundo

// I-clear ang buffer.

display.clearDisplay ();

// simulan ang serial connection

Serial.begin (115200);

// kumonekta sa io.adafruit.com

Serial.print ("Pagkonekta sa Adafruit IO"); io.connect (); // mag-set up ng isang handler ng mensahe para sa feed na 'pag-ulan'. // ang function ng handleMessage (tinukoy sa ibaba) // ay tatawagan tuwing ang isang mensahe ay // natanggap mula sa adafruit io. pag-ulan-> onMessage (hawakanMessage);

// maghintay para sa isang koneksyon

habang (io.status () <AIO_CONNected) {Serial.print ("."); pagkaantala (500); }

// tayo ay konektado

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

}

void loop () {

// io.run (); ay kinakailangan para sa lahat ng mga sketch.

// dapat itong palaging naroroon sa tuktok ng iyong loop // function. pinapanatili nitong nakakonekta ang kliyente sa // io.adafruit.com, at pinoproseso ang anumang papasok na data. io.run ();

// basahin ang pushbutton input pin:

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

// ihambing ang buttonState sa dating estado nito

kung (buttonAState! = last ButtonAState || buttonBState! = last ButtonBState || buttonCState! = last ButtonCState) {// kung ang estado ay nagbago, dagdagan ang counter kung (buttonAState == LOW) {// kung ang kasalukuyang estado ay LOW pagkatapos ng pindutan ay pinindot ang buttonAPushCounter ++; Serial.print ("bilang ng isang pindutan na itinutulak:"); Serial.println (buttonAPushCounter); } kung (buttonBState == LOW) {// kung ang kasalukuyang estado ay LOW pagkatapos ang pindutan ay pinindot ang buttonBPushCounter ++; Serial.print ("bilang ng mga pindutan ng B na itulak:"); Serial.println (buttonBPushCounter); Serial.println ("Panimulang timer"); timerEnified = 1; lastStartTime = millis (); } kung (buttonCState == LOW) {// kung ang kasalukuyang estado ay LOW pagkatapos ang pindutan ay pinindot buttonCPushCounter ++; Serial.print ("bilang ng mga pindutan ng C na itulak:"); Serial.println (buttonCPushCounter); Serial.println ("Natigil ang timer"); timerEnified = 0; }} kung (timerEn pinagana == 1) {// dagdagan ang timer lamang kapag nasimulan ito timerVal = (millis () - lastStartTime) / 1000; }

// display posisyon 1 - pagtataya

// if (buttonAPushCounter% 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (WHITE); // display.setCursor (0, 0); // display.print ("Pagtataya:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("pangalawang linya"); // display.println ("halimbawang nilalaman"); // display.display (); // // pagkaantala (2000); //}

// display posisyon 1 - Gawain 1

kung (buttonAPushCounter% 3 == 0) {display.setTextSize (1); display.setTextColor (PUTI); display.clearDisplay (); display.setCursor (0, 0); display.println ("Pananaliksik - Mga Panayam"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }

// display posisyon 2 - Gawain 2

kung (buttonAPushCounter% 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Paggawa ng Studio - Code"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }

// display posisyon 3 - Gawain 3

kung (buttonAPushCounter% 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Sketching"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }

// save the current state as the last state, // para sa susunod na oras sa pamamagitan ng loop lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// ang pagpapaandar na ito ay tinatawag tuwing isang mensahe

// ay natanggap mula sa Adafruit IO. nakalakip ito sa // ang feed sa pag-setup () na pagpapaandar sa itaas. void handleMessage (AdafruitIO_Data * data) {

String forecast = data-> toString (); // iimbak ang papasok na data ng panahon sa isang string

Serial.print ("natanggap <-"); Serial.println (forecast); displayForecast = forecast; // the following strings store the varous IFTTT ulat ng panahon mga ulat na natuklasan ko sa ngayon String task1 = String ("Gawain 1"); String rain = String ("Rain"); String lightrain = String ("Light Rain"); String rainshower = String ("Rain Shower"); String AMshowers = String ("AM Showers"); String rainandsnow = String ("Rain and Snow"); String snow = String ("Snow"); String snowshower = String ("Snow Shower"); Maulap na string = String ("Maulap"); String mostcloudy = String ("Mostly Cloudy"); String partlycloudy = String ("Bahagyang Maulap"); String clearsky = String ("Malinaw"); String fair = String ("Makatarungang"); Maaraw na maaraw = String ("Maaraw");

// Ito kung ihinahambing ng mga pahayag ang papasok na variable ng panahon sa mga nakaimbak na kundisyon, at kontrolin ang mga NeoPixels nang naaayon.

// kung may ulan sa forecast kung (forecast.equalsIgnoreCase (rain) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (rainshower) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("pag-ulan sa forecast ngayon ");

}

// kung mayroong niyebe sa forecast kung (forecast.equalsIgnoreCase (snow) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (snowshower)) {Serial.println ("pag-ulan sa forecast ngayon");

}

// kung mayroong araw sa pagtataya kung (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (fair) || forecast.equalsIgnoreCase (maaraw)) {Serial.println ("ilang uri ng araw sa forecast ngayon");

}

// kung may mga ulap sa forecast kung (forecast.equalsIgnoreCase (maulap) || forecast.equalsIgnoreCase (mostcloudy) || forecast.equalsIgnoreCase (partlycloudy)) {Serial.println ("maulap na langit sa tinatayang ngayon");

}

}

Hakbang 3: Lumikha ng Container / Shell

Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell
Lumikha ng Container / Shell

Para sa shell, magsimula sa pamamagitan ng pagtukoy kung anong laki ang nais mong maging iyong frame, o maaari mong i-download ang aking file. Kapag natukoy mo ang laki maaari mong gamitin ang MakerCase upang likhain ang layout para sa vector file.

Patakbuhin ang file sa pamamagitan ng pamutol ng laser - dapat itong tumagal ng halos 5 minuto. Pagkatapos ay pagsamahin ang shell.

Hindi ko inilahad ang lapad ng materyal na nagpapahirap maabot ang aking mga pindutan. Kailangan ko pa ring maghanap ng paraan upang ikabit ang mga ito. Ang mga ito ay napakaliit din na nagpapahirap sa kanila na magtrabaho.

Inirerekumendang: