INHOUDSOPGAWE:

TOYL Task Tracker: 3 stappe (met foto's)
TOYL Task Tracker: 3 stappe (met foto's)

Video: TOYL Task Tracker: 3 stappe (met foto's)

Video: TOYL Task Tracker: 3 stappe (met foto's)
Video: seeing wife face for first time #shorts 2024, Julie
Anonim
Image
Image
TOYL Task Tracker
TOYL Task Tracker
TOYL Task Tracker
TOYL Task Tracker

Moet u dit nie net haat as u van plan is om te werk nie, of nog erger, in die middel van 'n werksessie en 'n kennisgewing op u telefoon kom? 'N' vinnige tjek 'word ure later. Weet u ook hoeveel tyd u aan sekere take werk in verhouding tot die tyd wat u per week toegewys het?

Voer die TOYL Task Tracker in. Dit stel u in staat om u telefoon af te skakel en op werk te fokus, terwyl u terselfdertyd die hoeveelheid tyd wat u per week wil werk, sê 60 uur, en die take wat u wil voltooi, opstel. As u vir 'n sessie gaan sit, kry u 'n idee van hoeveel tyd u oor het vir u algehele werk. Die Tracker het twee modusse: Timer, waar u vooraf ingestel het hoeveel tyd u per taak per week wil spandeer, en Stopwatch, waar u die timer eenvoudig kan begin-stop nadat u 'n taak gekies het.

Voorrade

Kring

  • Adafruit veer Huzzah
  • Adafruit FeatherWing
  • Manlike kopstukke
  • Vroulike kopstukke
  • 500mAh battery
  • 100K ohm weerstande x2
  • Isolasieband
  • Gestrande draad
  • Draadstroppers
  • Soldeer waaier

Omhulsel

  • Ondeursigtige akrielblad 24 "x18"
  • Dubbelzijdige band
  • Toegang tot 'n lasersnyer
  • Vektorsagteware

Stap 1: soldeer u stroombaan

Soldeer u stroombaan
Soldeer u stroombaan
Soldeer u stroombaan
Soldeer u stroombaan
Soldeer u stroombaan
Soldeer u stroombaan

Soldeer die vroulike koppenne aan die Feather Huzzah. Hierdie handleiding is handig vir die Feather Huzzah -hardeware -opstelling. Soldeer dan die manlike koppenne aan die FeatherWing. Deur hulle op hierdie manier te soldeer, kan u die veervleugel van die veerhuzzah verbind en skei indien nodig. Dit is veral handig as u weerstande by u FeatherWing moet voeg, wat die volgende stap is. Koppel 100K ohm weerstande van elke pen 0 en 2, gekoppel aan 3V.

Stel u Feather Huzzah -hardeware op

Stel u Feather Wing -hardeware op

Stap 2: Voeg u kode by

Voeg u kode by
Voeg u kode by
Voeg u kode by
Voeg u kode by

Hierdie kode is 'n aanpassing van les 5 Internet of Things -kode, as die tyd dit toelaat, ek sou die Preceptitaton -diens wou vervang met een wat take volg wat bygevoeg word via die ToDosit IFTTT -applet. Op die oomblik moet u 'n stel take handmatig invoer en knoppie A gebruik om daardeur te blaai. Daarbenewens sou ek graag die timer wou hê om in minute te tel en te stop wanneer ek oorskakel na die volgende taak. Baie dankie aan Becky Stern vir die skep van basiskode vir die timer en deurloop van take. As u belangstel om die projek aan die internet te koppel, sal ek u ten sterkste aanbeveel om deur hierdie stel klasse te gaan.

// Instructables Internet of Things Klas voorbeeldkode // Kring vertoon internetdata // Weerdata word in 'n voer versamel // Meerdere NeoPixels visualiseer die weerstoestand // // Gewysig deur Becky Stern 2017 // gebaseer op die Adafruit IO -subskripsievoorbeeld

// Adafruit belê tyd en hulpbronne om hierdie open source -kode te verskaf.

// Ondersteun asseblief Adafruit en open source hardeware deur // produkte van Adafruit te koop! // // Geskryf deur Todd Treece vir Adafruit Industries // Kopiereg (c) 2016 Adafruit Industries // Gelisensieer onder die MIT -lisensie. // // Alle teks hierbo moet by enige herverdeling ingesluit word.

/************************ Adafruit IO -opset ********************** *********

/ besoek io.adafruit.com as u 'n rekening moet skep, // of as u u Adafruit IO -sleutel nodig het. #definieer IO_USERNAME "UGebruikersnaam Hier" #definieer IO_KEY "YourIOKeyHere"

/****************************** WIFI -konfigurasie **************** **********************/

#definieer WIFI_SSID "Wifi -naam"

#definieer WIFI_PASS "WifiPassword"

#sluit "AdafruitIO_WiFi.h" in

AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);

/************************ Hoofprogram begin hier ********************** ***********/

#include #include #include #include

#insluit

#include #include #include

#defineer OLED_RESET 3

Adafruit_SSD1306 skerm (128, 32, & Wire, OLED_RESET);

// hierdie konstante sal nie verander nie:

const int buttonPinA = 0; // die penne wat die drukknoppies aan const int buttonPinB = 16 geheg is; // hierdie een het reeds 'n pullup -weerstand, die ander twee benodig een const int buttonPinC = 2;

// Veranderlikes sal verander:

int buttonAPushCounter = 0; // teller vir die aantal druk op die knoppies int buttonAState = 0; // huidige toestand van die knoppie int lastButtonAState = 0; // vorige toestand van die knoppie

// Veranderlikes sal verander:

int buttonBPushCounter = 0; // teller vir die aantal druk op die knoppie int buttonBState = 0; // huidige toestand van die knoppie int lastButtonBState = 0; // vorige toestand van die knoppie

// Veranderlikes sal verander:

int -knoppieCPushCounter = 0; // teller vir die aantal druk op die knoppie int buttonCState = 0; // huidige toestand van die knoppie int lastButtonCState = 0; // vorige toestand van die knoppie

String displayForecast = "onbekend";

int timerVal = 0;

ongetekende lang lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *neerslag = io.feed ("neerslag"); // stel die 'neerslag' -voer op

// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // stel die feed 'taakbestuurder' op

ongeldige opstelling () {

pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);

// SSD1306_SWITCHCAPVCC = genereer intern skerm se spanning vanaf 3.3V

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Adres 0x3C vir 128x32

// Wys die oorspronklike inhoud van die vertoonbuffer op die skerm -

// die biblioteek begin dit met 'n Adafruit -spatskerm. vertoon.display (); vertraging (2000); // Pouse vir 2 sekondes

// Maak die buffer skoon.

display.clearDisplay ();

// begin die reeksverbinding

Serial.begin (115200);

// skakel met io.adafruit.com

Serial.print ("Koppel aan Adafruit IO"); io.connect (); // stel 'n boodskaphanteerder op vir die 'neerslag' -voer. // die handleMessage -funksie (hieronder gedefinieer) // sal gebel word wanneer 'n boodskap // van adafruit io ontvang word. neerslag-> onMessage (handleMessage);

// wag vir 'n verbinding

terwyl (io.status () <AIO_CONNECTED) {Serial.print ("."); vertraging (500); }

// ons is verbind

Serial.println (); Serial.println (io.statusText ());

}

leemte -lus () {

// io.run (); word benodig vir alle sketse.

// dit moet altyd aan die bokant van u lus // funksie wees. dit hou die kliënt verbind met // io.adafruit.com en verwerk inkomende data. io.run ();

// lees die drukknop -invoerpen:

buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);

// vergelyk die buttonState met sy vorige toestand

as (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// as die toestand verander het, verhoog die toonbank as (buttonAState == LOW) {// as die huidige toestand LAAG is, dan is die knoppie is op die knoppie APushCounter ++ gedruk; Serial.print ("aantal A -knoppies druk:"); Serial.println (buttonAPushCounter); } as (buttonBState == LOW) {// as die huidige toestand LOW is, dan is op die knoppie gedruk buttonBPushCounter ++; Serial.print ("aantal B -knoppies druk:"); Serial.println (buttonBPushCounter); Serial.println ("Aanvangtimer"); timerEnabled = 1; lastStartTime = millis (); } as (buttonCState == LOW) {// as die huidige toestand LOW is, dan is op die knoppie gedruk knoppieCPushCounter ++; Serial.print ("aantal C -knoppies druk:"); Serial.println (buttonCPushCounter); Serial.println ("Stop timer"); timerEnabled = 0; }} as (timerEnabled == 1) {// die tydteller slegs verhoog wanneer dit begin is timerVal = (millis () - lastStartTime)/1000; }

// vertoon posisie 1 - voorspelling

// as (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (WIT); // display.setCursor (0, 0); // display.print ("Voorspelling:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("tweede reël"); // display.println ("voorbeeldinhoud"); // display.display (); // // vertraging (2000); //}

// vertoon posisie 1 - taak 1

if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (WIT); display.clearDisplay (); display.setCursor (0, 0); display.println ("Navorsing - Onderhoude"); display.println (); display.print ("Timer:"); display.println (timerVal); vertoon.display (); }

// vertoonposisie 2 - taak 2

as (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Making Studio - Code"); display.println (); display.print ("Timer:"); display.println (timerVal); vertoon.display (); }

// vertoon posisie 3 - taak 3

if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Skets"); display.println (); display.print ("Timer:"); display.println (timerVal); vertoon.display (); }

// stoor die huidige toestand as die laaste toestand, // vir 'n volgende keer deur die lus lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// hierdie funksie word genoem wanneer 'n boodskap

// word van Adafruit IO ontvang. dit is aangeheg aan // die voer in die setup () funksie hierbo. void handleMessage (AdafruitIO_Data *data) {

Stringvoorspelling = data-> toString (); // stoor die inkomende weerdata in 'n string

Serial.print ("ontvang <-"); Serial.println (voorspelling); displayForecast = voorspelling; // die volgende snare stoor die uiteenlopende IFTTT -weerberigwoorde wat ek tot dusver ontdek het String task1 = String ("Taak 1"); Stringreën = String ("Reën"); String lightrain = String ("Ligte reën"); Stringreënbui = String ("Rain Shower"); String AMshowers = String ("AM -buie"); String rainandsnow = String ("Reën en sneeu"); String sneeu = String ("Snow"); String sneeustorm = String ("Snow Shower"); String troebel = String ("Bewolk"); String mostcloudy = String ("Meestal bewolk"); String deelklou = String ("Gedeeltelik bewolk"); String clearsky = String ("Clear"); String fair = String ("Fair"); String sonnig = String ("Sunny");

// Hierdie if -stellings vergelyk die inkomende weerveranderlike met die gestoorde toestande, en beheer die NeoPixels dienooreenkomstig.

// as daar reën in die voorspelling is as (forecast.equalsIgnoreCase (reën) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (reënbui) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("neerslag in die voorspel vandag ");

}

// as daar sneeu in die voorspelling is as (forecast.equalsIgnoreCase (sneeu) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (sneeu)) {Serial.println ("neerslag in die voorspelling vandag");

}

// as daar son in die voorspelling is as (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (redelik) || vooruitgang.equalsIgnoreCase (sonnig)) {Serial.println ("'n soort son in die voorspelling vandag");

}

// as daar wolke in die voorspelling is as (forecast.equalsIgnoreCase (troebel) || voorspelling.equalsIgnoreCase (meestal bewolk) || forecast.equalsIgnoreCase (gedeeltelik bewolk)) {Serial.println ("bewolkte lug in die voorspelling vandag");

}

}

Stap 3: Skep die houer / dop

Skep die houer / dop
Skep die houer / dop
Skep die houer / dop
Skep die houer / dop
Skep die houer / dop
Skep die houer / dop
Skep die houer / dop
Skep die houer / dop

Vir die dop, begin deur te bepaal watter grootte u raam wil hê, of u kan my lêer aflaai. Sodra u die grootte bepaal het, kan u MakerCase gebruik om die uitleg vir die vektorlêer te skep.

Begin die lêer deur die lasersnyer - dit behoort ongeveer 5 minute te neem. Sit dan die dop bymekaar.

Ek het nie die breedte van die materiaal in ag geneem nie, wat dit moeilik maak om my knoppies te bereik. Ek moet nog steeds 'n manier vind om dit aan te heg. Hulle is ook baie klein, wat dit moeilik maak om mee te werk.

Aanbeveel: