Tartalomjegyzék:
- Kellékek
- 1. lépés: Forrasztás az áramkörön
- 2. lépés: Adja hozzá a kódot
- 3. lépés: Hozza létre a tárolót / héjat
Videó: TOYL Task Tracker: 3 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Ne csak gyűlölje, ha dolgozni tervez, vagy rosszabb esetben, egy munkamenet kellős közepén van, és egy értesítés érkezik a telefonjára-a „gyors ellenőrzés” órákkal később lesz. Azt is tudja, hogy mennyi időt dolgozik bizonyos feladatokon a heti munkára szánt időhöz képest?
Lépjen be a TOYL Feladatkövetőbe. Lehetővé teszi a telefon kikapcsolását és a munkára való összpontosítást, ugyanakkor lehetővé teszi, hogy beállítsa a heti munkaidőt-mondjuk 60 órát-és az elvégzendő feladatokat. Amikor leül egy foglalkozásra, akkor képet kap arról, hogy mennyi ideje maradt a munkájára. A nyomkövetőnek két módja van: az időzítő, ahol előre beállította, hogy mennyi időt szeretne tölteni feladatonként hetente, és a stopper, ahol egyszerűen elindíthatja-leállíthatja az időzítőt egy feladat kiválasztása után.
Kellékek
Áramkör
- Adafruit Feather Huzzah
- Adafruit FeatherWing
- Férfi fejléc csapok
- Női fejléc csapok
- 500mAh akkumulátor
- 100K ohmos ellenállások x2
- Szigetelő szalag
- Sodrott huzal
- Huzalhúzók
- Forrasztó ventilátor
Burkolat
- Átlátszatlan akril lap 24 "x18"
- Kétoldalú ragasztó
- Hozzáférés egy lézervágóhoz
- Vektor szoftver
1. lépés: Forrasztás az áramkörön
Forgassa a női fejléceket a Feather Huzzah -ra. Ez az oktatóanyag hasznos a Feather Huzzah hardver beállításához. Ezután forrasztja a fejléc csapjait a FeatherWinghez. Az ilyen módon történő forrasztás lehetővé teszi a tollszárny összekapcsolását és elválasztását a Feather Huzzah -tól, ha szükséges. Ez különösen akkor hasznos, ha ellenállásokat kell hozzáadnia a FeatherWinghez, ami a következő lépés. Csatlakoztasson 100K ohmos ellenállásokat minden 0 és 2 érintkezőből, 3V -ra csatlakoztatva.
Állítsa be a Feather Huzzah hardvert
Állítsa be a Feather Wing hardvert
2. lépés: Adja hozzá a kódot
Ez a kód az 5. lecke tárgyak internete kódjának adaptációja. Ha időm engedi, szeretném lecserélni a Preceptitaton szolgáltatást egy olyanra, amely a ToDosit IFTTT kisalkalmazáson keresztül hozzáadott feladatokat követi. Jelenleg manuálisan kell beírnia egy feladatkészletet, és az A gombbal végig kell lépnie rajtuk. Ezenkívül szerettem volna az időzítőt kódolni, hogy percben számolja, és leálljon, amikor a következő feladatra vált. Hatalmas köszönet Becky Sternnek az időzítő alapkódjának létrehozásáért és a feladatok elvégzéséért. Ha érdekli a projekt internethez való csatlakoztatása, azt javaslom, hogy nézze meg ezt az osztályt.
// Instructables Internet of Things Class mintakód // Circuit Internet Data
// Az Adafruit időt és erőforrásokat fektet be a nyílt forráskód biztosításába.
// Kérjük, támogassa az Adafruitot és a nyílt forráskódú hardvert az Adafruit termékeinek megvásárlásával! // // Todd Treece írta az Adafruit Industries számára // Copyright (c) 2016 Adafruit Industries // Az MIT licenc alapján engedélyezett. // // A fenti szöveget minden újraelosztásnak tartalmaznia kell.
/************************ Adafruit IO konfiguráció ********************** *********
/ látogasson el az io.adafruit.com webhelyre, ha fiókot kell létrehoznia, // vagy ha szüksége van az Adafruit IO kulcsra. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"
/******************************** WIFI konfiguráció **************** **********************/
#define WIFI_SSID "WifiName"
#define WIFI_PASS "WifiPassword"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************ Itt kezdődik a fő program ********************* **********/
#befoglalás #befoglalás #befoglalás #befoglalás
#befoglalni
#befoglalni #befoglalni #befoglalni
#define OLED_RESET 3
Adafruit_SSD1306 kijelző (128, 32, & Wire, OLED_RESET);
// ez az állandó nem változik:
const int gombPinA = 0; // azok a gombostűk, amelyekhez a nyomógombok a const int gombhoz vannak rögzítvePinB = 16; // ennek már van felhúzó ellenállása, a másik kettőnek szüksége van egy const int gombraPinC = 2;
// A változók változnak:
int gombAPushCounter = 0; // számláló a gombnyomások számához int buttonAState = 0; // a gomb jelenlegi állapota int lastButtonAState = 0; // a gomb előző állapota
// A változók változnak:
int gombBPushCounter = 0; // számláló a gombnyomások számához int buttonBState = 0; // a gomb jelenlegi állapota int lastButtonBState = 0; // a gomb előző állapota
// A változók változnak:
int gombCPushCounter = 0; // számláló a gombnyomások számához int buttonCState = 0; // a gomb jelenlegi állapota int lastButtonCState = 0; // a gomb előző állapota
String displayForecast = "ismeretlen";
int timerVal = 0;
unsigned long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *csapadék = io.feed ("csapadék"); // a 'csapadék' feed beállítása
// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // a 'feladatkezelő' feed beállítása
void setup () {
pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = a kijelző feszültségének generálása 3.3V -ból belsőleg
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Cím 0x3C 128x32 esetén
// A kezdeti megjelenítési puffer tartalom megjelenítése a képernyőn -
// a könyvtár inicializálja ezt egy Adafruit splash képernyővel. display.display (); késleltetés (2000); // Szünet 2 másodpercre
// Törölje a puffert.
display.clearDisplay ();
// indítsa el a soros kapcsolatot
Sorozat.kezdet (115200);
// csatlakozzon az io.adafruit.com webhelyhez
Serial.print ("Csatlakozás Adafruit IO -hoz"); io.connect (); // üzenetkezelő beállítása a 'csapadék' feedhez. // a handleMessage függvény (az alábbiakban definiálva) // meghívásra kerül, amikor üzenet érkezik // az adafruit io -tól. csapadék-> onMessage (handleMessage);
// várjon a kapcsolatra
while (io.status () <AIO_CONNECTED) {Serial.print ("."); késleltetés (500); }
// kapcsolatban vagyunk
Sorozat.println (); Serial.println (io.statusText ());
}
void loop () {
// io.run (); minden vázlathoz kötelező.
// mindig jelen kell lennie a ciklus // függvényének tetején. az ügyfelet csatlakoztatva tartja az // io.adafruit.com webhelyhez, és feldolgozza a bejövő adatokat. io.run ();
// olvassa el a nyomógomb bemeneti csapját:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
// a buttonState összehasonlítása az előző állapotával
if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// ha az állapot megváltozott, akkor növelje a számlálót, ha (buttonAState == LOW) {// ha az aktuális állapot LOW, akkor a gomb megnyomta a gombotAPushCounter ++; Serial.print ("A gomb megnyomásának száma:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// ha az aktuális állapot LOW, akkor a gombot megnyomta buttonBPushCounter ++; Serial.print ("B gomb megnyomások száma:"); Serial.println (buttonBPushCounter); Serial.println ("Indítás időzítő"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// ha az aktuális állapot LOW, akkor a gombot megnyomták buttonCPushCounter ++; Serial.print ("C gomb megnyomások száma:"); Serial.println (buttonCPushCounter); Serial.println ("Stopping timer"); timerEnabled = 0; }} if (timerEnabled == 1) {// csak akkor növelje az időzítőt, amikor elindította timerVal = (millis () - lastStartTime)/1000; }
// 1. pozíció megjelenítése - előrejelzés
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (FEHÉR); // display.setCursor (0, 0); // display.print ("Előrejelzés:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("második sor"); // display.println ("példa tartalom"); // display.display (); // // delay (2000); //}
// 1. pozíció megjelenítése - 1. feladat
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (FEHÉR); display.clearDisplay (); display.setCursor (0, 0); display.println ("Kutatás - Interjúk"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// 2. pozíció megjelenítése - 2. feladat
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Stúdió készítése - kód"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// 3. pozíció megjelenítése - 3. feladat
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Sketching"); display.println (); display.print ("Timer:"); display.println (timerVal); display.display (); }
// az aktuális állapot mentése utolsó állapotként, // a következő alkalommal a cikluson keresztül lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// ezt a függvényt hívják meg minden üzenet esetén
// az Adafruit IO -tól érkezik. a fenti setup () függvényben a // feedhez csatolták. void handleMessage (AdafruitIO_Data *adatok) {
String előrejelzés = adatok-> toString (); // tárolja a bejövő időjárási adatokat karakterláncban
Serial.print ("kapott <-"); Serial.println (előrejelzés); displayForecast = előrejelzés; // a következő karakterláncok tárolják a különböző IFTTT időjárásjelentési szavakat, amelyeket eddig felfedeztem String task1 = String ("1. feladat"); String rain = String ("Eső"); String lightrain = String ("Könnyű eső"); String esőzuhany = String ("Esőzuhany"); String AMshowers = String ("AM zuhanyok"); String rainandsnow = String ("Eső és hó"); String snow = String ("Hó"); String snowshower = String ("Hózuhany"); String cloudy = String ("Felhős"); String Mostcloudy = String ("Többnyire felhős"); String részben felhős = String ("Részben felhős"); String clearsky = Karakterlánc ("Törlés"); String fair = String ("Fair"); String sunny = String ("Sunny");
// Ezek az if utasítások összehasonlítják a bejövő időjárási változót a tárolt feltételekkel, és ennek megfelelően vezérlik a NeoPixeleket.
// ha esik az eső az előrejelzésben előrejelzés ma );
}
// ha hó van az előrejelzésben if (prognoz.equalsIgnoreCase (hó) || prognoz.equalsIgnoreCase (esőhó) || prognoz.equalsIgnoreCase (hóeső)) {Serial.println ("csapadék az előrejelzésben ma");
}
// ha van nap az előrejelzésben if (prognoz.equalsIgnoreCase (világos) | || prognoz.equalsIgnoreCase (fair) || prognoz.equalsIgnoreCase (napos)) {Serial.println ("valamiféle nap az előrejelzésben ma");
}
// ha vannak felhők az előrejelzésben if (prognoz.equalsIgnoreCase (felhős) || prognoz.equalsIgnoreCase (többnyire felhős) || prognoz.equalsIgnoreCase (részben felhős)) {Serial.println ("felhős égbolt az előrejelzésben ma");
}
}
3. lépés: Hozza létre a tárolót / héjat
A héjnál kezdje azzal, hogy meghatározza, milyen méretűre szeretné a keretét, vagy töltse le a fájlomat. Miután meghatározta a méretet, a MakerCase segítségével létrehozhatja a vektorfájl elrendezését.
Futtassa le a fájlt a lézervágón - körülbelül 5 percet vesz igénybe. Ezt követően rakja össze a héjat.
Nem vettem figyelembe az anyag szélességét, ami megnehezíti a gombok elérését. Még mindig meg kell találnom a módját, hogy rögzítsem őket. Nagyon kicsik is, ami megnehezíti a munkát.
Ajánlott:
Etextil VR kesztyűk a Vive Tracker számára: 13 lépés (képekkel)
Etextíliás VR kesztyűk a Vive Tracker számára: Ez az oktatóanyag bemutatja, hogyan lehet etextil kesztyűt készíteni a VR használatához a Vive trackerrel. Lecserélik a Vive -hoz tervezett joystick -okat, így a VR -interakciók tapinthatóbbak és emberiesebbek lesznek. Ezeket „mudra” kesztyűknek nevezik, mert becsípik az indexet és
DIY Solar Tracker: 27 lépés (képekkel)
DIY Solar Tracker: Bevezetés Célunk, hogy megismertessük a fiatal diákokat a mérnöki tudással, és megtanítsuk őket a napenergiára; azáltal, hogy tantervük részeként Helios -t építenek. A mérnöki munka során törekednek arra, hogy az energiatermelést eltávolítsák a fosszilis tüzelőanyagok használatától
DIY Miniatűr Solar Tracker: 5 lépés (képekkel)
DIY Miniatűr Solar Tracker: Ebben a projektben megmutatom, hogyan lehet létrehozni egy napelemes nyomkövetőt, amely a névhez hasonlóan követheti a nap mozgását a nap folyamán. És a végén megmutatom az energiatermelés különbségét egy napelemes nyomkövetőre szerelt napelem között
Filmkövető - Raspberry Pi Powered Theatrical Release Tracker: 15 lépés (képekkel)
Filmkövető - Raspberry Pi Powered Theatrical Release Tracker: A Movie Tracker egy kalaplap alakú, Raspberry Pi -alapú kiadáskövető. A TMDb API segítségével nyomtatja ki a posztert, a címet, a megjelenési dátumot és a régió közelgő filmjeinek áttekintését egy meghatározott időintervallumban (pl. A film ezen a héten)
Aerobic Arduino - $ 15 Fitness Tracker Power egy Arduino által: 9 lépés (képekkel)
Aerobic Arduino - $ 15 Fitness Tracker Power egy Arduino -tól: Kérjük, szavazzon erre a fitnesz kihívásban a Fitbit vagy az okosóra helyett, és csak 15 dollárért építhet Arduino -alapú fitneszkövetőt! Futás közben nyomon követi a karok pumpáló mozgását, és gyorsulásmérő segítségével észleli ezt. Ez