Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Ar tik nekenčiate to, kai planuojate dirbti ar dar blogiau, esate darbo sesijos viduryje ir į jūsų telefoną ateina pranešimas-„greitas patikrinimas“tampa po kelių valandų. Be to, ar žinote, kiek laiko dirbate atlikdami tam tikras užduotis, palyginti su laiku, kurį skyrėte darbui per savaitę?
Įveskite „TOYL Task Tracker“. Tai leidžia jums išjungti telefoną ir sutelkti dėmesį į darbą, tuo pačiu leidžiant nustatyti, kiek laiko norėtumėte dirbti per savaitę, tarkime, 60 valandų, ir užduotis, kurias norite atlikti. Sėdėdami užsiėmimui, suprasite, kiek laiko liko bendram darbui. „Tracker“turi du režimus: laikmatį, kuriame iš anksto nustatėte, kiek laiko per savaitę norite skirti užduočiai, ir chronometrą, kuriame pasirinkę užduotį galite tiesiog paleisti ir sustabdyti laikmatį.
Prekės
Grandinė
- „Adafruit Feather Huzzah“
- „Adafruit FeatherWing“
- Vyriški antgaliai
- Moteriški antgaliai
- 500 mAh baterija
- 100K omų rezistoriai x2
- Izoliacinė juosta
- Suvyta viela
- Vielos nuėmikliai
- Lituoklio ventiliatorius
Korpusas
- Nepermatomas akrilo lakštas 24 x 18 colių
- Dvipusė juosta
- Prieiga prie lazerinio pjaustytuvo
- Vektorinė programinė įranga
1 žingsnis: lituokite grandinę
Lituokite antraštės kaiščius prie plunksnų Huzzah. Ši pamoka naudinga „Feather Huzzah“aparatinės įrangos sąrankai. Tada lituokite antgalio kaiščius prie „FeatherWing“. Lituodami juos tokiu būdu, prireikus galite sujungti ir atskirti plunksnų sparną nuo plunksnų Huzzah. Tai ypač patogu, kai prie „FeatherWing“reikia pridėti rezistorių, o tai yra kitas žingsnis. Prijunkite 100K omų rezistorius iš kiekvieno 0 ir 2 kaiščio, prijungto prie 3V.
Nustatykite „Feather Huzzah“aparatinę įrangą
Nustatykite „Feather Wing“aparatinę įrangą
2 veiksmas: pridėkite savo kodą
Šis kodas yra 5 pamokos daiktų interneto kodo pritaikymas, jei laikas leidžia, norėčiau pakeisti „Preceptitaton“paslaugą ta, kuri seka užduotis, pridėtas per „ToDosit IFTTT“programėlę. Šiuo metu turėsite rankiniu būdu įvesti užduočių rinkinį ir naudoti mygtuką A, kad galėtumėte jas peržiūrėti. Be to, norėčiau, kad būtų užkoduotas laikmatis, kuris suskaičiuotų minutes ir sustotų pereinant prie kitos užduoties. Didelis ačiū Becky Sternui už laikmačio bazinio kodo sukūrimą ir užduočių atlikimą. Jei jus domina projekto prijungimas prie interneto, labai rekomenduočiau pereiti prie šių užsiėmimų.
// Instructables Daiktų interneto klasės pavyzdžio kodas // Grandinės rodo interneto duomenis // Orų duomenys renkami sklaidos kanale // Keli „NeoPixels“vaizduoja oro sąlygas // // Pakeitė Becky Stern 2017 // remiantis „Adafruit IO“prenumeratos pavyzdžiu
// „Adafruit“investuoja laiką ir išteklius teikdama šį atvirojo kodo kodą.
// Prašome palaikyti „Adafruit“ir atvirojo kodo aparatinę įrangą perkant // produktus iš „Adafruit“! // Parašė Todd Treece „Adafruit Industries“// Autorių teisės (c) 2016 m. „Adafruit Industries“// Licencijuota pagal MIT licenciją. // // Visas anksčiau pateiktas tekstas turi būti įtrauktas į bet kokį perskirstymą.
/************************ Adafruit IO konfigūracija ********************** *********
/ jei norite sukurti paskyrą, apsilankykite io.adafruit.com, // arba jei jums reikia jūsų „Adafruit IO“rakto. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"
/******************************* WIFI konfigūracija **************** **********************/
#define WIFI_SSID „WifiName“
#define WIFI_PASS „WifiPassword“
#include "AdafruitIO_WiFi.h"
„AdafruitIO_WiFi io“(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************ Čia prasideda pagrindinė programa ********************* **********/
#įtraukimas #įtraukimas #įtraukimas #įtraukimas
#įtraukti
#įtraukti #įtraukti #įtraukti
#define OLED_RESET 3
„Adafruit_SSD1306“ekranas (128, 32 ir „Wire“, OLED_RESET);
// ši konstanta nesikeis:
const int mygtukasPinA = 0; // smeigtukai, prie kurių mygtukai yra pritvirtinti prie const int mygtukoPinB = 16; // šis jau turi prisitraukimo rezistorių, kitiems dviem reikia vieno const int mygtukoPinC = 2;
// Kintamieji pasikeis:
int mygtukasAPushCounter = 0; // mygtukų paspaudimų skaičiaus skaitiklis int buttonAState = 0; // dabartinė mygtuko būsena int lastButtonAState = 0; // ankstesnė mygtuko būsena
// Kintamieji pasikeis:
int mygtukasBPushCounter = 0; // mygtukų paspaudimų skaičiaus skaitiklis int buttonBState = 0; // dabartinė mygtuko būsena int lastButtonBState = 0; // ankstesnė mygtuko būsena
// Kintamieji pasikeis:
int mygtukasCPushCounter = 0; // mygtukų paspaudimų skaičiaus skaitiklis int buttonCState = 0; // dabartinė mygtuko būsena int lastButtonCState = 0; // ankstesnė mygtuko būsena
Eilutės ekranasForecast = "nežinoma";
int timerVal = 0;
unsigned long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *krituliai = io.feed ("krituliai"); // nustatyti „kritulių“kanalą
// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // nustatyti „užduočių tvarkyklės“sklaidos kanalą
void setup () {
pinMode (mygtukasPinA, INPUT); pinMode (mygtukasPinB, INPUT_PULLUP); pinMode (mygtukasPinC, INPUT);
// SSD1306_SWITCHCAPVCC = generuoti ekrano įtampą iš 3.3V viduje
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Adresas 0x3C, skirtas 128x32
// Rodyti pradinį ekrano buferio turinį ekrane -
// biblioteka inicijuoja tai naudodami „Adafruit“ekraną. display.display (); vėlavimas (2000 m.); // Pauzė 2 sekundėms
// Išvalykite buferį.
display.clearDisplay ();
// pradėti nuoseklųjį ryšį
Serial.begin (115200);
// prisijungti prie io.adafruit.com
Serial.print („Prisijungimas prie„ Adafruit IO ““); io.connect (); // nustatyti pranešimų tvarkyklę „kritulių“sklaidos kanalui. // „handleMessage“funkcija (apibrėžta žemiau) // bus iškviesta kiekvieną kartą, kai // bus gautas pranešimas iš „adafruit io“. krituliai-> onMessage (rankenaMessage);
// laukti ryšio
while (io.status () <AIO_CONNECTED) {Serial.print ("."); vėlavimas (500); }
// mes susieti
Serial.println (); Serial.println (io.statusText ());
}
void loop () {
// io.run (); reikalingas visiems eskizams.
// ji visada turi būti jūsų ciklo // funkcijos viršuje. jis palaiko kliento ryšį su // io.adafruit.com ir apdoroja visus gaunamus duomenis. io.run ();
// skaityti mygtuko įvesties kaištį:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
// palyginkite „buttonState“su ankstesne būsena
if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// jei būsena pasikeitė, padidinkite skaitiklį, jei (buttonAState == LOW) {// jei dabartinė būsena yra LOW, mygtukas buvo paspaustas mygtukasAPushCounter ++; Serial.print ("mygtuko A paspaudimų skaičius:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// jei dabartinė būsena yra LOW, tada mygtukas buvo paspaustas buttonBPushCounter ++; Serial.print ("B mygtuko paspaudimų skaičius:"); Serial.println (buttonBPushCounter); Serial.println („Paleidimo laikmatis“); timerEnabled = 1; lastStartTime = milis (); } if (buttonCState == LOW) {// jei dabartinė būsena yra LOW, tada mygtukas buvo paspaustas buttonCPushCounter ++; Serial.print ("C mygtuko paspaudimų skaičius:"); Serial.println (buttonCPushCounter); Serial.println („Sustabdymo laikmatis“); timerEnabled = 0; }} if (timerEnabled == 1) {// padidinkite laikmatį tik jį paleidus timerVal = (milis () - lastStartTime)/1000; }
// rodyti 1 poziciją - prognozė
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (BALTA); // display.setCursor (0, 0); // display.print ("Prognozė:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("antra eilutė"); // display.println ("pavyzdinis turinys"); // display.display (); // // delay (2000); //}
// rodyti 1 poziciją - 1 užduotis
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (BALTA); display.clearDisplay (); display.setCursor (0, 0); display.println („Tyrimai - interviu“); display.println (); display.print („Laikmatis:“); display.println (timerVal); display.display (); }
// rodyti 2 poziciją - 2 užduotis
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println („Studijos kūrimas - kodas“); display.println (); display.print („Laikmatis:“); display.println (timerVal); display.display (); }
// rodyti 3 poziciją - 3 užduotis
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println („DSV - eskizas“); display.println (); display.print („Laikmatis:“); display.println (timerVal); display.display (); }
// išsaugoti dabartinę būseną kaip paskutinę būseną, // kitą kartą per ciklą lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// ši funkcija iškviečiama kiekvieną kartą, kai gaunamas pranešimas
// gaunamas iš „Adafruit IO“. jis buvo pridėtas prie // kanalo aukščiau esančioje sąrankos () funkcijoje. void handleMessage („AdafruitIO_Data *“duomenys) {
Eilutės prognozė = duomenys-> toString (); // išsaugokite gaunamų orų duomenis eilutėje
Serial.print ("gavo <-"); Serial.println (prognozė); displayForecast = prognozė; // sekančiose eilutėse saugomi įvairūs IFTTT orų pranešimų žodžiai, kuriuos iki šiol atradau String task1 = String ("1 užduotis"); Styginis lietus = Styga („Lietus“); String lightrain = Styga ("Lengvas lietus"); Styginis lietaus dušas = Styga („Lietus dušas“); Stygos AMshowers = Styga ("AM dušai"); Styga lietus ir sniegas = styga („Lietus ir sniegas“); Styginis sniegas = Styga („Sniegas“); String snowshower = String („Sniego dušas“); Styga debesuota = Styga („Debesuota“); String daugiausia debesuota = Styga ("Dažniausiai debesuota"); Eilutė részben debesuota = Styga ("Iš dalies debesuota"); Eilutė aiški = eilutė („Išvalyti“); Styginių mugė = Styga („Sąžininga“); Styga saulėta = Styga („Saulėta“);
// Tai, jei teiginiai lygina gaunamo oro kintamąjį su saugomomis sąlygomis ir atitinkamai valdo „NeoPixels“.
// jei prognozėje yra lietaus, jei (prognozė.lygybėsIgnoreCase (lietus) || prognozė.vienodaiIgnorekazas (lengvas) || prognozė.vienodaiIgnorekazė (lietus) || prognozė.vienodaiIgnorekazas (AMshowers)) {Serial.println ( krituliai šiandienos prognozė “);
}
// jei prognozėje yra sniego if (prognozės.lygybėsIgnoreCase (sniegas) || prognozės.lygybėsIgnoreCase (lietaus sniegas) || prognozės.lygybėsIgnoreCase (snowshower)) {Serial.println ("krituliai šiandien prognozėje");
}
// jei prognozėje yra saulė if (prognozė.lygybėIgnorekazas (aiškus) || prognozė.lygybėIgnorekazė (teisinga) || prognozė.lygybėIgnorekazė (saulėta)) {Serial.println ("kažkokia saulės prognozė šiandien");
}
// jei prognozėje yra debesų if (prognozė.lygybėIgnoreCase (debesuota) || prognozė.lygybėIgnorekazė (daugiausia debesuota) || prognozė.lygybėIgnorekazė (iš dalies debesuota)) {Serial.println ("debesuotas dangus prognozėje šiandien");
}
}
3 žingsnis: sukurkite konteinerį / apvalkalą
Dėl apvalkalo pirmiausia nustatykite, kokio dydžio norite rėmelio, arba galite atsisiųsti mano failą. Nustačius dydį, galite naudoti „MakerCase“, kad sukurtumėte vektorinio failo maketą.
Paleiskite failą per lazerinį pjaustytuvą - tai turėtų užtrukti apie 5 minutes. Po to sudėkite apvalkalą.
Aš neatsižvelgiau į medžiagos plotį, dėl kurio mano mygtukus sunku pasiekti. Man dar reikia rasti būdą, kaip juos pritvirtinti. Jie taip pat yra labai maži, todėl jiems sunku dirbti.