Мазмуну:

TOYL Task Tracker: 3 кадам (Сүрөттөр менен)
TOYL Task Tracker: 3 кадам (Сүрөттөр менен)

Video: TOYL Task Tracker: 3 кадам (Сүрөттөр менен)

Video: TOYL Task Tracker: 3 кадам (Сүрөттөр менен)
Video: Жазира Байырбекова - Тұсау кесер 2024, Июль
Anonim
Image
Image
TOYL тапшырма трекери
TOYL тапшырма трекери
TOYL тапшырма трекери
TOYL тапшырма трекери

Сиз иштөөнү пландап жатканыңызда, аны жек көрбөйсүзбү, же жумуш сессиясынын ортосунда турасыз жана телефонуңузга билдирүү келет-бир нече сааттан кийин "тез текшерүү" болуп калат. Ошондой эле, сиз жумасына жумушка бөлгөн убактыңызга салыштырмалуу кээ бир тапшырмалар боюнча канча убакыт иштээриңизди билесизби?

TOYL тапшырма трекерине кириңиз. Бул сизге телефонуңузду өчүрүп, жумушка көңүл бурууга мүмкүнчүлүк берет, ошол эле учурда жумасына 60 саат иштөөнү каалаган убактыңызды жана аткаргыңыз келген тапшырмаларды коюуга мүмкүнчүлүк берет. Сиз сессияга отурганда, жалпы ишиңизге канча убакыт калганын билесиз. Трекердин эки режими бар: Таймер, бул жерде сиз бир жумага канча убакыт сарптоону каалайсыз жана Секундомер, сиз тапшырманы тандап алгандан кийин таймерди баштайсыз.

Жабдуулар

Circuit

  • Adafruit Feather Huzzah
  • Adafruit FeatherWing
  • Эркектин башына төөнөгүчтөр
  • Аялдын башына төөнөгүчтөр
  • 500 мАч батарея
  • 100K Ом резисторлору x2
  • Изоляциялоочу тасма
  • Таралган зым
  • Сым тазалагычтар
  • Solder Fan

Корпус

  • Тунук эмес акрил барак 24 "x18"
  • Эки тараптуу скотч
  • Лазердик кескичке жетүү
  • Вектордук программа

1 -кадам: Сиздин микросхемаңызды ширетүү

Сиздин Circuit Solder
Сиздин Circuit Solder
Сиздин Circuit Solder
Сиздин Circuit Solder
Сиздин Circuit Solder
Сиздин Circuit Solder

Ургаачы ургаачы мамы мамык Хуззага кадайт. Бул окуу куралы Feather Huzzah аппараттык орнотуулары үчүн пайдалуу. Андан кийин, эркек башын FeatherWingге сайыңыз. Аларды ушундай жол менен ширетүү, керек болгондо, мамык канатын мамык хуззадан ажыратууга жана ажыратууга мүмкүндүк берет. Бул FeatherWingге резисторлорду кошуу керек болгондо өзгөчө ыңгайлуу болот, бул кийинки кадам. 3Vга туташкан 0 жана 2 пиндин ар биринен 100K ом резисторлорун туташтырыңыз.

Feather Huzzah аппараттык жабдууларын орнотуңуз

Feather Wing жабдыктарын орнотуңуз

2 -кадам: Кодуңузду кошуңуз

Кодуңузду кошуңуз
Кодуңузду кошуңуз
Кодуңузду кошуңуз
Кодуңузду кошуңуз

Бул код Интернеттин 5 -сабагынын кодунун адаптациясы, Убакыт болсо, мен Preceptitaton кызматын ToDosit IFTTT апплети аркылуу кошулган тапшырмаларды көзөмөлдөгөнгө алмаштыргым келет. Учурда сиз кол менен тапшырмалардын топтомун киргизип, аларды басуу үчүн А баскычын колдонушуңуз керек болот. Мындан тышкары, мен таймерди бир нече мүнөттө санап, кийинки тапшырманы аткарууда токтоп калгым келет. Бекки Стернге таймер үчүн базалык кодду түзүп, тапшырмаларды аткаруу үчүн чоң рахмат. Эгерде сиз долбоорду интернетке туташтырууну кааласаңыз, анда мен бул класстардан өтүүнү сунуштаар элем.

// Instructables Интернет нерселер классынын үлгү коду // Circuit Интернет маалыматтарын көрсөтөт // Аба ырайы маалыматтары түрмөктө чогултулат // Бир нече NeoPixels аба ырайынын абалын элестетет // // Becky Stern 2017 тарабынан өзгөртүлгөн // Adafruit IO жазылуу мисалынын негизинде

// Adafruit бул ачык кодду берүү менен убакытты жана ресурстарды жумшайт.

// Adafruitтен // өнүмдөрдү сатып алуу менен Adafruit жана ачык булак жабдууларын колдоого алыңыз! // // Adafruit Industries үчүн Todd Treece тарабынан жазылган // Автордук укук (c) 2016 Adafruit Industries // MIT лицензиясынын астында лицензияланган. // // Жогорудагы бардык тексттер кайра бөлүштүрүүгө киргизилиши керек.

/************************ Adafruit IO конфигурациясы ********************** *********

/ каттоо эсебин түзүү керек болсо, io.adafruit.com сайтына баш багыңыз, // же сизге Adafruit IO ачкычы керек болсо. #аныктоо IO_USERNAME "Сиздин колдонуучу атыңыз бул жерде"

/******************************* WIFI конфигурациясы **************** **********************/

#define WIFI_SSID "WifiName"

#аныктоо WIFI_PASS "WifiPassword"

#"AdafruitIO_WiFi.h" кошуу

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

/************************ Негизги программа ушул жерден башталат ********************* **********/

#кошуу #кошуу #кошуу #кошуу

#кошуу

#кошуу #кошуу #кошуу

#аныктоо OLED_RESET 3

Adafruit_SSD1306 дисплейи (128, 32, & Wire, OLED_RESET);

// бул константа өзгөрбөйт:

const int buttonPinA = 0; // баскычтар const int buttonPinB = 16га бекитилген пиндер; // бул мурунтан эле тартылуу каршылыгына ээ, калган экөөнө бир const int buttonPinC = 2 керек;

// Өзгөрмөлөр өзгөрөт:

int buttonAPushCounter = 0; // баскычтардын басуу саны үчүн эсептегич int buttonAState = 0; // баскычтын учурдагы абалы int lastButtonAState = 0; // баскычтын мурунку абалы

// Өзгөрмөлөр өзгөрөт:

int buttonBPushCounter = 0; // баскычтын басуу саны үчүн эсептегич int buttonBState = 0; // баскычтын учурдагы абалы int lastButtonBState = 0; // баскычтын мурунку абалы

// Өзгөрмөлөр өзгөрөт:

int buttonCPushCounter = 0; // баскычтын басуу саны үчүн эсептегич int buttonCState = 0; // баскычтын учурдагы абалы int lastButtonCState = 0; // баскычтын мурунку абалы

String displayForecast = "белгисиз";

int timerVal = 0;

unsigned long lastStartTime = 0; bool timerEnabled = 0;

AdafruitIO_Feed *жаан -чачын = io.feed ("жаан -чачын"); // "жаан -чачын" түрмөгүн орнотуңуз

// AdafruitIO_Feed *taskmanager = io.feed ("taskmanager"); // 'taskmanager' түрмөгүн орнотуңуз

жараксыз орнотуу () {

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

// SSD1306_SWITCHCAPVCC = дисплейдин чыңалуусун 3.3Вдан ички абалга келтирүү

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // 0x3C дареги 128x32 үчүн

// Экранда баштапкы дисплей буферинин мазмунун көрсөтүү -

// китепкана муну Adafruit экраны менен баштайт. display.display (); кечигүү (2000); // 2 секундга тыныгуу

// Буферди тазалаңыз.

display.clearDisplay ();

// сериялык туташууну баштаңыз

Serial.begin (115200);

// io.adafruit.com менен туташуу

Serial.print ("Adafruit IOго туташуу"); io.connect (); // "жаан -чачын" түрмөгү үчүн билдирүү иштеткичти орнотуңуз. // handleMessage функциясы (төмөндө аныкталган) // adafruit ioдон келген // билдирүү келген сайын чакырылат. жаан-чачын-> onMessage (handleMessage);

// байланышты күтө туруңуз

while (io.status () <AIO_CONNECTED) {Serial.print ("."); кечигүү (500); }

// Биз байланыштабыз

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

}

void loop () {

// io.run (); бардык эскиздер үчүн талап кылынат.

// ал ар дайым сиздин цикл // функциясынын башында болушу керек. ал кардарды // io.adafruit.com менен байланыштырып турат жана келген маалыматтарды иштетет. io.run ();

// баскычтын кирүү пинин окуңуз:

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

// мамлекетти баскычын мурунку абалына салыштырыңыз

if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// эгер абал өзгөрсө, эгерде эсептегичти көбөйтүңүз (buttonAState == LOW) {// эгер учурдагы абал ТӨМ болсо, анда баскыч buttonAPushCounter ++ басылды; Serial.print ("А баскычынын саны басылат:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// эгерде азыркы абал LOW болсо, анда баскыч басылган buttonBPushCounter ++; Serial.print ("B баскычынын саны басылат:"); Serial.println (buttonBPushCounter); Serial.println ("Таймерди баштоо"); timerEnabled = 1; lastStartTime = миллис (); } if (buttonCState == LOW) {// эгерде азыркы абал LOW болсо, анда баскыч басылган buttonCPushCounter ++; Serial.print ("C баскычынын саны басылат:"); Serial.println (buttonCPushCounter); Serial.println ("Таймерди токтотуу"); timerEnabled = 0; }} if (timerEnabled == 1) {// таймерди баштаганда гана көбөйтөт timerVal = (millis () - lastStartTime)/1000; }

// дисплей позициясы 1 - прогноз

// if (buttonAPushCounter % 3 == 0) {// display.clearDisplay (); // display.setTextSize (1); // display.setTextColor (АК); // display.setCursor (0, 0); // display.print ("Болжолдоо:"); // display.println (displayForecast); // display.setCursor (0, 16); // display.println ("экинчи сап"); // display.println ("мисал мазмуну"); // display.display (); // // кечиктирүү (2000); //}

// позицияны көрсөтүү 1 - тапшырма 1

if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (АК); display.clearDisplay (); display.setCursor (0, 0); display.println ("Изилдөө - Интервьюлар"); display.println (); display.print ("Таймер:"); display.println (timerVal); display.display (); }

// позицияны көрсөтүү 2 - тапшырма 2

if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Making Studio - Code"); display.println (); display.print ("Таймер:"); display.println (timerVal); display.display (); }

// дисплейдин позициясы 3 - 3 -тапшырма

if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Эскиз"); display.println (); display.print ("Таймер:"); display.println (timerVal); display.display (); }

// учурдагы абалды акыркы абал катары сактоо, // кийинки жолу цикл аркылуу lastButtonAState = buttonAState; lastButtonBState = buttonBState; lastButtonCState = buttonCState;

}

// бул функция кабар келгенде чакырылат

// Adafruit IOдон алынган. ал жогорудагы setup () функциясындагы // түрмөккө тиркелген. Void handleMessage (AdafruitIO_Data *маалыматы) {

String божомолу = data-> toString (); // келген аба ырайы маалыматтарын сапта сактаңыз

Serial.print ("алынды <-"); Serial.println (прогноз); displayForecast = божомол; // төмөнкү саптар мен буга чейин тапкан IFTTT аба ырайынын отчетторунун ар кандай сөздөрүн сактайт String task1 = String ("Task 1"); Стринг жамгыры = Стринг ("Жамгыр"); String lightrain = Стринг ("Жеңил жамгыр"); String rainshower = Стринг ("Rain Shower"); String AMshowers = String ("AM душтары"); String rainandsnow = Стринг ("Жамгыр жана кар"); String snow = Сап ("Snow"); String snowshower = Стринг ("Snow Shower"); String cloudy = String ("Булуттуу"); String asosancloudy = String ("Көбүнчө булуттуу"); String partlycloudy = String ("Жарым -жартылай булуттуу"); String clearsky = String ("Тазалоо"); String fair = String ("Жарманке"); String sunny = String ("Sunny");

// Булар эгерде билдирүүлөр келген аба ырайынын өзгөрмөсүн сакталган шарттарга салыштырып, ошого жараша NeoPixelsти көзөмөлдөйт.

// эгерде прогноздо жамгыр болсо if (прогноз.эквальИнгорсэйз (жамгыр) || божомол.эксүйөлөргө көңүл бурбоо | бүгүн божомол );

}

// эгерде божомолдо кар бар болсо if (божомол.эквальИгнореКаз (кар) || божомол.эксүйөлөргө караба (жамгыр жана кар) || божомол.эксүйөлөргө көңүл бурбоо (кар жаашы)) {Serial.println ("жаан -чачын бүгүн божомолдо");

}

// эгерде божомолдо күн бар болсо if (божомол.эквальИгнореаз (клесарский) || прогноз.эксиздерЭткизбеңиз (адилет) || божомол.эксүйөлөргө көңүл бурбоо (күнөстүү)) {Serial.println ("бүгүн божомолдо кандайдыр бир күн");

}

// эгерде болжолдо булуттар бар болсо if (prognoz.equalsIgnoreCase (булуттуу) || прогноз.equalsIgnoreCase (көбүнчө булуттуу) || прогноз.equalsIgnoreCase (partlycloudy)) {Serial.println ("бүгүн болжолдуу булуттуу асман");

}

}

3 -кадам: Контейнерди / кабыкты түзүңүз

Контейнерди / кабыкты түзүү
Контейнерди / кабыкты түзүү
Контейнерди / кабыкты түзүңүз
Контейнерди / кабыкты түзүңүз
Контейнерди / кабыкты түзүү
Контейнерди / кабыкты түзүү
Контейнерди / кабыкты түзүү
Контейнерди / кабыкты түзүү

Кабык үчүн, кадрыңыздын кандай өлчөмдө болушун каалаарыңызды аныктоо менен баштаңыз, же менин файлымды жүктөп алсаңыз болот. Өлчөмдү аныктагандан кийин, вектордук файлдын макетин түзүү үчүн MakerCase колдоно аласыз.

Файлды лазер кескич аркылуу иштетиңиз - болжол менен 5 мүнөткө созулушу керек. Андан кийин кабыкты бириктиргиле.

Мен баскычтарыма жетүүнү кыйындаткан материалдын туурасын эсепке алган жокмун. Мен дагы аларды тиркөөнүн жолун табышым керек. Алар абдан кичинекей болгондуктан, алар менен иштөөнү кыйындатат.

Сунушталууда: