Inhoudsopgave:
Video: TOYL Task Tracker - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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 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
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
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:
GPS-tracker: 6 stappen
GPS-tracker: Hey jongens, in deze video gaan we een GPS-tracker maken met behulp van Esp 8266 (nodemcu) en een neo 6m GPS-module, dus laten we beginnen
DIY Fitness Tracker Smart Watch met oximeter en hartslag - Modulaire elektronische modules van TinyCircuits - Kleinste arcade: 6 stappen
DIY Fitness Tracker Smart Watch met oximeter en hartslag | Modulaire elektronische modules van TinyCircuits | Kleinste Arcade: Hé, wat is er, jongens! Akarsh hier van CETech.Vandaag hebben we enkele van de sensormodules bij ons die erg handig zijn in ons dagelijks leven, maar in een kleine versie van zichzelf. De sensoren die we vandaag hebben zijn erg klein in vergelijking met de tra
Een zittijd-tracker bouwen: 7 stappen
Hoe een zittijd-tracker te bouwen: dit project zal de Zio Qwiic ultrasone afstandssensor gebruiken om een persoon te detecteren en te volgen. Het apparaat wordt strategisch op een scherm/monitor geplaatst, met het gezicht naar de zittende persoon, voor zijn/haar computer. Het project zal
Covid-19 Update Tracker met ESP8266: 9 stappen
Covid-19 Update Tracker met behulp van ESP8266: dit is een project dat de huidige gegevens van de uitbraak van het coronavirus in verschillende steden van India in realtime op OLED-display toont. Met deze live statustracker kunt u de realtime covid-19-update van uw district volgen. Dit project is volledig b
Calorimeter en Activity Tracker: 5 stappen
Calorimeter en Activity Tracker: Hallo allemaal, mijn naam is Harji Nagi. Ik ben momenteel tweedejaars student en studeer elektronica en communicatietechniek in India. Vandaag heb ik een slimme "Calorimeter en Activity Tracker" via Arduino Nano, HC-05 Bluetooth-module en MPU