Inhoudsopgave:

TOYL Task Tracker - Ajarnpa
TOYL Task Tracker - Ajarnpa

Video: TOYL Task Tracker - Ajarnpa

Video: TOYL Task Tracker - Ajarnpa
Video: Time Machine VR Gameplay - Ep 1 - Underwater Dinosaurs in VR! (HTC Vive Gameplay) 2024, November
Anonim
Image
Image
TOYL Taakvolger
TOYL Taakvolger
TOYL Taakvolger
TOYL Taakvolger

Haat je het niet gewoon als je van plan bent om te werken of erger, midden in een werksessie zit en er een melding binnenkomt op je telefoon - een "snelle controle" wordt uren later. Weet je ook hoeveel tijd je aan bepaalde taken werkt in verhouding tot de tijd die je per week aan werk hebt uitgetrokken?

Voer de TOYL-taaktracker in. Hiermee kunt u uw telefoon uitschakelen en u op uw werk concentreren, terwijl u tegelijkertijd de hoeveelheid tijd kunt instellen die u per week wilt werken, bijvoorbeeld 60 uur, en de taken die u wilt doen. Als je gaat zitten voor een sessie, krijg je een idee van hoeveel tijd je nog hebt voor je totale werk. De Tracker heeft twee modi: Timer, waarbij je vooraf instelt hoeveel tijd je per taak per week wilt besteden, en Stopwatch, waar je de timer eenvoudig kunt starten-stoppen nadat je een taak hebt geselecteerd.

Benodigdheden

Stroomkring

  • Adafruit Feather Huzzah
  • Adafruit Feather Wing
  • Mannelijke koppennen
  • Vrouwelijke koppennen
  • 500mAh batterij
  • 100K ohm weerstanden x2
  • Isolatietape
  • Gevlochten draad
  • Draadstrippers
  • Soldeer ventilator

Behuizing

  • Ondoorzichtige acrylplaat 24 "x 18"
  • Dubbelzijdige tape
  • Toegang tot een lasersnijder
  • Vectorsoftware

Stap 1: Soldeer uw circuit

Soldeer je circuit
Soldeer je circuit
Soldeer je circuit
Soldeer je circuit
Soldeer je circuit
Soldeer je circuit

Soldeer de vrouwelijke header pinnen aan de Feather Huzzah. Deze tutorial is handig voor de hardwareconfiguratie van Feather Huzzah. Soldeer vervolgens de mannelijke header-pinnen aan de FeatherWing. Door ze op deze manier te solderen, kun je de Feather Wing samenvoegen en scheiden van de Feather Huzzah wanneer dat nodig is. Dit is vooral handig wanneer u weerstanden aan uw FeatherWing moet toevoegen, wat de volgende stap is. Verbind 100K ohm-weerstanden van elke pin 0 en 2, verbonden met 3V.

Stel je Feather Huzzah-hardware in

Stel uw Feather Wing-hardware in

Stap 2: Voeg uw code toe

Voeg uw code toe
Voeg uw code toe
Voeg uw code toe
Voeg uw code toe

Deze code is een aanpassing van Les 5 Internet of Things-code. Als de tijd het toelaat, zou ik de Preceptitaton-service willen vervangen door een die taken bijhoudt die zijn toegevoegd via de ToDosit IFTTT-applet. Op dit moment zou u handmatig een reeks taken moeten invoeren en knop A gebruiken om er doorheen te bladeren. Bovendien had ik graag de timer gecodeerd om in minuten te tellen en te stoppen bij het overschakelen naar de volgende taak. Enorm bedankt aan Becky Stern voor het maken van de basiscode voor de timer en het doorlopen van taken. Als je geïnteresseerd bent om het project met internet te verbinden, raad ik je ten zeerste aan om deze reeks lessen te volgen.

// Instructables Internet of Things Class-voorbeeldcode// Circuit geeft internetgegevens weer // Weergegevens worden verzameld in een feed // Meerdere NeoPixels visualiseren de weersomstandigheden // // Aangepast door Becky Stern 2017 // gebaseerd op het Adafruit IO Subscription-voorbeeld

// Adafruit investeert tijd en middelen om deze open source code te leveren.

// Ondersteun Adafruit en open source hardware door // producten van Adafruit te kopen! // // Geschreven door Todd Treece voor Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Gelicentieerd onder de MIT-licentie. // // Alle bovenstaande tekst moet worden opgenomen in elke herdistributie.

/************************* Adafruit IO-configuratie ********************* *******

/ bezoek io.adafruit.com als u een account moet aanmaken, // of als je je Adafruit IO-sleutel nodig hebt. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"

/****************************** WIFI Configuratie **************** *********************/

#define WIFI_SSID "WifiNaam"

#define WIFI_PASS "WifiWachtwoord"

#include "AdafruitIO_WiFi.h"

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

/************************* Hoofdprogramma begint hier ******************** **********/

#include #include #include #include

#erbij betrekken

#include #include #include

#define OLED_RESET 3

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

// deze constante zal niet veranderen:

const int knopPinA = 0; // de pinnen waaraan de drukknoppen zijn bevestigd const int buttonPinB = 16; // deze heeft al een pullup-weerstand, de andere twee hebben er een nodig const int buttonPinC = 2;

// Variabelen zullen veranderen:

int buttonAPushCounter = 0; // teller voor het aantal toetsaanslagen int buttonAState = 0; // huidige status van de knop int lastButtonAState = 0; // vorige status van de knop

// Variabelen zullen veranderen:

int buttonBPushCounter = 0; // teller voor het aantal toetsaanslagen int buttonBState = 0; // huidige status van de knop int lastButtonBState = 0; // vorige status van de knop

// Variabelen zullen veranderen:

int buttonCPushCounter = 0; // teller voor het aantal toetsaanslagen int buttonCState = 0; // huidige status van de knop int lastButtonCState = 0; // vorige status van de knop

String displayForecast = "onbekend";

int timerVal = 0;

unsigned long lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *neerslag = io.feed("neerslag"); // stel de 'neerslag'-feed in

//AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // stel de 'taskmanager'-feed in

ongeldige setup() {

pinMode (knopPinA, INPUT); pinMode (knopPinB, INPUT_PULLUP); pinMode (knopPinC, INPUT);

// SSD1306_SWITCHCAPVCC = intern displayspanning genereren van 3,3V

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

// Toon de inhoud van de initiële weergavebuffer op het scherm --

// de bibliotheek initialiseert dit met een Adafruit-opstartscherm. weergave.weergave(); vertraging (2000); // Pauzeer 2 seconden

// Wis de buffer.

display.clearDisplay();

// start de seriële verbinding

Serieel.begin(115200);

// verbind met io.adafruit.com

Serial.print("Verbinding maken met Adafruit IO"); io.connect(); // stel een berichthandler in voor de 'neerslag'-feed. // de handleMessage-functie (hieronder gedefinieerd) // wordt aangeroepen wanneer een bericht wordt // ontvangen van adafruit io. neerslag->onMessage(handleMessage);

// wacht op verbinding

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

// we zijn verbonden

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

}

lege lus() {

// io.run(); is vereist voor alle schetsen.

// het moet altijd bovenaan je loop //-functie aanwezig zijn. het houdt de client verbonden met // io.adafruit.com en verwerkt alle inkomende gegevens. io.run();

// lees de ingangspin van de drukknop:

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

// vergelijk de buttonState met de vorige staat

if (buttonAState != lastButtonAState || buttonBState != lastButtonBState || buttonCTate != lastButtonCState) {// als de status is veranderd, verhoog dan de teller if (buttonAState == LAAG) {// als de huidige status LAAG is, dan de knop werd ingedrukt buttonAPushCounter++; Serial.print("aantal drukken op de A-knop: "); Serial.println(buttonAPushCounter); } if (buttonBState == LAAG) {// als de huidige status LAAG is, dan is op de knop gedrukt buttonBPushCounter++; Serial.print("aantal B-knoppen: "); Serial.println(buttonBPushCounter); Serial.println("Starttimer"); timerIngeschakeld = 1; lastStartTime = millis(); } if (buttonCState == LAAG) {// als de huidige status LAAG is, dan is op de knop gedrukt buttonCPushCounter++; Serial.print("aantal C-knoppen: "); Serial.println(buttonCPushCounter); Serial.println("Timer stoppen"); timerIngeschakeld = 0; } } if (timerEnabled == 1){ // verhoog de timer alleen wanneer deze is gestart timerVal = (millis() - lastStartTime)/1000; }

//weergave positie 1 - voorspelling

// if (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 regel "); // display.println ("voorbeeldinhoud"); // display.display(); // // vertraging (2000); // }

// toon positie 1 - Taak 1

if (buttonAPushCounter % 3 == 0) { display.setTextSize(1); display.setTextColor(WIT); display.clearDisplay(); display.setCursor(0, 0); display.println("Onderzoek - Interviews"); weergeven.println(); display.print("Timer: "); display.println(timerVal); weergave.weergave(); }

// toon positie 2 - Taak 2

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

// toon positie 3 - Taak 3

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

// sla de huidige staat op als de laatste staat, // voor de volgende keer door de lus lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// deze functie wordt aangeroepen wanneer een bericht

// wordt ontvangen van Adafruit IO. het was gekoppeld aan // de feed in de setup () functie hierboven. void handleMessage (AdafruitIO_Data * data) {

Stringvoorspelling = data->toString(); // sla de binnenkomende weergegevens op in een string

Serial.print("ontvangen <- "); Serial.println(voorspelling); displayForecast = voorspelling; // de volgende strings slaan de verschillende IFTTT-weerrapportwoorden op die ik tot nu toe heb ontdekt. String task1 = String ("Task 1"); String regen = String ("Regen"); String lightrain = String ("Light Rain"); String regendouche = String ("Regendouche"); String AMshowers = String ("AM Douches"); String rainandsnow = String ("Regen en sneeuw"); String sneeuw = String ("Sneeuw"); String sneeuwbui = String ("Sneeuwbui"); String bewolkt = String ("Bewolkt"); String overwegend bewolkt = String ("Meest bewolkt"); String gedeeltelijk bewolkt = String ("Gedeeltelijk bewolkt"); String clearsky = String ("Clear"); String fair = String ("Redelijk"); String zonnig = String ("Sunny");

// Deze if-statements vergelijken de inkomende weersvariabele met de opgeslagen omstandigheden en regelen de NeoPixels dienovereenkomstig.

// als er regen is in de voorspelling if (forecast.equalsIgnoreCase(regen) || forecast.equalsIgnoreCase(lightrain) || forecast.equalsIgnoreCase(rainshower) || forecast.equalsIgnoreCase(AMshowers)){ Serial.println("neerslag in de voorspelling vandaag");

}

// als er sneeuw ligt in de voorspelling if (forecast.equalsIgnoreCase(sneeuw) || forecast.equalsIgnoreCase(rainandsnow) || forecast.equalsIgnoreCase(sneeuwbui)){ Serial.println("neerslag in de voorspelling vandaag");

}

// als er zon is in de voorspelling if (forecast.equalsIgnoreCase(clearsky) || forecast.equalsIgnoreCase(fair) || forecast.equalsIgnoreCase(sunny)){ Serial.println("een soort zon in de voorspelling vandaag");

}

// als er wolken zijn in de voorspelling if (forecast.equalsIgnoreCase(bewolkt) || forecast.equalsIgnoreCase(mostlycloudy) || forecast.equalsIgnoreCase(partlycloudy)){ Serial.println("bewolkte lucht in de voorspelling vandaag");

}

}

Stap 3: Maak de container / shell

Maak de container / shell
Maak de container / shell
Maak de container / shell
Maak de container / shell
Maak de container / shell
Maak de container / shell
Maak de container / shell
Maak de container / shell

Voor de schaal, begin met het bepalen van de grootte van je frame, of je kunt mijn bestand downloaden. Nadat u de grootte hebt bepaald, kunt u MakerCase gebruiken om de lay-out voor het vectorbestand te maken.

Voer het bestand door de lasersnijder - het duurt ongeveer 5 minuten. Zet daarna de schaal in elkaar.

Ik heb geen rekening gehouden met de breedte van het materiaal waardoor mijn knopen moeilijk te bereiken zijn. Ik moet nog een manier vinden om ze te bevestigen. Ze zijn ook erg klein, wat ze moeilijk maakt om mee te werken.

Aanbevolen: