Sadržaj:
Video: TOYL Track Task Tracker: 3 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Ne mrzite li samo kad planirate raditi ili još gore, usred ste radnog vremena i na telefon vam stiže obavijest-"brza provjera" postaje nekoliko sati kasnije. Također, znate li koliko vremena radite na određenim poslovima u odnosu na vrijeme koje ste izdvojili za rad sedmično?
Unesite TOYL Task Tracker. Omogućava vam da isključite telefon i fokusirate se na posao, dok vam istovremeno omogućava postavljanje vremena koje želite raditi tjedno-recimo 60 sati-i zadataka koje želite obaviti. Kad sjednete za sesiju, imate ideju o tome koliko vam je vremena ostalo za cjelokupni rad. Tracker ima dva načina rada: Tajmer, gdje ste unaprijed odredili koliko vremena želite potrošiti po zadatku sedmično, i Štoperica, gdje možete jednostavno pokrenuti-zaustaviti mjerač vremena nakon odabira zadatka.
Supplies
Krug
- Adafruit Feather Huzzah
- Adafruit FeatherWing
- Muški pinovi zaglavlja
- Ženske igle zaglavlja
- Baterija 500mAh
- 100K ohmski otpornici x2
- Izolacijska traka
- Nasukana žica
- Strojevi za skidanje žice
- Solder Fan
Kućište
- Neprozirni akrilni lim 24”x18”
- Dvostrana traka
- Pristup laserskom rezaču
- Vektorski softver
Korak 1: Lemite svoj krug
Lemite igle ženskog zaglavlja na pero Huzzah. Ovaj vodič je koristan za postavljanje hardvera Feather Huzzah. Zatim lemite muške iglice zaglavlja na FeatherWing. Lemljenje na ovaj način omogućuje vam da spojite i odvojite krilo od perja od perje po potrebi. Ovo je posebno zgodno kada trebate dodati otpornike u FeatherWing, što je sljedeći korak. Spojite 100K ohmske otpornike sa svakog pina 0 i 2, spojeni na 3V.
Postavite svoj Feather Huzzah hardver
Postavite hardver za Feather Wing
Korak 2: Dodajte svoj kôd
Ovaj kôd je adaptacija koda Interneta lekcija 5, ako vrijeme dopušta, želio bih zamijeniti uslugu Preceptitaton s onom koja prati zadatke koji se dodaju putem ToDosit IFTTT apleta. Trenutno biste morali ručno unijeti skup zadataka i koristiti tipku A za njihovo kretanje. Osim toga, volio bih da sam kodirao tajmer za brojanje u minutama i zaustavljanje pri prelasku na sljedeći zadatak. Veliko hvala Becky Stern za stvaranje osnovnog koda za tajmer i kretanje kroz zadatke. Ako ste zainteresirani za povezivanje projekta na internet, toplo preporučujem da prođete kroz ovaj skup časova.
// Uzorak koda klase Internet stvari koje se mogu uputiti // Krug prikazuje internetske podatke // Podaci o vremenu prikupljaju se u feedu // Više neo -piksela vizualizira vremenske prilike // // izmijenilo Becky Stern 2017 // na osnovu primjera pretplate na Adafruit IO
// Adafruit ulaže vrijeme i resurse pružajući ovaj otvoreni kod.
// Molimo vas da podržite Adafruit i hardver otvorenog koda kupovinom // proizvoda od Adafruit! // // Napisao Todd Treece za Adafruit Industries // Autorska prava (c) 2016 Adafruit Industries // Licencirano pod MIT licencom. // // Sav gornji tekst mora biti uključen u bilo koju preraspodjelu.
/************************ Adafruit IO konfiguracija ********************** *********
/ posjetite io.adafruit.com ako trebate stvoriti račun, // ili ako vam je potreban vaš Adafruit IO ključ. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"
/******************************* WIFI konfiguracija **************** **********************/
#define WIFI_SSID "WifiName"
#define WIFI_PASS "WifiPassword"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/************************ Glavni program počinje ovdje ********************* **********/
#include #include #include #include
#include
#include #include #include
#define OLED_RESET 3
Adafruit_SSD1306 ekran (128, 32 i žica, OLED_RESET);
// ova konstanta se neće promijeniti:
const int buttonPinA = 0; // pinovi na koje su tasteri pričvršćeni const int buttonPinB = 16; // ovaj već ima pullup otpornik, druga dva trebaju jedan const int buttonPinC = 2;
// Promjenljive će se promijeniti:
int buttonAPushCounter = 0; // brojač broja pritisaka tastera int buttonAState = 0; // trenutno stanje dugmeta int lastButtonAState = 0; // prethodno stanje dugmeta
// Promjenljive će se promijeniti:
int buttonBPushCounter = 0; // brojač broja pritisaka tastera int buttonBState = 0; // trenutno stanje dugmeta int lastButtonBState = 0; // prethodno stanje dugmeta
// Promjenljive će se promijeniti:
int buttonCPushCounter = 0; // brojač broja pritisaka tastera int buttonCState = 0; // trenutno stanje dugmeta int lastButtonCState = 0; // prethodno stanje dugmeta
String displayForecast = "nepoznato";
int timerVal = 0;
unsigned long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed *padavine = io.feed ("padavine"); // postavljanje feeda 'padavina'
// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // postavljanje feeda 'taskmanager'
void setup () {
pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = interno generirati napon prikaza od 3.3V
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Adresa 0x3C za 128x32
// Prikaz početnog sadržaja međuspremnika za prikaz na ekranu -
// biblioteka inicijalizira ovo s Adafruit prskanjem. display.display (); kašnjenje (2000); // Pauza 2 sekunde
// Brisanje međuspremnika.
display.clearDisplay ();
// započinjemo serijsku vezu
Serial.begin (115200);
// povežite se na io.adafruit.com
Serial.print ("Povezivanje sa Adafruit IO"); io.connect (); // postavljanje rukovatelja porukama za 'padavine'. // funkcija handleMessage (definirana dolje) // bit će pozvana kad god se poruka // primi od adafruit io. padavine-> onMessage (handleMessage);
// čekamo vezu
while (io.status () <AIO_CONNECTED) {Serial.print ("."); kašnjenje (500); }
// povezani smo
Serial.println (); Serial.println (io.statusText ());
}
void loop () {{100} {101}
// io.run (); je potrebno za sve skice.
// uvijek bi trebalo biti prisutno na vrhu vaše petlje // funkcije. održava klijenta povezanim sa // io.adafruit.com i obrađuje sve dolazne podatke. io.run ();
// čita ulazni pin tastera:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
// uporedimo buttonState sa prethodnim stanjem
if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// ako se stanje promijenilo, povećajte brojač if (buttonAState == LOW) {// ako je trenutno stanje LOW tada dugme pritisnuto dugmeAPushCounter ++; Serial.print ("broj A tastera pritiska:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// ako je trenutno stanje LOW tada je dugme pritisnuto buttonBPushCounter ++; Serial.print ("broj B tastera pritiska:"); Serial.println (buttonBPushCounter); Serial.println ("Tajmer za pokretanje"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// ako je trenutno stanje LOW tada je dugme pritisnuto buttonCPushCounter ++; Serial.print ("broj C tastera pritisnut:"); Serial.println (buttonCPushCounter); Serial.println ("Tajmer za zaustavljanje"); timerEnabled = 0; }} if (timerEnabled == 1) {// povećava tajmer samo kada je pokrenut timerVal = (millis () - lastStartTime)/1000; }
// prikaz pozicije 1 - prognoza
// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (BIJELO); // display.setCursor (0, 0); // display.print ("Predviđanje:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("drugi red"); // display.println ("primjer sadržaja"); // display.display (); // // kašnjenje (2000); //}
// prikaz pozicije 1 - Zadatak 1
if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (BIJELO); display.clearDisplay (); display.setCursor (0, 0); display.println ("Istraživanje - intervjui"); display.println (); display.print ("Tajmer:"); display.println (timerVal); display.display (); }
// prikaz položaja 2 - Zadatak 2
if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Izrada studija - kôd"); display.println (); display.print ("Tajmer:"); display.println (timerVal); display.display (); }
// prikaz položaja 3 - Zadatak 3
if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Skiciranje"); display.println (); display.print ("Tajmer:"); display.println (timerVal); display.display (); }
// sprema trenutno stanje kao posljednje stanje, // sljedeći put kroz petlju lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;
}
// ova funkcija se poziva kad god se pojavi poruka
// je primljeno od Adafruit IO. bio je priključen na // feed u gornjoj funkciji setup (). void handleMessage (AdafruitIO_Data *podaci) {
Predviđanje niza = data-> toString (); // sprema podatke o dolaznom vremenu u niz
Serial.print ("primljeno <-"); Serial.println (prognoza); displayForecast = prognoza; // sljedeći nizovi pohranjuju različite riječi izvještaja o vremenu IFTTT koje sam do sada otkrio String task1 = String ("Task 1"); String rain = String ("Kiša"); String lightrain = String ("Light Rain"); String rainshower = String ("Rain Shower"); Niz AMshowers = String ("AM tuševi"); String rainandsnow = String ("Kiša i sneg"); String snow = String ("Snow"); String snowshower = String ("Snježni pljusak"); String cloudy = String ("Cloudy"); Niz uglavnom oblačno = String ("Pretežno oblačno"); String nisko oblačno = String ("Partly Cloudy"); String clearsky = String ("Obriši"); String fair = String ("Fair"); String sunny = String ("Sunčano");
// Ove if naredbe uspoređuju dolaznu vremensku varijablu sa pohranjenim uvjetima i u skladu s tim kontroliraju NeoPixele.
// ako je u prognozi kiše if (prognoza.equalsIgnoreCase (kiša) || prognoza.equalsIgnoreCase (svjetlosna kiša) || prognoza.equalsIgnoreCase (kišni pljusak) || prognoza.equalsIgnoreCase (AMshowers)) {Serial.println ("padavine u prognoza za danas ");
}
// ako ima snijega u prognozi if (weather.equalsIgnoreCase (snow) || weather.equalsIgnoreCase (rainandsnow) || weather.equalsIgnoreCase (snowshower)) {Serial.println ("padavine u prognozi za danas");
}
// ako ima sunca u prognozi if (weather.equalsIgnoreCase (clearsky) || weather.equalsIgnoreCase (fair) || weather.equalsIgnoreCase (sunny)) {Serial.println ("neka vrsta sunca u prognozi za danas");
}
// ako ima oblaka u prognozi if (weather.equalsIgnoreCase (oblačno) || weather.equalsIgnoreCase (pretežno oblačno) || prognoza.equalsIgnoreCase (djelimično oblačno)) {Serial.println ("oblačno nebo u prognozi za danas");
}
}
Korak 3: Kreirajte spremnik / ljusku
Što se ljuske tiče, počnite tako što ćete odrediti veličinu vašeg okvira ili biste mogli preuzeti moju datoteku. Nakon što odredite veličinu, možete koristiti MakerCase za kreiranje izgleda za vektorsku datoteku.
Pokrenite datoteku kroz laserski rezač - to bi trebalo potrajati oko 5 minuta. Nakon toga spojite ljusku.
Nisam uzeo u obzir širinu materijala što otežava pristup mojim gumbima. Još uvijek moram pronaći način da ih pričvrstim. Također su vrlo mali što otežava rad s njima.
Preporučuje se:
Desktop COVID19 Tracker sa satom! Raspberry Pi Powered Tracker: 6 koraka
Desktop COVID19 Tracker sa satom! Raspberry Pi Powered Tracker: Znamo da možemo umrijeti bilo kada, čak i ja mogu umrijeti dok pišem ovaj post, na kraju krajeva, ja, ja, svi smo smrtnici. Cijeli svijet se potresao zbog pandemije COVID19. Znamo kako to spriječiti, ali hej! znamo kako se moliti i zašto moliti, radimo li to
Tinyduino LoRa Tracker Pet Tracker: 7 koraka
Tinyduino LoRa Tracker Pet Tracker: Tko ne želi imati kućne ljubimce ?? Ti krzneni prijatelji mogu vas ispuniti ljubavlju i srećom. Ali bol zbog nedostatka njih je poražavajuća. Naša porodica je imala mačka po imenu Thor (slika gore) i on je bio lutalica zaljubljenik u avanture. Mnogo puta se vraćao
Movie Tracker - Raspberry Pi Powered Theatral Release Tracker: 15 koraka (sa slikama)
Movie Tracker - Raspberry Pi Powered Theatrical Release Tracker: Movie Tracker je otkazivač koji podržava Raspberry Pi. Koristi TMDb API za štampanje postera, naslova, datuma izlaska i pregleda nadolazećih filmova u vašoj regiji u određenom vremenskom intervalu (npr. Izdanja filmova ove sedmice) na
Star Track - Arduino Powered Star Pointer i Tracker: 11 koraka (sa slikama)
Star Track - Arduino Powered Star Pointer i Tracker: Star track je Arduino sistem za praćenje zvijezda inspirisan GoTo montažom. Može usmjeriti i pratiti bilo koji objekt na nebu (nebeske koordinate date su kao ulaz) s 2 Arduina, žiroskopom, RTC modulom, dva jeftina koračna motora i 3D štampanom strukturom
AstroTracker - Tracker Star Tracker na vratima štale: 10 koraka (sa slikama)
AstroTracker - Star Tracker Star Barker Tracker: Svako može raditi astrofotografiju sve dok imate kameru. Samo ga stavite na stativ, neka objektiv ostane otvoren što je duže moguće i BAM! Prekrasne zvijezde, jata i magline. Ali šta je to? Postoje li pruge na filmu umjesto tačnih