Taula de continguts:
- Subministraments
- Pas 1: soldeu el vostre circuit
- Pas 2: afegiu el vostre codi
- Pas 3: creeu el contenidor / shell
Vídeo: Seguiment de tasques TOYL: 3 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
No ho odieu quan teniu previst treballar o, pitjor, si esteu enmig d’una sessió de treball i apareix una notificació al vostre telèfon: un “control ràpid” es converteix en hores més tard. A més, sabeu quant de temps treballeu en determinades tasques en relació amb el temps assignat a la feina per setmana?
Introduïu el rastrejador de tasques TOYL. Us permet apagar el telèfon i concentrar-vos en la feina, alhora que us permet configurar el temps que voleu treballar a la setmana (per exemple, 60 hores) i les tasques que voleu fer. Quan us asseieu a una sessió, teniu una idea del temps que us queda per al vostre treball general. El rastrejador té dos modes: Temporitzador, on heu predeterminat el temps que voleu passar per tasca a la setmana i Cronòmetre, on podeu simplement iniciar-parar el temporitzador després de seleccionar una tasca.
Subministraments
Circuit
- Ploma d'Adafruit Huzzah
- Adafruit FeatherWing
- Clavilles masculines
- Clavilles femenines
- Bateria de 500 mAh
- Resistències de 100K ohmis x2
- Cinta aïllant
- Filferro encallat
- Decapants de filferro
- Ventilador de soldadura
Carcassa
- Full acrílic opac de 24 "x18"
- Cinta de doble cara
- Accés a un tallador làser
- Programari vectorial
Pas 1: soldeu el vostre circuit
Soldeu els passadors de capçal femení a la Ploma Huzzah. Aquest tutorial és útil per a la configuració del maquinari de Feather Huzzah. A continuació, soldeu els passadors de capçalera masculins al FeatherWing. Soldar-los d’aquesta manera us permet unir-vos i separar l’ala de plomes de la ploma Huzzah quan sigui necessari. Això és especialment útil quan cal afegir resistències al FeatherWing, que és el següent pas. Connecteu resistències de 100K ohmis de cada pin 0 i 2, connectades a 3V.
Configureu el maquinari Feather Huzzah
Configureu el maquinari de Feather Wing
Pas 2: afegiu el vostre codi
Aquest codi és una adaptació del codi d'Internet de les coses de la lliçó 5, si el temps ho permet, voldria substituir el servei Preceptitaton per un que fa un seguiment de les tasques que s'afegeixen a través de la miniaplicació ToDosit IFTTT. De moment hauríeu d’introduir manualment un conjunt de tasques i utilitzar el botó A per recórrer-les. A més, m'hauria agradat haver codificat el temporitzador per comptar en minuts i aturar-se en canviar a la següent tasca. Un enorme agraïment a Becky Stern per la creació del codi base per al temporitzador i per realitzar tasques. Si esteu interessats en connectar el projecte a Internet, us recomanaria que passeu per aquest conjunt de classes.
// Codi de mostra de classe d’Internet de les coses instructables // Circuit Mostra dades d’Internet // Les dades meteorològiques es recopilen en un feed // NeoPixels múltiples visualitzen les condicions meteorològiques // // Modificat per Becky Stern 2017 // basat en l’exemple de subscripció Adafruit IO
// Adafruit inverteix temps i recursos proporcionant aquest codi de codi obert.
// Suporteu Adafruit i el maquinari de codi obert comprant // productes d'Adafruit. // // Escrit per Todd Treece per a Adafruit Industries // Copyright (c) 2016 Adafruit Industries // Llicenciat sota la llicència MIT. // // Tot el text anterior s’ha d’incloure a qualsevol redistribució.
/ ************************ Configuració d'Adafruit IO ********************** *********
/ visiteu io.adafruit.com si necessiteu crear un compte, // o si necessiteu la vostra clau d'Adafruit IO. #define IO_USERNAME "YourUsernameHere" #define IO_KEY "YourIOKeyHere"
/ ******************************** Configuració WIFI *************** *********************** /
#define WIFI_SSID "WifiName"
#define WIFI_PASS "Contrasenya Wifi"
#include "AdafruitIO_WiFi.h"
AdafruitIO_WiFi io (IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
/ ************************ El programa principal comença aquí ********************* ********** /
#include #include #include #include
#incloure
#include #include #include
#define OLED_RESET 3
Pantalla Adafruit_SSD1306 (128, 32, & Wire, OLED_RESET);
// aquesta constant no canviarà:
const int buttonPinA = 0; // els pins als quals estan connectats els botons de pulsació const int ButtonPinB = 16; // aquest ja té una resistència pullup, els altres dos necessiten un const int buttonPinC = 2;
// Les variables canviaran:
int buttonAPushCounter = 0; // comptador del nombre de pulsacions de botó int buttonAState = 0; // estat actual del botó int lastButtonAState = 0; // estat anterior del botó
// Les variables canviaran:
int buttonBPushCounter = 0; // comptador del nombre de botons que es pressiona int buttonBState = 0; // estat actual del botó int lastButtonBState = 0; // estat anterior del botó
// Les variables canviaran:
int buttonCPushCounter = 0; // comptador del nombre de botons que es premen int buttonCState = 0; // estat actual del botó int lastButtonCState = 0; // estat anterior del botó
String displayForecast = "desconegut";
int timerVal = 0;
unsigned long lastStartTime = 0; bool timerEnabled = 0;
AdafruitIO_Feed * precipitation = io.feed ("precipitació"); // configureu el feed de "precipitació"
// AdafruitIO_Feed * taskmanager = io.feed ("taskmanager"); // configureu el feed 'taskmanager'
configuració nul·la () {
pinMode (buttonPinA, INPUT); pinMode (buttonPinB, INPUT_PULLUP); pinMode (buttonPinC, INPUT);
// SSD1306_SWITCHCAPVCC = genera una tensió de visualització des de 3,3V internament
display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Adreça 0x3C per a 128x32
// Mostra el contingut inicial del búfer de visualització a la pantalla -
// la biblioteca inicialitza això amb una pantalla de presentació d'Adafruit. display.display (); endarreriment (2000); // Pausa durant 2 segons
// Esborreu la memòria intermèdia.
display.clearDisplay ();
// iniciar la connexió en sèrie
Serial.begin (115200);
// connecteu-vos a io.adafruit.com
Serial.print ("Connexió a Adafruit IO"); io.connect (); // configureu un gestor de missatges per al feed de "precipitacions". // la funció handleMessage (definida a continuació) // es cridarà sempre que // es rebi un missatge de adafruit io. precipitació-> onMessage (handleMessage);
// espera una connexió
while (io.status () <AIO_CONNECTED) {Serial.print ("."); retard (500); }
// estem connectats
Serial.println (); Serial.println (io.statusText ());
}
bucle buit () {
// io.run (); és obligatori per a tots els esbossos.
// sempre ha d'estar present a la part superior del vostre bucle // funció. manté el client connectat a // io.adafruit.com i processa les dades entrants. io.run ();
// llegiu el pin d'entrada del botó:
buttonAState = digitalRead (buttonPinA); buttonBState = digitalRead (buttonPinB); buttonCState = digitalRead (buttonPinC);
// compareu el botóEstat amb el seu estat anterior
if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// si l'estat ha canviat, incrementeu el comptador si (buttonAState == BAIX) {// si l'estat actual és BAIX, llavors el botó s'ha premut el botóAPushCounter ++; Serial.print ("nombre de botons A premuts:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// si l'estat actual és BAIX, es va prémer el botó buttonBPushCounter ++; Serial.print ("nombre de pulsacions del botó B:"); Serial.println (buttonBPushCounter); Serial.println ("Temporitzador d'inici"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// si l'estat actual és BAIX, es va prémer el botó buttonCPushCounter ++; Serial.print ("nombre de pulsacions del botó C:"); Serial.println (buttonCPushCounter); Serial.println ("Temporitzador d'aturada"); timerEnabled = 0; }} if (timerEnabled == 1) {// incrementeu el temporitzador només quan s'hagi iniciat timerVal = (millis () - lastStartTime) / 1000; }
// mostra la posició 1 - predicció
// if (buttonAPushCounter% 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (BLANC); // display.setCursor (0, 0); // display.print ("Previsió:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("segona línia"); // display.println ("contingut d'exemple"); // display.display (); // // demora (2000); //}
// mostra la posició 1 - Tasca 1
if (buttonAPushCounter% 3 == 0) {display.setTextSize (1); display.setTextColor (BLANC); display.clearDisplay (); display.setCursor (0, 0); display.println ("Recerca - Entrevistes"); display.println (); display.print ("Temporitzador:"); display.println (timerVal); display.display (); }
// mostra la posició 2 - Tasca 2
if (buttonAPushCounter% 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Making Studio - Code"); display.println (); display.print ("Temporitzador:"); display.println (timerVal); display.display (); }
// mostra la posició 3 - Tasca 3
if (buttonAPushCounter% 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Esbós"); display.println (); display.print ("Temporitzador:"); display.println (timerVal); display.display (); }
// deseu l'estat actual com a últim estat, // per a la propera vegada a través del bucle lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = botóCState;
}
// aquesta funció es diu sempre que es fa un missatge
// es rep d'Adafruit IO. es va adjuntar a // el feed de la funció setup () anterior. void handleMessage (dades AdafruitIO_Data *) {
Previsió de cadena = data-> toString (); // emmagatzema les dades meteorològiques entrants en una cadena
Serial.print ("rebut <-"); Serial.println (previsió); displayForecast = previsió; // les següents cadenes emmagatzemen les diverses paraules de l'informe meteorològic IFTTT que he descobert fins ara String task1 = String ("Tasca 1"); String rain = String ("Pluja"); String lightrain = String ("Pluja lleugera"); String rainshower = String ("Dutxa de pluja"); String AMshowers = String ("Dutxes AM"); String rainandsnow = String ("Pluja i neu"); String snow = String ("Neu"); String snowshower = String ("Dutxa de neu"); String cloudy = Cadena ("Ennuvolat"); String mostlycloudy = String ("Majoritàriament ennuvolat"); String partialcloudy = Cadena ("Parcialment ennuvolat"); String clearsky = String ("Esborra"); String fair = String ("Just"); String sunny = String ("Assolellat");
// Aquestes declaracions if comparen la variable meteorològica entrant amb les condicions emmagatzemades i controlen els NeoPixels en conseqüència.
// si hi ha pluja a la previsió if (forecast.equalsIgnoreCase (pluja) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (rainshower) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("precipitació a la previsió d'avui ");
}
// si hi ha neu a la previsió if (forecast.equalsIgnoreCase (neu) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (nevada)) {Serial.println ("precipitació a la previsió d'avui");
}
// si hi ha sol a la previsió if (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (just) || forecast.equalsIgnoreCase (assolellat)) {Serial.println ("algun tipus de sol a la previsió d'avui");
}
// si hi ha núvols a la previsió if (forecast.equalsIgnoreCase (ennuvolat) || forecast.equalsIgnoreCase (majoritàriament nuvolós) || forecast.equalsIgnoreCase (partialcloudy)) {Serial.println ("cel ennuvolat a la previsió d'avui");
}
}
Pas 3: creeu el contenidor / shell
Per a l'intèrpret d'ordres, comenceu per determinar quina mida voleu que tingui el vostre marc, o bé podeu descarregar el meu fitxer. Un cop hàgiu determinat la mida, podeu utilitzar MakerCase per crear el disseny del fitxer vectorial.
Executeu el fitxer a través del tallador làser: haurien de trigar uns 5 minuts. A continuació, ajunteu la closca.
No vaig tenir en compte l’amplada del material, cosa que fa que sigui difícil arribar als meus botons. Encara he de trobar la manera d’adjuntar-los. També són molt petites, cosa que els fa difícil treballar.
Recomanat:
Seguiment i seguiment de botigues petites: 9 passos (amb imatges)
Track & trace per a botigues petites: es tracta d’un sistema dissenyat per a petites botigues que se suposa que es munta en bicicletes elèctriques o patinets electrònics per a lliuraments a curt abast, per exemple, una fleca que vulgui lliurar pastes. Què significa Track and Trace? Track and trace és un sistema utilitzat per ca
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment fotosensible del cotxe: 7 passos
Kits de cotxes de seguiment de robots intel·ligents de bricolatge Seguiment del cotxe fotosensible: dissenyat per SINONING ROBOT Podeu comprar amb el robot de seguiment El xip LM393 compara els dos fotoresistors, quan hi ha un LED de fotoresistència lateral en BLANC, el costat del motor s'aturarà immediatament, l'altre costat del motor girar, de manera que
Gestor de tasques: un sistema de gestió de tasques domèstiques: 5 passos (amb imatges)
Gestor de tasques: un sistema de gestió de les tasques de la llar: volia intentar abordar un problema real a què s’enfronta la nostra llar (i, imagino, el de molts altres lectors), que és com assignar, motivar i premiar els meus fills per ajudar-los amb les feines domèstiques. Fins ara hem conservat un full laminat
Màquina senzilla de tasques fàcils: 4 passos (amb imatges)
Màquina senzilla de tasques fàcils: aquesta màquina està fabricada amb materials econòmics i no creua 7 $ per construir-la. Per construir això, necessiteu una mica de paciència i dues hores de temps. I heu de familiaritzar-vos amb la soldadura i el cablejat, ja que es tracta d’un circuit petit. Un cop construït, només cal connectar-lo
Sistema de seguiment de bicicletes amb alerta de Dead Man amb Sigfox: 7 passos (amb imatges)
Sistema de seguiment de bicicletes amb alerta Dead Man amb Sigfox: sistema de seguretat per a ciclistes amb funcions d’alerta de seguiment i enviament. En cas d’accident s’envia una alarma amb la posició GPS. És imprescindible la seguretat per als ciclistes, amb accidents de bicicleta de carretera o de muntanya i el més aviat possible