Агуулгын хүснэгт:

TOYL даалгавар дагагч: 3 алхам (зурагтай)
TOYL даалгавар дагагч: 3 алхам (зурагтай)

Видео: TOYL даалгавар дагагч: 3 алхам (зурагтай)

Видео: TOYL даалгавар дагагч: 3 алхам (зурагтай)
Видео: Bi hen be? (Jackie Chan) Mongol heleer 2024, Долдугаар сарын
Anonim
Image
Image
TOYL даалгавар дагагч
TOYL даалгавар дагагч
TOYL даалгавар дагагч
TOYL даалгавар дагагч

Та ажил хийхээр төлөвлөж байгаа эсвэл үүнээс дордохыг үзэн яддаг уу, ажлын хуралдааны дунд байгаа бөгөөд таны утсанд мэдэгдэл ирдэг бөгөөд хэдэн цагийн дараа "хурдан шалгах" болно. Түүнчлэн, та долоо хоногт ажилд хуваарилсан хугацаатай харьцуулахад тодорхой ажлуудад хэр их цаг зарцуулдаг болохыг та мэдэх үү?

TOYL Task Tracker -ийг оруулна уу. Энэ нь утсаа унтрааж, ажил дээрээ анхаарлаа төвлөрүүлэх боломжийг танд олгож, долоо хоногт 60 цаг ажиллахыг хүсч буй ажлаа тохируулах боломжийг танд олгоно. Та хуралдаанд сууж байхдаа ерөнхий ажилдаа хичнээн их цаг үлдсэнийг олж мэдэх болно. Tracker нь хоёр горимтой: таймер, та долоо хоногт нэг ажилд хэр их цаг зарцуулахыг хүсч байгаагаа урьдчилан тогтоодог, мөн Секундомер, та даалгаврыг сонгосны дараа таймерыг эхлүүлж болно.

Хангамж

Хэлхээ

  • Адафрут өд Хузза
  • Adafruit FeatherWing
  • Эрэгтэй толгойн зүү
  • Эмэгтэй толгойн зүү
  • 500 мАч батерей
  • 100K ом эсэргүүцэл x2
  • Тусгаарлагч тууз
  • Цахилгаан утас
  • Утас хуулагч
  • Гагнуурын сэнс

Суултын яндан

  • Тунгалаг нийлэг хуудас 24 "x18"
  • Хоёр талт соронзон хальс
  • Лазер таслагч руу нэвтрэх
  • Вектор програм хангамж

Алхам 1: Цахилгаан хэлхээг гагнах

Таны тойргийг гагнах
Таны тойргийг гагнах
Таны тойргийг гагнах
Таны тойргийг гагнах
Таны тойргийг гагнах
Таны тойргийг гагнах

Эмэгтэй толгойн толгойг Од Хузза руу гагнана. Энэхүү заавар нь Feather Huzzah тоног төхөөрөмжийн тохиргоонд хэрэгтэй болно. Дараа нь эрэгтэй толгойн зүүг FeatherWing руу гагнана. Ийм байдлаар гагнах нь шаардлагатай бол өд жигүүрийг өд хуззагаас салгаж, салгах боломжийг олгодог. Энэ нь таны FeatherWing -д резистор нэмэх шаардлагатай үед нэн тохиромжтой бөгөөд энэ нь дараагийн алхам юм. 3V -т холбогдсон 0 ба 2 -р зүү бүрээс 100K ом эсэргүүцэл холбоно.

Feather Huzzah тоног төхөөрөмжийг тохируулна уу

Feather Wing тоног төхөөрөмжийг тохируулна уу

Алхам 2: Кодоо нэмнэ үү

Кодоо нэмнэ үү
Кодоо нэмнэ үү
Кодоо нэмнэ үү
Кодоо нэмнэ үү

Энэ код нь 5 -р хичээлийн Интернетийн зүйлийн кодын дасан зохицол юм, Цаг хугацаа нь зөвшөөрөгдсөн тул би PreDepitaton үйлчилгээг ToDosit IFTTT апплет ашиглан нэмж оруулсан ажлуудыг хянадаг үйлчилгээгээр солихыг хүсч байна. Одоогийн байдлаар та олон тооны даалгавруудыг гараар оруулж, А товчлуурыг ашиглан гүйлгэж болно. Нэмж дурдахад, би даалгавраа хэдэн минутын дотор тоолж, дараагийн даалгаварт шилжихдээ зогсоохыг кодлохыг хүсч байна. Таймерын үндсэн кодыг үүсгэж, ажлуудаа дугуйгаар гүйцэтгэсэн Бекки Стернд маш их баярлалаа. Хэрэв та төслийг интернетэд холбохыг сонирхож байгаа бол энэ багц хичээлийг үзэхийг зөвлөж байна.

// Зааварчилж болох зүйлсийн интернетийн ангийн жишээ код // Цахилгаан хэлхээг интернетийн өгөгдлийг харуулдаг // Цаг агаарын мэдээллийг тэжээлд цуглуулдаг // Олон тооны NeoPixels нь цаг агаарын байдлыг дүрсэлдэг // // Бекки Стерн 2017 -ийн өөрчилсөн // Adafruit IO захиалгын жишээ дээр үндэслэсэн болно.

// Adafruit нь энэхүү нээлттэй эх кодыг өгөхөд цаг хугацаа, нөөцөө зарцуулдаг.

// Adafruit -аас // бүтээгдэхүүн худалдаж авах замаар Adafruit болон нээлттэй эхийн техник хангамжийг дэмжинэ үү! // // Adafruit Industries -д зориулж бичсэн Тодд Триц // Зохиогчийн эрх (c) 2016 Adafruit Industries // MIT лицензийн дагуу лицензтэй. // // Дээрх бүх текстийг дахин хуваарилалтад оруулах ёстой.

/************************ Adafruit IO -ийн тохиргоо ********************** *********

/ акаунт үүсгэх шаардлагатай бол io.adafruit.com хаягаар зочилно уу.

// эсвэл танд Adafruit IO түлхүүр хэрэгтэй бол. IO_USERNAME "YourUsername Here" -ийг #тодорхойлох, IO_KEY "YourIOKeyHere" -ийг тодорхойлох

/******************************* WIFI тохиргоо **************** **********************/

#WIFI_SSID "WifiName" -ийг тодорхойлох

#WIFI_PASS "WifiPassword" -ыг тодорхойлох

#"AdafruitIO_WiFi.h" -ийг оруулаарай.

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

/************************ Үндсэн хөтөлбөр эндээс эхэлдэг ********************* **********/

#оруулах #оруулах #оруулах #оруулах

#оруулах

#оруулах #оруулах #оруулах

#OLED_RESET -ийг тодорхойлох

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;

гарын үсэг зураагүй 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); // 128x32 хэмжээтэй 0x3C хаяг

// Дэлгэц дээрх анхны буферын агуулгыг харуулах -

// номын сан үүнийг Adafruit дэлгэцээр эхлүүлдэг. display.display (); саатал (2000); // 2 секундын турш түр зогсоо

// Буферийг цэвэрлэ.

display.clearDisplay ();

// цуваа холболтыг эхлүүлэх

Цуваа.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);

//State товчийг өмнөх төлөвтэй нь харьцуулж үзээрэй

if (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// хэрэв байдал өөрчлөгдсөн бол, (buttonAState == LOW) {// хэрэв одоогийн төлөв LOW байвал товчлуурыг нэмэгдүүлнэ. APushCounter ++ товчлуур дээр дарагдсан; Serial.print ("А товчлуурын тоо дарна:"); Serial.println (buttonAPushCounter); } if (buttonBState == LOW) {// хэрэв одоогийн төлөв LOW байвал товчлуурыг дарсан байсанBPushCounter ++; Serial.print ("B товчлуурын тоо дарна:"); Serial.println (buttonBPushCounter); Serial.println ("Эхлэх таймер"); timerEnabled = 1; lastStartTime = millis (); } if (buttonCState == LOW) {// хэрэв одоогийн байдал LOW байвал товчлуурыг дарсан байсан buttonCushCounter ++; 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 ("жишээ агуулга"); // дэлгэцийн дэлгэц (); // // саатал (2000); //}

// дэлгэцийн байрлал 1 - Даалгавар 1

if (buttonAPushCounter % 3 == 0) {display.setTextSize (1); display.setTextColor (ЦАГААН); display.clearDisplay (); display.setCursor (0, 0); display.println ("Судалгаа - Ярилцлага"); дэлгэц.println (); display.print ("Таймер:"); display.println (timerVal); display.display (); }

// дэлгэцийн байрлал 2 - Даалгавар 2

if (buttonAPushCounter % 3 == 1) {display.clearDisplay (); display.setCursor (0, 0); display.println ("Студи хийх - Код хийх"); дэлгэц.println (); display.print ("Таймер:"); display.println (timerVal); display.display (); }

// дэлгэцийн байрлал 3 - Даалгавар 3

if (buttonAPushCounter % 3 == 2) {display.clearDisplay (); display.setCursor (0, 0); display.println ("DSV - Ноорог"); дэлгэц.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 ("Даалгавар 1"); String бороо = String ("Бороо"); String lightrain = String ("Хөнгөн бороо"); String rainshower = String ("Борооны шүршүүр"); String AMshowers = String ("AM душ"); String rainandsnow = String ("Бороо ба цас"); String цас = String ("Цас"); String цасан шуурга = String ("Цасан шүршүүр"); Үүлэрхэг = String ("Үүлэрхэг"); String ихэвчлэнcloudy = String ("Ихэнх нутгаар үүлэрхэг"); String partlycloudy = String ("Багавтар үүлтэй"); String clearsky = String ("Цэвэрлэх"); String fair = String ("Шударга"); String sunny = String ("Нартай");

// Эдгээр мэдэгдлүүд ирж буй цаг агаарын хувьсагчийг хадгалагдсан нөхцөлтэй харьцуулж, NeoPixels -ийг зохих ёсоор хянадаг.

// хэрэв урьдчилсан мэдээнд бороо орсон бол өнөөдрийн урьдчилсан мэдээ );

}

// хэрэв урьдчилсан мэдээнд цас орсон бол if (урьдчилсан тооцоо.дүгнэгийг үл тоомсорлох (цас) || таамаглал

}

// хэрэв урьдчилсан мэдээнд нар байгаа бол if (урьдчилсан тооцоо. EqualsIgnoreCase (clearsky) || прогноз.equalsIgnoreCase (шударга) || урьдчилсан таамаглал.equalsIgnoreCase (нарлаг)) {Serial.println ("өнөөдөр цаг агаарын урьдчилсан мэдээнд зарим төрлийн нар");

}

// хэрэв урьдчилсан мэдээнд үүл байгаа бол if (урьдчилсан тооцоо.дүгнэгийг үл тооно)

}

}

Алхам 3: Контейнер / бүрхүүл үүсгэнэ үү

Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү
Контейнер / бүрхүүл үүсгэнэ үү

Бүрхүүлийн хувьд та өөрийн фрэйм ямар хэмжээтэй байхыг хүсч байгаагаа тодорхойлж эхэл, эс бөгөөс та миний файлыг татаж авч болно. Хэмжээгээ тодорхойлсны дараа MakerCase -ийг ашиглан вектор файлын байршлыг үүсгэж болно.

Файлыг лазер таслагчаар ажиллуулаарай - ойролцоогоор 5 минут болно. Үүний дараа бүрхүүлийг хамтад нь тавь.

Би товчлууруудаа хүрэхэд хэцүү болгодог материалын өргөнийг тооцоогүй. Би тэдгээрийг хавсаргах арга замыг олох хэрэгтэй хэвээр байна. Тэд бас маш жижиг хэмжээтэй тул ажиллахад хэцүү болгодог.

Зөвлөмж болгож буй: