Përmbajtje:

Gjurmuesi i detyrave TOYL: 3 hapa (me fotografi)
Gjurmuesi i detyrave TOYL: 3 hapa (me fotografi)

Video: Gjurmuesi i detyrave TOYL: 3 hapa (me fotografi)

Video: Gjurmuesi i detyrave TOYL: 3 hapa (me fotografi)
Video: Jurassic World Toy Movie: Hunt for the Indominus Rex (Full Movie) #indominusrex #dinosaur 2024, Shtator
Anonim
Image
Image
Gjurmuesi i detyrave TOYL
Gjurmuesi i detyrave TOYL
Gjurmuesi i detyrave TOYL
Gjurmuesi i detyrave TOYL

Mos e urreni vetëm kur planifikoni të punoni ose më keq, jeni në mes të një sesioni pune dhe vjen një njoftim në telefonin tuaj-një "kontroll i shpejtë" bëhet orë më vonë. Gjithashtu, a e dini sa kohë punoni për detyra të caktuara në lidhje me kohën që keni ndarë për punë në javë?

Futni gjurmuesin e detyrave TOYL. Kjo ju mundëson të fikni telefonin tuaj dhe të përqendroheni në punë, ndërsa njëkohësisht ju mundëson të vendosni sasinë e kohës që dëshironi të punoni në javë-të themi 60 orë-dhe detyrat që dëshironi të përfundoni. Kur uleni për një seancë, ju merrni një ide se sa kohë ju ka mbetur për punën tuaj të përgjithshme. Gjurmuesi ka dy mënyra: Kohëmatësi, ku keni paracaktuar se sa kohë dëshironi të shpenzoni për detyrë në javë, dhe Kronometër, ku thjesht mund të filloni-ndaloni kohëmatësin pasi të zgjidhni një detyrë.

Furnizimet

Qarku

  • Pendë Adafruit Huzzah
  • Adafruit FeatherWing
  • Kunjat e kokës për meshkuj
  • Kunjat e kokës për femra
  • Bateri 500mAh
  • Rezistenca 100K ohm x2
  • Shirit izolues
  • Teli i bllokuar
  • Zhveshëset e telave
  • Tifoz i bashkuar

Zorrë

  • Fletë akrilike e errët 24 "x18"
  • Shirit i dyanshëm
  • Qasja në një prestar lazer
  • Softuer vektor

Hapi 1: Saldoni qarkun tuaj

Saldoni qarkun tuaj
Saldoni qarkun tuaj
Saldoni qarkun tuaj
Saldoni qarkun tuaj
Saldoni qarkun tuaj
Saldoni qarkun tuaj

Ngjitini kunjat e kokës së femrës në Huzzah të Pendës. Ky udhëzues është i dobishëm për konfigurimin e pajisjeve Feather Huzzah. Pastaj, lidhni kunjat e kokës mashkullore në FeatherWing. Lidhja e tyre në këtë mënyrë ju lejon të bashkoheni dhe të ndani Krahun e Pendës nga Huza e Pendës kur kërkohet. Kjo është veçanërisht e dobishme kur duhet të shtoni rezistorë në FeatherWing tuaj, i cili është hapi tjetër. Lidhni rezistencat 100K ohm nga secila pin 0 dhe 2, të lidhur me 3V.

Konfiguroni pajisjen tuaj Feather Huzzah

Konfiguroni pajisjen tuaj Feather Wing

Hapi 2: Shtoni Kodin tuaj

Shtoni Kodin tuaj
Shtoni Kodin tuaj
Shtoni Kodin tuaj
Shtoni Kodin tuaj

Ky kod është një përshtatje e kodit të Mësimit 5 Interneti i Gjërave, koha lejon, unë do të doja të zëvendësoja shërbimin Preceptitaton me atë që gjurmon detyrat që shtohen përmes apletit ToDosit IFTTT. Për momentin do t'ju duhet të futni manualisht një sërë detyrash dhe të përdorni butonin A për t'i kaluar ato. Për më tepër, do të më pëlqente të kisha koduar kohëmatësin për të numëruar në minuta dhe për të ndaluar kur kaloni në detyrën tjetër. Një falënderim i madh për Becky Stern për krijimin e kodit bazë për kohëmatësin dhe çiklizmin përmes detyrave. Nëse jeni të interesuar të lidhni projektin me internetin, unë do të rekomandoja që të kaloni këtë grup klasash.

// Instructables Internet of Things Kodi i mostrës së klasës // Qarku Shfaq të dhënat e Internetit // Të dhënat e motit mblidhen në një burim // NeoPixels të Shumëfishtë vizualizojnë gjendjen e motit // // Modifikuar nga Becky Stern 2017 // bazuar në Shembullin e Abonimit të Adafruit IO

// Adafruit investon kohë dhe burime duke siguruar këtë kod me burim të hapur.

// Ju lutemi mbështesni Adafruit dhe pajisjet me burim të hapur duke blerë // produkte nga Adafruit! // // Shkruar nga Todd Treece për Adafruit Industries // E drejta e autorit (c) 2016 Industritë Adafruit // Licensuar sipas licencës MIT. // // I gjithë teksti i mësipërm duhet të përfshihet në çdo rishpërndarje.

/*********************** Adafruit IO Configuration ********************* *********

/ vizitoni io.adafruit.com nëse keni nevojë të krijoni një llogari, // ose nëse keni nevojë për çelësin tuaj Adofruit IO. #përcakto IO_USERNAME "YourUsernameHere" #përcakto IO_KEY "YourIOKeyHere"

/***************************** Konfigurimi WIFI **************** *********************/

#përcakto WIFI_SSID "Emrin Wifi"

#përcakto WIFI_PASS "WifiPassword"

#përfshi "AdafruitIO_WiFi.h"

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

/*********************** Programi Kryesor Fillon Këtu ******************** **********/

#përfshi #përfshi #përfshi #përfshi

#përfshi

#përfshi #përfshi #përfshi

#përcaktoni OLED_RESET 3

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

// kjo konstante nuk do të ndryshojë:

const int buttonPinA = 0; // kunjat që butonat e shtytjes janë bashkangjitur në const int buttonPinB = 16; // ky tashmë ka një rezistencë tërheqëse, dy të tjerat kanë nevojë për një buton konstPinC = 2;

// Variablat do të ndryshojnë:

butoni intAPushCounter = 0; // numërues për numrin e shtypjeve të butonave int buttonAState = 0; // gjendja aktuale e butonit int lastButtonAState = 0; // gjendja e mëparshme e butonit

// Variablat do të ndryshojnë:

butoni intBPushCounter = 0; // numëruesi për numrin e shtypjeve të butonave int buttonBState = 0; // gjendja aktuale e butonit int lastButtonBState = 0; // gjendja e mëparshme e butonit

// Variablat do të ndryshojnë:

butoni intCPushCounter = 0; // numëruesi për numrin e shtypjeve të butonave int buttonCState = 0; // gjendja aktuale e butonit int lastButtonCState = 0; // gjendja e mëparshme e butonit

String displayForecast = "i panjohur";

int timerVal = 0;

pa shenjë e gjatë lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *reshje = io.feed ("reshje"); // vendosni burimin e 'reshjeve'

// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // vendosni burimin 'taskmanager'

void setup () {

pinMode (butoniPinA, INPUT); pinMode (butoniPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);

// SSD1306_SWITCHCAPVCC = gjeneroni tension të ekranit nga 3.3V brenda

shfaqje.fillo (SSD1306_SWITCHCAPVCC, 0x3C); // Adresa 0x3C për 128x32

// Shfaq përmbajtjen fillestare të tamponit të ekranit në ekran -

// biblioteka e inicon këtë me një ekran spërkatjeje Adafruit. display.display (); vonesa (2000); // Ndalo për 2 sekonda

// Pastroni tamponin.

display.clearDisplay ();

// filloni lidhjen serike

Serial.filloj (115200);

// lidheni me io.adafruit.com

Serial.print ("Lidhja me Adafruit IO"); io.connect (); // krijoni një mbajtës mesazhesh për burimin e 'reshjeve'. // funksioni handleMessage (i përcaktuar më poshtë) // do të thirret sa herë që një mesazh // merret nga adafruit io. reshje-> onMessage (handleMessage);

// prisni një lidhje

ndërsa (io.status () <AIO_CONNECTED) {Serial.print ("."); vonesë (500); }

// jemi të lidhur

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

}

lak void () {

// io.run (); kërkohet për të gjitha skicat.

// duhet të jetë gjithmonë i pranishëm në krye të funksionit tuaj të lakut //. e mban klientin të lidhur me // io.adafruit.com, dhe përpunon çdo të dhënë në hyrje. io.run ();

// lexoni pinin e hyrjes së butonit:

buttonAState = digitalRead (butoniPinA); buttonBState = digitalRead (butonPinB); buttonCState = digitalRead (butonPinC);

// krahaso butoninState me gjendjen e mëparshme

nëse (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// nëse gjendja ka ndryshuar, shtoni numëruesin nëse (buttonAState == LOW) {// nëse gjendja aktuale është LOW atëherë butoni u shtyp butoniAPushCounter ++; Serial.print ("numri i butonit A shtyn:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// nëse gjendja aktuale është LOW atëherë butoni është shtypur buttonBPushCounter ++; Serial.print ("numri i butonave B shtyn:"); Serial.println (buttonBPushCounter); Serial.println ("Kohëmatësi i fillimit"); timerAnabled = 1; lastStartTime = milis (); } if (buttonCState == LOW) {// nëse gjendja aktuale është LOW atëherë butoni është shtypur buttonCPushCounter ++; Serial.print ("numri i butonave C shtyn:"); Serial.println (buttonCPushCounter); Serial.println ("Kohëmatësi i ndalimit"); timerEnabled = 0; }} if (timerEnabled == 1) {// rrit kohëmatësin vetëm kur është nisur timerVal = (millis () - lastStartTime)/1000; }

// shfaq pozicionin 1 - parashikim

// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (E BARDH); // display.setCursor (0, 0); // display.print ("Parashikimi:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("rreshti i dytë"); // display.println ("përmbajtja shembull"); // display.display (); // // vonesa (2000); //}

// shfaq pozicionin 1 - Detyra 1

nëse (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (E BARDH); display.clearDisplay (); display.setCursor (0, 0); display.println ("Hulumtim - Intervista"); display.println (); display.print ("Kohëmatësi:"); display.println (timerVal); display.display (); }

// shfaq pozicionin 2 - Detyra 2

if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Marrja e Studio - Kodi"); display.println (); display.print ("Kohëmatësi:"); display.println (timerVal); display.display (); }

// shfaq pozicionin 3 - Detyra 3

if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Skicimi"); display.println (); display.print ("Kohëmatësi:"); display.println (timerVal); display.display (); }

// ruani gjendjen aktuale si gjendjen e fundit, // për herën tjetër përmes lakut lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// ky funksion thirret sa herë që një mesazh

// merret nga Adafruit IO. ishte bashkangjitur me // burimin në funksionin setup () më sipër. dorezë e pavlefshme Mesazh (të dhëna AdafruitIO_Data *) {

Parashikimi i vargut = të dhëna-> teString (); // ruani të dhënat e motit në hyrje në një varg

Serial.print ("marrë <-"); Serial.println (parashikimi); displayForecast = parashikim; // vargjet e mëposhtme ruajnë fjalët e ndryshme të raportit të motit IFTTT që kam zbuluar deri më tani String task1 = String ("Detyra 1"); Shi i rreptë = String ("Shi"); String lightrain = String ("Shi i lehtë"); String rainshower = String ("Shiu i shiut"); String AMshowers = String ("Dushe AM"); String rainandsnow = String ("Shi dhe Borë"); Borë me fije = Varg ("Borë"); String snowshower = String ("Dushë dëbore"); String cloudy = String ("I vrenjtur"); String kryesishtcloudy = String ("Kryesisht me re"); String partlycloudy = String ("Pjesërisht i Vranët"); String clearsky = String ("Pastro"); String fair = String ("Panair"); String sunny = String ("Sunny");

// Këto nëse deklaratat krahasojnë ndryshoren e motit në hyrje me kushtet e ruajtura dhe kontrollojnë NeoPixels në përputhje me rrethanat.

// nëse ka shi në parashikim nëse (forecast.equalsIgnoreCase (shi) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (shiu i shiut) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("reshjet në parashikimi sot ");

}

// nëse ka borë në parashikim nëse (forecast.equalsIgnoreCase (borë) || forecast.equalsIgnoreCase (shi dhe borë) || forecast.equalsIgnoreCase (dëborë)) {Serial.println ("reshjet në parashikimin sot");

}

// nëse ka diell në parashikim nëse (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (e drejtë) || forecast.equalsIgnoreCase (me diell)) {Serial.println ("një lloj dielli në parashikimin sot");

}

// nëse ka re në parashikim nëse (forecast.equalsIgnoreCase (me re) || forecast.equalsIgnoreCase (kryesisht me re) || forecast.equalsIgnoreCase (pjesërisht me re)) {Serial.println ("qielli i vrenjtur në parashikimin sot");

}

}

Hapi 3: Krijoni enën / guaskën

Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën
Krijoni enën / guaskën

Për guaskën, filloni duke përcaktuar se çfarë madhësie dëshironi të jetë korniza juaj, ose mund të shkarkoni skedarin tim. Pasi të përcaktoni madhësinë, mund të përdorni MakerCase për të krijuar paraqitjen e skedarit vektorial.

Drejtoni skedarin përmes prestarit lazer - duhet të zgjasë rreth 5 minuta. Pastaj bashkoni guaskën së bashku.

Unë nuk kam marrë parasysh gjerësinë e materialit që i bën të vështirë arritjen e butonave të mi. Ende më duhet të gjej një mënyrë për t'i bashkuar ato. Ata janë gjithashtu shumë të vegjël, gjë që e bën të vështirë të punosh me të.

Recommended: