חיפוש
  • יניב אור

קופסת צל - CBGB

עודכן ב: אפר 29

בהמשך לפוסט: קופסאות צל, אני רוצה להוסיף חיות לקופסאות - אעשה בתור התחלה דברים פשוטים.



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


מתוך רמקול קטן יושמעו שירי פאנק מהתקופה - מיספיטס למשל:


התאורה תעומעם רנדומלית/חיישנית.


להכל אוסיף, כמובן, שליטה של ה-MindWave.


עדכון: 27/7/19

התקדמתי עם כמה דברים:


* מנוע צעד 28BYJ-48



* קצת מטריד אותי שבחרתי בפקק של בקבוק. לא יודע אם זה כל כך נורא - אולי פה ספציפית זה דווקא מתאים. בכל מקרה, הראש מתפרק בקלות מה-shaft של המנוע ככה שאוכל לשפץ בהמשך.





* נחמד, הוא ינוע אחרת לגמרי למרות שגם מצד לצד זה לא רע.

* איזה כיף המנוע הזה, שקט ועובד פיקס - קניתי מאי-ביי עכשיו עוד 10 כאלה. כולל דרייבר ULN2003 לכל אחד. סך הכל קרוב ל-30 דולר אוסטרלי.

* הערה: גודל השאפט 5mm.

* המוסיקה מהלפטופ, כמובן. עדיין לא מהקופסא.


רעיון נוסף

הקופסא תהיה בעצם אתר אינטרנט שסובב סביב פאנק, CBGB וכו'. מעין תחנת מידע אולי.



עדכון: 30/7/19

התקדמתי קצת עם הבהוב/עמעום של התאורה


בשירותים של ה-CBGB נמצא המחזיק סוללות והמפסק




חיברתי חוטים לשתי הרגליים של המפסק ועכשיו המיקרוקונטרולר יכול לקחת שליטה במקום המפסק


הוספתי למערכת TIP120 - הסברים בפוסט: SCRUM monkey - TIP family transistor (Darlington) - וחיברתי את פין 13 של הארדואינו דרך נגד 1k אוהם ל-base של הטרנזיסטור.


העליתי לארדואינו את הקוד של Blink וזאת התוצאה:


נחמד - לא ממש מעניין.

המטרה שלי היא ליצור אפקט של עמעום אורות והבהובים, כמו בסרטי אימה - כאילו יש נתקים בחשמל וכולי.


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

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


האורות בשילוב עם הראש:


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


שימו לב לתמונה הבאה:

אני מחבר לארדואינו UNO השמאלי את התאורה, פין 13 - וזה אחרי שניתקתי ממנו את ה-cnc shield שמשמש אותי ב-Polargraph, למשל. ול-motor shield על הארדואינו הימני, חיברתי את המנוע צעד. צריך לחשוב איך לצמצם ולייעל את המערכת.


מתחיל להיות צפוף וזה סימן טוב ;)


כפי שציינתי למעלה, יש לי משלוח בדרך לארץ עם 10 מנועי צעד 28BYJ-48 כולל דרייבר לכל מנוע.


זה, כבר יותר אלגנטי


מצאתי בארגז ההפתעות שלי מודול דרייבר ULN2003 מתאים בדיוק ל-28BYJ-48


ועכשיו אין צורך יותר בארדואינו הימני (עם ה-motor shield).


הקוד נראה כרגע כך, ללא התאורה, רק המנוע צעד:



אז ארדואינו אחד צריך לשלוט גם על הטיימר של התאורה וגם על ההוראות למנוע צעד.

כרגע הטיימר של התאורה נעשה בתוכנה - delay של שנייה בין כיבוי להדלקה. אם אשים את הקוד הזה ב-loop יחד עם ההוראות למנוע - המנוע יסתובב מאוד מאוד לאט. זה לא עובד בצורה כזאת.

דבר נוסף, הקוד למעלה של Stepper.step, גם הוא בלוקינג - זאת אומרת שהראש יסתובב את כל 2048 הצעדים שנקבעו, עם כיוון השעון. לאחר מכן נגד כיוון השעון, ורק אז יבצע פקודות בהמשך - בתוך ה-loop.



עדכון 31/7/19

הפיתרון לעניין הזה הוא בשתי פונקציות: millis ו-micros - שתיהן מחזירות את הזמן שעבר מתחילת ריצת התוכנית. הראשונה, בדיוק של אלפיות שנייה והשנייה בדיוק של מיליוניות השנייה. מה שנשאר לעשות זה לקבוע interval לכל אחד מהרכיבים, למשל כל 1000 מילישניות לתאורה וערך אחר למנוע צעד - ובפונקציית loop דוגמים בכל סיבוב את הזמן הנוכחי ומשווים לזמן הקודם. אם הערך הגיע לאותו ערך של ה-interval - מדליקים את התאורה.


הנה הקוד מהאתר הרשמי של ארדואינו:


וזה הקוד המאוחד של הראש והתאורה, עובדים בסנכרון:


* כל אלפית שנייה הראש מבצע צעד אחד וכל 1000 אלפיות שנייה התאורה משנה את ה-state מ-on ל-off ולהיפך.


וזה נראה כך:


כמה דברים שאני רוצה לעשות בהמשך:

1. להחליף את המערכים ב-data structure אחר. הכוונה ל-previousMillis ו-interval - ששניהם מחזיקים מספר ערכים לכל אחד מהרכיבים הראשיים במערכת - המנוע והתאורה.

משום שבמהלך היום אני מפתח web ו-90% מהזמן כותב Javascript, באופן טבעי אני חושב JSON. אני מתאר לעצמי שיש ספריה לזה. זה נראה לי בזבזני. אשתמש ב-struct. אם יש אפשרויות נוספות, אשמח לדעת עליהן.

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

3. לעבוד על כל אחד מהרכיבים בנפרד וליצור סיקוונסים מעניינים.


שיניתי את המערכים ל-struct:


שיניתי את הקוד ובמקום timingData לכל רכיב, יש אחד גלובלי. הוספתי sequences לתאורה. הראש בינתיים עושה צעד אחד בכל סיבוב של loop.

הוספתי counter שסופר מ-0 עד 1000 וחוזר חלילה. יש לזה כמה סיבות. למרות אי שימוש ב-delay, יש חלקים בקוד - בסיבוב של המנוע למשל - שגורמים ל-Blocking. מה שזה אומר ש-previousMillis לא תמיד מקבל את הערכים. ה-counter מבטיח לי שתמיד יהיה טווח של 0 עד 1000. זה לא הכי מדוייק מבחינת זמנים, אבל זה עובד במיצג מהסוג הזה. כמובן שבהמשך אלמד לשכלל את העניין.


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



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


עדכונים בהמשך...

© 2023 by DO IT YOURSELF. Proudly created with Wix.com