Përmbajtje:
Video: Gjurmuesi i detyrave TOYL: 3 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
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
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
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
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:
Gjurmuesi i desktopit COVID19 me orë! Gjurmuesi i mundësuar i Raspberry Pi: 6 hapa
Gjurmuesi i desktopit COVID19 me orë! Gjurmuesi i Fuqizuar me Raspberry Pi: Ne e dimë që ne mund të vdesim në çdo kohë, madje edhe unë mund të vdes ndërsa shkruaj këtë postim, në fund të fundit, unë, ju, ne të gjithë jemi të vdekshëm. E gjithë bota u trondit për shkak të pandemisë COVID19. Ne e dimë se si ta parandalojmë këtë, por hej! ne dimë të lutemi dhe pse të lutemi, a e bëjmë
Kohëmatësi i detyrave të shtëpisë i bërë nga Arduino: 5 hapa
Kohëmatësi i detyrave të shtëpisë i bërë nga Arduino: A po i shkruan fëmija juaj detyrat e shtëpisë me orë të tëra? A shpërqendrohet fëmija juaj nga të tjerët kur bën detyrat e shtëpisë? Sot, u përpoqa të bëja zgjidhjen më të mirë për këtë konflikt: një kohëmatës të bërë nga Arduino. Pse përpiqem ta bëj këtë kohëmatës në vend të
Makina e shkrimit të detyrave të shtëpisë: 15 hapa
Makina për shkrimin e detyrave të shtëpisë: SHKARKONI APLIKIMIN TON NEW T NEW RI P TOR TET MERR T ALL GJITH PROJEKTET DIY T DIYS N ONE NJ ONE VEND. POR T D SHKARKUAR KLIKU MEL POSHTM. KLIKO KERTU > > > > > > PROJEKTE DIY Djema, sipas titullit ky është një projekt i thjeshtë duke përdorur Arduino për të bërë makinë shkrimi të detyrave të shtëpisë në
Kohëmatësi Arduino për shkrimin e detyrave të shtëpisë: 7 hapa
Kohëmatësi Arduino për Shkrimin e detyrave të shtëpisë: Në këtë tutorial, do të mësoni se si të ndërtoni një kohëmatës Arduino për studentët e moshës së re që të shkruajnë detyrat e shtëpisë në mënyrë efektive. Kohëmatësi do të fillojë pasi të jetë i kyçur dhe kohëmatësi ka dy seksione kryesore që përfshin kohën e punës dhe pushimin
Makinë e thjeshtë e thjeshtë e detyrave të shtëpisë: 4 hapa (me fotografi)
Makinë e thjeshtë e thjeshtë e detyrave të shtëpisë: Kjo makinë është ndërtuar duke përdorur materiale të lira dhe nuk kalon 7 dollarë për t'u ndërtuar. Për ta ndërtuar këtë ju duhet pak durim dhe 2 orë kohë. Dhe duhet të jeni të njohur me saldimin dhe instalimet elektrike pasi kjo përfshin një qark të vogël. Pasi të jetë ndërtuar, thjesht futeni në prizë