תוכן עניינים:

מעקב אחר משימות TOYL: 3 שלבים (עם תמונות)
מעקב אחר משימות TOYL: 3 שלבים (עם תמונות)

וִידֵאוֹ: מעקב אחר משימות TOYL: 3 שלבים (עם תמונות)

וִידֵאוֹ: מעקב אחר משימות TOYL: 3 שלבים (עם תמונות)
וִידֵאוֹ: אתגר הגלידות - אלאור חטף לנו הכל ! 2024, יולי
Anonim
Image
Image
מעקב אחר משימות של TOYL
מעקב אחר משימות של TOYL
מעקב אחר משימות של TOYL
מעקב אחר משימות של TOYL

האם אתה פשוט שונא את זה כשאתה מתכנן לעבוד או גרוע מכך, אתה נמצא באמצע פגישת עבודה והודעה מגיעה לטלפון שלך-"בדיקה מהירה" הופכת לשעות מאוחר יותר. כמו כן, האם אתה יודע כמה זמן אתה עובד על משימות מסוימות ביחס לזמן שהקצאת לעבודה בשבוע?

הזן את מעקב המשימות של TOYL. זה מאפשר לך לכבות את הטלפון שלך ולהתמקד בעבודה, ובמקביל מאפשר לך להגדיר את משך הזמן שתרצה לעבוד בשבוע-למשל 60 שעות-ואת המשימות שתרצה לבצע. כאשר אתה יושב לפגישה, אתה מקבל מושג כמה זמן נותר לך לעבודה הכוללת שלך. לגשש יש שני מצבים: טיימר, שבו הגדרת מראש כמה זמן תרצה להקדיש לכל משימה בשבוע, ושעון עצר, שבו אתה יכול פשוט להתחיל להפסיק את הטיימר לאחר בחירת משימה.

אספקה

מעגל חשמלי

  • חוזה נוצת אדפרוט
  • כנף נוצות אדפרוט
  • סיכות כותרת לזכר
  • סיכות כותרת נקבה
  • סוללת 500mAh
  • נגדי 100K אוהם x2
  • סרט בידוד
  • תיל מפותל
  • חשפניות חוטים
  • מאוורר הלחמה

מַעֲטֶפֶת

  • גיליון אקרילי אטום 24 אינץ 'x18 אינץ'
  • קלטת דו צדדית
  • גישה לחותך לייזר
  • תוכנת וקטור

שלב 1: הלחם את המעגל שלך

הלחם את המעגל שלך
הלחם את המעגל שלך
הלחם את המעגל שלך
הלחם את המעגל שלך
הלחם את המעגל שלך
הלחם את המעגל שלך

הלחם את סיכות הכותרת הנשית לחוזה הנוצות. הדרכה זו שימושית להתקנת החומרה של Feather Huzzah. לאחר מכן, הלחם את סיכות הכותרת הגברית אל FeatherWing. הלחמה באופן זה מאפשרת לך להצטרף ולהפריד בין כנף הנוצה לבין חוזה הנוצות בעת הצורך. זה שימושי במיוחד כאשר אתה צריך להוסיף נגדים ל- FeatherWing שלך, וזה השלב הבא. חבר נגדים של 100K אוהם מכל סיכה 0 ו -2, המחוברים ל- 3V.

התקן את חומרת החוזה של נוצה

התקן את חומרת כנף הנוצה שלך

שלב 2: הוסף את הקוד שלך

הוסף את הקוד שלך
הוסף את הקוד שלך
הוסף את הקוד שלך
הוסף את הקוד שלך

קוד זה הוא התאמה לקוד אינטרנט של דברים של שיעור 5, כשהזמן מאפשר זאת, הייתי רוצה להחליף את שירות ה- Preceptitaton בכזה שעוקב אחר משימות המתווספות באמצעות יישומון ToDosit IFTTT. כרגע יהיה עליך להזין סט משימות באופן ידני ולהשתמש בכפתור A כדי לעבור בהם. בנוסף, הייתי רוצה לקודד את הטיימר לספור תוך דקות ולעצור בעת המעבר למשימה הבאה. תודה ענקית לבקי שטרן על יצירת קוד בסיס לטיימר ורכיבה על משימות. אם אתה מעוניין לחבר את הפרויקט לאינטרנט, אני ממליץ בחום לעבור על מערך שיעורים זה.

// מדריכי אינטרנט של דברים קוד דוגמה למחלקה // מעגל מציג נתוני אינטרנט // נתוני מזג אוויר נאספים בפיד // מספר NeoPixels מדמיינים את מצב מזג האוויר // // שונה על ידי בקי שטרן 2017 // מבוסס על דוגמת המנוי של Adafruit IO

// Adafruit משקיעה זמן ומשאבים במתן קוד קוד פתוח זה.

// אנא תמכו ב- Adafruit ובחומרת קוד פתוח על ידי רכישת // מוצרים מ- Adafruit! // // נכתב על ידי טוד טריס לתעשיות אדפרוט // זכויות יוצרים (ג) תעשיות אדפרוט 2016 // מורשות תחת רישיון MIT. // // כל הטקסט שלמעלה חייב להיות כלול בכל הפצה מחדש.

/*********************** תצורת IO של Adafruit ********************* *********

/ בקר ב- io.adafruit.com אם אתה צריך ליצור חשבון, // או אם אתה צריך את מפתח ה- IO של Adafruit. #הגדר IO_USERNAME "שם המשתמש שלך כאן" #הגדר IO_KEY "YourIOKeyHere"

/***************************** תצורת WIFI **************** **********************/

#define WIFI_SSID "WifiName"

#define WIFI_PASS "WifiPassword"

#כלול "AdafruitIO_WiFi.h"

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

/************************ התוכנית הראשית מתחילה כאן ********************* ***********/

#include #include #include #include

#לִכלוֹל

#include #include #include

#הגדר 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"); // הגדר את פיד 'מנהל המשימות'

הגדרת בטל () {

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

// SSD1306_SWITCHCAPVCC = ליצור מתח תצוגה מ -3.3V פנימי

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);

// לחכות לחיבור

בעוד (io.status () <AIO_CONNECTED) {Serial.print ("."); עיכוב (500); }

// אנחנו מחוברים

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

}

לולאת חלל () {

// io.run (); נדרש לכל הסקיצות.

// זה תמיד צריך להיות קיים בחלק העליון של פונקציית הלולאה // שלך. הוא משאיר את הלקוח מחובר ל- // io.adafruit.com ומעבד כל מידע נכנס. io.run ();

// קרא את סיכת הכניסה ללחצן:

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

// השווה את buttonState למצבו הקודם

אם (buttonAState! = lastButtonAState || buttonBState! = lastButtonBState || buttonCState! = lastButtonCState) {// אם המצב השתנה, הגדל את המונה אם (buttonAState == LOW) {// אם המצב הנוכחי נמוך אז הלחצן נלחץ כפתור APushCounter ++; Serial.print ("מספר לחיצות כפתור A:"); Serial.println (buttonAPushCounter); } אם (buttonBState == LOW) {// אם המצב הנוכחי הוא LOW אז לחצו על הלחצן buttonBPushCounter ++; Serial.print ("מספר לחיצות כפתור B:"); Serial.println (buttonBPushCounter); Serial.println ("טיימר מתחיל"); timerEnabled = 1; lastStartTime = millis (); } אם (buttonCState == LOW) {// אם המצב הנוכחי הוא LOW אז לחצו על הלחצן buttonCPushCounter ++; Serial.print ("מספר לחיצות כפתור C:"); Serial.println (buttonCPushCounter); Serial.println ("טיימר עצירה"); timerEnabled = 0; }} אם (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. הוא צורף ל // ההזנה בפונקציית ההתקנה () למעלה. void handleMessage (נתוני AdafruitIO_Data *)

תחזית מחרוזת = data-> toString (); // אחסן את נתוני מזג האוויר הנכנסים במחרוזת

Serial.print ("התקבל <-"); Serial.println (תחזית); displayForecast = תחזית; // המחרוזות הבאות מאחסנות את מילות דו"ח מזג האוויר IFTTT השונות שגיליתי עד כה String task1 = String ("משימה 1"); גשם מחרוזת = מחרוזת ("גשם"); מחרוזת lightrain = String ("גשם קל"); מקלחת גשם מחרוזת = מחרוזת ("מקלחת גשם"); מקלחות AM מחרוזת = String ("AM מקלחות"); String rainandsnow = String ("גשם ושלג"); מחרוזת שלג = מחרוזת ("שלג"); שלג מחרוזת = String ("מקלחת שלג"); מחרוזת עכורה = מחרוזת ("מעונן"); String Mostcloudy = String ("מעונן לרוב"); String particcloudy = String ("מעונן חלקית"); String clearsky = String ("Clear"); String fair = String ("הוגן"); String sunny = String ("שטוף שמש");

// הצהרות אלה אם משוות את משתנה מזג האוויר הנכנס לתנאים המאוחסנים, ושולטות ב- NeoPixels בהתאם.

// אם יש גשם בתחזית if (forecast.equalsIgnoreCase (גשם) || forecast.equalsIgnoreCase (lightrain) || forecast.equalsIgnoreCase (מקלחת גשם) || forecast.equalsIgnoreCase (AMshowers)) {Serial.println ("משקעים ב- תחזית היום ");

}

// אם יש שלג בתחזית if (forecast.equalsIgnoreCase (שלג) || forecast.equalsIgnoreCase (rainandsnow) || forecast.equalsIgnoreCase (שלג)) {Serial.println ("משקעים בתחזית היום");

}

// אם יש תחזית שמש אם (forecast.equalsIgnoreCase (clearsky) || forecast.equalsIgnoreCase (הוגן) || forecast.equalsIgnoreCase (שטוף שמש)) {Serial.println ("איזושהי שמש בתחזית היום");

}

// אם יש עננים בתחזית if (forecast.equalsIgnoreCase (מעונן) || forecast.equalsIgnoreCase (ברוב עננים) || forecast.equalsIgnoreCase (חלקית)) {Serial.println ("שמיים מעוננים בתחזית היום");

}

}

שלב 3: צור את המיכל / מעטפת

צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת
צור את המיכל / מעטפת

עבור הקליפה, התחל בקביעת הגודל שבו תרצה שהמסגרת שלך תהיה, או שתוריד את הקובץ שלי. לאחר שתקבע את הגודל תוכל להשתמש ב- MakerCase ליצירת הפריסה של קובץ הווקטור.

הפעל את הקובץ דרך חותך הלייזר - זה אמור לקחת כ -5 דקות. לאחר מכן מרכיבים את הקליפה יחד.

לא התייחסתי לרוחב החומר מה שמקשה על הכפתורים שלי. אני עדיין צריך למצוא דרך לצרף אותם. הם גם קטנים מאוד מה שמקשה עליהם לעבוד.

מוּמלָץ: