Obsah:
Video: Tracker úkolů TOYL: 3 kroky (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Nenávidíte to, když plánujete pracovat nebo ještě hůř, jste uprostřed pracovního sezení a na váš telefon přijde oznámení-„rychlá kontrola“se stane o několik hodin později. Také víte, kolik času věnujete určitým úkolům v poměru k času, který jste si na práci přidělili za týden?
Zadejte TOYL Task Tracker. Umožňuje vám vypnout telefon a soustředit se na práci a současně vám umožňuje nastavit dobu, kterou byste chtěli odpracovat za týden-řekněme 60 hodin-a úkoly, které chcete splnit. Když si sednete k sezení, získáte představu o tom, kolik času vám zbývá na celkovou práci. Tracker má dva režimy: Časovač, kde jste si přednastavili, kolik času chcete strávit na úkol za týden, a Stopky, kde můžete jednoduše spustit nebo zastavit časovač po výběru úkolu.
Zásoby
Obvod
- Adafruit Feather Huzzah
- Peří křídlo Adafruit
- Samčí kolíkové hlavičky
- Samičí záhlaví kolíků
- 500mAh baterie
- Rezistory 100K ohm x2
- Izolační páska
- Splétaný drát
- Odstraňovače drátů
- Pájecí ventilátor
Kryt
- Neprůhledný akrylový list 24”x18”
- Oboustranná páska
- Přístup k laserové řezačce
- Vektorový software
Krok 1: Pájejte obvod
Připájejte kolíkové hlavičky k Feather Huzzah. Tento tutoriál je užitečný pro nastavení hardwaru Feather Huzzah. Poté připájejte samčí kolíkové hlavičky k FeatherWing. Pájení tímto způsobem vám umožní v případě potřeby připojit a oddělit Feather Wing od Feather Huzzah. To je obzvláště užitečné, když potřebujete do svého FeatherWing přidat odpory, což je další krok. Připojte odpory 100K ohmů z každého pinu 0 a 2 připojeného na 3V.
Nastavte si hardware Feather Huzzah
Nastavte si hardware Feather Wing
Krok 2: Přidejte svůj kód
Tento kód je adaptací kódu Lekce 5 Internet věcí, pokud to čas dovolí, chtěl bych nahradit službu Preceptitaton službou, která sleduje úkoly přidané prostřednictvím apletu ToDosit IFTTT. V tuto chvíli byste museli ručně zadat sadu úkolů a pomocí tlačítka A je procházet. Navíc bych byl rád, kdyby byl časovač zakódován tak, aby počítal v minutách a zastavil se při přepnutí na další úkol. Velké poděkování Becky Sternové za vytvoření základního kódu pro časovač a procházení úkolů. Pokud máte zájem o připojení projektu k internetu, vřele doporučuji projít si tuto sadu tříd.
// Instructables Internet of Class Ukázkový kód // Okruh zobrazuje internetová data // Data o počasí se shromažďují ve zdroji // Několik NeoPixelů vizualizuje povětrnostní podmínky // // Upraveno Becky Stern 2017 // na základě příkladu předplatného Adafruit IO
// Adafruit investuje čas a prostředky poskytováním tohoto otevřeného zdrojového kódu.
// Podporujte prosím Adafruit a hardware s otevřeným zdrojovým kódem nákupem // produktů od Adafruit! // // Napsal Todd Treece pro Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Licencováno pod licencí MIT. // // Veškerý výše uvedený text musí být součástí jakékoli redistribuce.
/************************ Konfigurace IO Adafruit ********************* *********
/ navštivte io.adafruit.com, pokud si potřebujete vytvořit účet, // nebo pokud potřebujete IO klíč Adafruit. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"
/******************************* Konfigurace WIFI **************** *********************/
#define WIFI_SSID "WifiName"
#define WIFI_PASS "WifiPassword"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************* Hlavní program začíná zde ******************** **********/
#include #include #include #include
#zahrnout
#include #include #include
#define OLED_RESET 3
Displej Adafruit_SSD1306 (128, 32, & Wire, OLED_RESET);
// tato konstanta se nezmění:
tlačítko const intPinA = 0; // piny, ke kterým jsou tlačítka připojena, const const buttonPinB = 16; // tento už má stahovací odpor, další dva potřebují jedno const int buttonPinC = 2;
// Proměnné se změní:
int tlačítkoAPushCounter = 0; // čítač počtu stisknutí tlačítka int buttonAState = 0; // aktuální stav tlačítka int lastButtonAState = 0; // předchozí stav tlačítka
// Proměnné se změní:
int tlačítkoBPushCounter = 0; // čítač počtu stisknutí tlačítek int buttonBState = 0; // aktuální stav tlačítka int lastButtonBState = 0; // předchozí stav tlačítka
// Proměnné se změní:
int buttonCPushCounter = 0; // čítač počtu stisknutí tlačítka int buttonCState = 0; // aktuální stav tlačítka int lastButtonCState = 0; // předchozí stav tlačítka
Řetězec displayForecast = "neznámý";
int timerVal = 0;
unsigned long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *srážení = io.feed ("srážení"); // nastavení zdroje srážek
// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // nastavení zdroje 'taskmanager'
neplatné nastavení () {
pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = generovat zobrazovací napětí z 3,3 V interně
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Adresa 0x3C pro 128x32
// Zobrazit počáteční obsah vyrovnávací paměti na obrazovce -
// knihovna to inicializuje úvodní obrazovkou Adafruit. display.display (); zpoždění (2000); // Pauza na 2 sekundy
// Vymažte vyrovnávací paměť.
display.clearDisplay ();
// spusťte sériové připojení
Serial.begin (115200);
// připojení k io.adafruit.com
Serial.print („Připojení k Adafruit IO“); io.connect (); // nastavení obsluhy zpráv pro zdroj 'srážení'. // funkce handleMessage (definovaná níže) // bude volána vždy, když je // přijata zpráva z adafruit io. srážení-> onMessage (handleMessage);
// počkejte na připojení
while (io.status () <AIO_CONNECTED) {Serial.print ("."); zpoždění (500); }
// jsme připojeni
Serial.println (); Serial.println (io.statusText ());
}
prázdná smyčka () {
// io.run (); je vyžadován pro všechny skici.
// vždy by měl být přítomen v horní části funkce smyčky //. udržuje klienta připojeného k // io.adafruit.com a zpracovává veškerá příchozí data. io.run ();
// přečtěte si vstupní pin tlačítka:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
// porovnat buttonState s předchozím stavem
if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// pokud se stav změnil, zvyšte čítač if (buttonAState == LOW) {// pokud je aktuální stav LOW, pak tlačítko bylo stisknuto tlačítkoAPushCounter ++; Serial.print ("počet stisknutí tlačítka A:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// pokud je aktuální stav LOW, pak bylo tlačítko stisknuto buttonBPushCounter ++; Serial.print ("počet stisknutí tlačítka B:"); Serial.println (buttonBPushCounter); Serial.println ("Časovač spuštění"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// pokud je aktuální stav LOW, pak bylo tlačítko stisknuto buttonCPushCounter ++; Serial.print ("počet stisknutí tlačítka C:"); Serial.println (buttonCPushCounter); Serial.println ("Časovač zastavení"); timerEnabled = 0; }} if (timerEnabled == 1) {// zvýší časovač pouze tehdy, když byl spuštěn timerVal = (millis () - lastStartTime)/1000; }
// pozice zobrazení 1 - předpověď
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (WHITE); // display.setCursor (0, 0); // display.print ("Předpověď:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("druhý řádek"); // display.println ("ukázkový obsah"); // display.display (); // // zpoždění (2000); //}
// pozice zobrazení 1 - úkol 1
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (BÍLÁ); display.clearDisplay (); display.setCursor (0, 0); display.println („Výzkum - Rozhovory“); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// pozice zobrazení 2 - úkol 2
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println („Making Studio - Code“); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// pozice zobrazení 3 - úkol 3
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println („DSV - skicování“); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// uložení aktuálního stavu jako posledního stavu, // pro příště přes smyčku lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// tato funkce se volá vždy, když se objeví zpráva
// je přijímán od Adafruit IO. bylo připojeno k // zdroji ve funkci setup () výše. void handleMessage (data AdafruitIO_Data *) {
Řetězcová předpověď = data-> toString (); // uložení příchozích údajů o počasí do řetězce
Serial.print ("přijato <-"); Serial.println (předpověď); displayForecast = předpověď; // následující řetězce ukládají různá slova o počasí IFTTT, která jsem zatím objevil String task1 = String ("Úkol 1"); String rain = String („Déšť“); String lightrain = String ("Lehký déšť"); String rainshower = String („Rain Shower“); String AMshowers = String ("AM sprchy"); String rainandsnow = String („Déšť a sníh“); String snow = String ("Sníh"); String snowshower = String ("Snow Shower"); String cloudy = String ("Cloudy"); String většinoucloudy = String ("Skoro zataženo"); String částečně zataženo = Řetězec ("Částečně zataženo"); String clearsky = String ("Vymazat"); String fair = String („Fair“); String Sunny = String ("Sunny");
// Tyto příkazy porovnávají příchozí proměnnou počasí s uloženými podmínkami a podle toho řídí NeoPixels.
// pokud je v předpovědi déšť if (prognóza.equalsIgnoreCase (déšť) || prognóza.equalsIgnoreCase (lightrain) || prognóza.equalsIgnoreCase (dešťová sprcha) || prognóza.equalsIgnoreCase (AMshowers)) {Serial.println ( srážky v předpověď dnes “);
}
// pokud je v předpovědi sníh if (forecast.equalsIgnoreCase (sníh) || prognóza.equalsIgnoreCase (rainandsnow) || prognóza.equalsIgnoreCase (snowshower)) {Serial.println ("srážky v předpovědi dnes");
}
// pokud je v předpovědi slunce if (forecast.equalsIgnoreCase (clearsky) || prognóza.equalsIgnoreCase (spravedlivá) || prognóza.equalsIgnoreCase (slunečno)) {Serial.println ("nějaký druh slunce v předpovědi dnes");
}
// pokud jsou v předpovědi mraky if (prognóza.equalsIgnoreCase (zataženo) || prognóza.equalsIgnoreCase (většinou zataženo) || prognóza.equalsIgnoreCase (částečně zataženo)) {Serial.println ("zatažená obloha v předpovědi dnes");
}
}
Krok 3: Vytvořte kontejner / skořápku
U shellu začněte určením velikosti, kterou chcete, aby měl váš rámeček, nebo si můžete stáhnout můj soubor. Jakmile určíte velikost, můžete použít MakerCase k vytvoření rozložení pro vektorový soubor.
Spusťte soubor laserovou řezačkou - mělo by to trvat asi 5 minut. Poté skořápku dejte dohromady.
Nezohledňoval jsem šířku materiálu, kvůli kterému je moje tlačítka obtížně dosažitelná. Stále musím najít způsob, jak je připojit. Jsou také velmi malé, což ztěžuje práci s nimi.
Doporučuje:
Časovač domácích úkolů od Arduina: 5 kroků
Časovač domácích úkolů vytvořený Arduinem: Píše vaše dítě své domácí úkoly celé hodiny? Je vaše dítě snadno rozptýleno ostatními, když dělá své domácí úkoly? Dnes jsem se pokusil udělat nejlepší řešení tohoto konfliktu: časovač od Arduina. Proč se snažím vytvořit tento časovač místo
Časovač Arduino pro psaní domácích úkolů: 7 kroků
Časovač Arduino pro psaní domácích úkolů: V tomto tutoriálu se naučíte, jak vytvořit časovač Arduino pro mladé studenty, aby mohli efektivně psát své domácí úkoly. Časovač se spustí, jakmile je zapojen, a časovač má dvě hlavní části, které zahrnují pracovní čas a přestávku
Nasazení první aplikace seznamu úkolů: 8 kroků
Nasadit svou první aplikaci seznamu úkolů: Pokud jste v kódování úplně noví nebo máte nějaké kódování na pozadí, možná si říkáte, kde se začít učit. Musíte se naučit, jak, co, kam kódovat, a poté, jakmile je kód připraven, jak jej nasadit, aby ho celý viděl. Dobrá zpráva
Strukturování úkolů psaní pomocí Google Forms + AutoCrat: 12 kroků
Strukturování úkolů psaní pomocí Google Forms + AutoCrat: Mají vaši studenti potíže se strukturováním prohlášení o diplomových pracích, úvodů, abstraktů nebo celých úkolů psaní? Dostáváte eseje, které nedodržely konkrétní formát? Pokud ano, použijte Google Forms a rozšíření pro Chrome autoCrat, abyste
Seznam úkolů Arduino: 5 kroků
Seznam úkolů Arduino: Toto je seznam úkolů Arduino. Je to normální seznam úkolů, ale připojený k Arduinu. Kdykoli dokončíte úkol, získáte body, ze kterých se pak můžete rozhodnout, co uděláte. Jak to funguje: Napište úkoly, které musíte udělat, na list papíru. Poté vložte