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

מינידות 2 - ה- Holoclock: 6 שלבים
מינידות 2 - ה- Holoclock: 6 שלבים

וִידֵאוֹ: מינידות 2 - ה- Holoclock: 6 שלבים

וִידֵאוֹ: מינידות 2 - ה- Holoclock: 6 שלבים
וִידֵאוֹ: לייב - PALWORLD - זה פוקימון, אבל עם רובים! 2024, יולי
Anonim
מינידות 2 - הולוקלוק
מינידות 2 - הולוקלוק
מינידות 2 - הולוקלוק
מינידות 2 - הולוקלוק

ובכן, אולי הולוקלוק קצת לא מדויק….היא משתמשת בסרט פיזור הולוגרפי בחזית כדי לתת קצת עומק. בעיקרון ההנחיה היא עדכון למינידות הקודמות שלי שנמצאות כאן: https://www.instructables.com/id /EEGLXQCSKIEP2876EE/ושימוש מחדש בהרבה קוד ומעגלים מהמיקרו-דוט שלי הנמצא כאן: https://www.instructables.com/id/EWM2OIT78OERWHR38Z/EagleCAD וקוד Sourceboost כלולים בקובצי ה- zip המצורפים. מדוע? המינידות הקודמות היו מורכבות מדי, מהמיקרו -דוט למדתי כיצד לבצע RTC ב- PIC באמצעות קריסטל 32.768 בלבד ולא היה צורך להשתמש בשבב RTC מיוחד. כמו כן רציתי להיפטר משבבי התצוגה מהמינידות הקודמות. אז עכשיו יש רק שבב ווסת כוח ו- PIC16F88 …. רק שני שבבים. הסיבות האחרות לעדכון היו שהמינידו שלי נהיה קצת לא אמין בגלל לוח המתגים הנפרד ורציתי דהייה רכה בין דפוסי הנקודות כמו כמו גם סוג של חיישן אור הסביבה כדי לעמעם את התצוגה בלילה. המינידות האחרות היו בהירות קבועה, והאירו חדר בלילה. המכשיר נבנה בעזרת חבילת התוכנה EagleCad ומהדר Sourceboost. תצטרך להיות בעל ניסיון כלשהו באלקטרוניקה ובתכנות בקרי PIC כדי להתחיל בפרויקט זה. אנא שים לב כי אין מדובר בהנחיות לגבי תכנות אלקטרוניקה או תכנות PIC, לכן אנא שמור שאלות רלוונטיות לעיצוב Miniclock. עיין במדריכים לעיל או בהוראות רבות אחרות באתר זה לקבלת ייעוץ בנוגע לשימוש ב- EagleCad או תכנות PIC. אז הנה….. מינידות 2, הולוקלוק …… או מינידות הדור הבא ………….

שלב 1: המעגל

המעגל
המעגל
המעגל
המעגל
המעגל
המעגל

מעגל זה דומה מאוד למיקרו -דוט. שים לב שמערך ה- charlieplex כמעט זהה … רק מספר סיכות הועברו.

קריסטל של 20 מגה -הרץ נוספה למעגל ה- Microdot כדי לשעון את ה- PIC הרבה יותר מהר, זה מאפשר לסרוק את המערך מהר יותר ומאפשר יישום של אלגוריתם עמעום. האלגוריתם של העמעום היה חשוב מאוד בכדי שההתפשטות של דפוס צולב ותפקוד אור הסביבה תפעל. זה היה בלתי אפשרי עם ה- Microdot, בגלל מהירות השעון הנמוכה יותר מכיוון שצריך להשקיע כמה מחזורי סריקה על עמעום. עיין בסעיף הבא לתיאור פונקציונליות העמעום. הדברים האחרים שיש לשים לב אליהם הם השימוש בווסת משאבת טעינה MCP1252 לאספקת 5V, השבב האהוב עלי כרגע. אם שינית את המעגל תוכל להשתמש ב 7805 ישן פשוט …… יש לי רק מספר שבבים נוחים אלה שתלויים. כעת העברתי את המתגים לחזית, חוסך התעסקות בחלק האחורי של השעון לאחר הפסקת חשמל כדי לאפס את השעה ועכשיו הכל רק PCB אחד … אין בעיות בכבלים. כמו כן יש לציין את הכללת LDR. זה משמש במפריד מתח המורגש על ידי סיכת ה- A/D ב- PIC. כאשר ה- PIC מרגיש שרמת האור הסביבתית נמוכה (כלומר שעות הלילה) אלגוריתם העמעום שומר על מערך ה- charlieplex חשוך למשך יותר מחזורים מאשר כאשר רמת האור גבוהה. לא הצלחתי למצוא סמל LDR בספריית Eaglecad, אז פשוט השתמשתי בסמל LED … אל תתבאס שזה LDR. ראה תמונה בפועל של ה- PCB להלן. דבר אחד שצריך לשים לב אליו בעת שימוש בלדים רב צבעוניים במערך charliplex. עליך לוודא שהמתח קדימה של הלדים פחות או יותר זהה. אם לא, אז עלולים להתרחש נתיבי זרם תועים וכמה נוריות נדלקות. לכן שימוש בנורות הספק של 5 מ"מ ומעלה לתצורה זו לא יעבוד מכיוון שבדרך כלל יש הבדל די גדול בין הנורות הירוקות/הכחולות לבין הנורות האדומות/צהובות. במקרה זה השתמשתי ב- 1206 נוריות SMD ובדלקות נוריות ירוקות/כחולות במיוחד. אבל המתחים קדימה לא היו בעיה כאן. אם ברצונך להשתמש בתערובת של נוריות כוח ירוק/כחול ואדום/צהוב במערך charlieplex, יהיה עליך להפריד בין הצבעים השונים לשני מערכי charliplex. ישנם הסברים רבים ל- charlieplexing שניתן לחפש בגוגל… לא אפרט כאן. אשאיר לך לעשות קצת מחקר. (לחץ על סמל ה" i "בפינה של התמונה למטה כדי לראות גרסה גדולה יותר)

שלב 2: אלגוריתם העמעום - אפנון רוחב דופק Charliplexed

אלגוריתם העמעום - אפנון רוחב דופק Charliplexed
אלגוריתם העמעום - אפנון רוחב דופק Charliplexed

כפי שהוזכר קודם לכן, רציתי שדפוסי הנקודות השונות לזמן ייעלמו בצורה חלקה במקום לזוז מתבנית אחת לאחרת. עיין בסרטון להדגמה. באמצע שעון המינידות החדש, מימין המינידות הישנות יותר. שימו לב כמה החדש יותר יפה. (לידיעתך התצוגות האחרות ברקע הן תצוגת הסטטוס של מחשב -העל Minicray שלי וחלקיק הנבולון שנתפס שלי שמניע את ה- Minicray בשדה עצירה מגנטית נגד חומר. ראה כאן: https://www.youtube.com/watch? V = bRupDulR4ME להפגנה של חדר הכליאה של הנבולון) אם אתה מסתכל בקוד, פתח את קובץ display.c. שים לב שיש ארבעה מערכים למיפוי ערכי ה- tris/port להארת כל מערך מסוים ושני מערכים (אחד יותר מקוד ה- Microdot) להגדרת אילו נוריות יש להאיר עבור כל דפוס מסוים של LEDs.eg:

// LED1 LED2 LED3… חתימה חתימה LEDS_PORTA [31] = {0x10, 0x00, 0x00,… חתימה לא חותמת LEDS_TRISA [31] = {0xef, 0xff, 0xff,… חתימה לא חותמת LEDS_PORTB [31] = {0x00, 0x02, 0x04, … Un Char Char LEDS_TRISB [31] = {0xfd, 0xf9, 0xf9, … char nLedsA [30] ללא סימן; char nLedsB [30] ללא סימן;כדי להדליק את LED1 למשל, עליך להגדיר את רושמי TRIS TRISA: B = 0xef: 0xfd ו- PORT registers PORTA: B = 0x10: 0x00 וכן הלאה. אם תכתוב את ערכי ה- tris בבינארי תשים לב שבכל פעם, רק שתי יציאות מופעלות. האחרים כולם מוגדרים ל- Tri-state (ומכאן רשום TRIS). זה מרכזי ב- charlieplexing. תוכל גם לציין כי פלט אחד הוא תמיד '1' לוגי והשני הוא תמיד '0' לוגי. כיוון שבו נדלק הנורית הנכונה בין שני קווי הפלט הללו. הערך האחרון ביציאה/טריס מערכים הוא ערך null כדי להדליק אין נורית כלל. ב- Microdot, הפונקציה update_display מחזרת ברציפות במערך אחר (nLeds ) כדי לראות אם נורית LED מסוימת אמורה להיות מוארת. אם כן, נקבעו ערכי השליש/יציאה המתאימים והנורית מוארת לפרק זמן. אחרת ערך האפס נשלח לרשמי TRIS/PORT של PICs ולא נדלקה נורית במשך פרק זמן. כשזה נעשה מספיק מהר זה נתן דפוס. שאר התוכנית הייתה קוראת מעת לעת את ערכי ה- RTC ומרכיבה תבנית אקראית נחמדה במערך זה … וכך התצוגה השתנתה. כדי לבצע פונקציית עמעום, זה הורחב מעט כך שאחרי ש- 30 הנורות היו מוארות (או לא) אז יוקדשו תקופות נוספות לשליחת ערכי null אם התצוגה הייתה מעומעמת ….. עבור בהירות מלאה אז לא יבזבזו תקופות נוספות. כאשר הוא חוזר על עצמו אם היו הרבה תקופות בטלות לנורות ה- LED המוארות, המסך יהיה עמום. למעשה זו אפנון רוחב דופק מרובה … או מכיוון שהחומרה מוגדרת במערך charlieplex, ואז אפנון רוחב הדופק המורכב. התרשים השני להלן מציג את ההתקנה הבסיסית לכך. אני קורא לזה מסגרת סריקה. 30 התקופות הראשונות למסגרת משמשות כדי לעבור דרך נוריות הלדים….. ומספר משתנה של תקופות נוספות מגדירות עד כמה התצוגה תהיה עמומה. מחזור זה חוזר על עצמו. יותר תקופות null פירושו פחות זמן להדלקה של LED לכל מסגרת (מכיוון שמספר התקופות גדל). שים לב שהציר האנכי אינו אומר רמת מתח. המצב האמיתי של הפינים הנכנסים לנורות הלדים משתנה בהתאם למיקום שלו במערך charlieplex….. בתרשים זה רק אומר כיבוי או כיבוי. זה גם אומר שאורך המסגרת הכולל בזמן גם גדל, ובכך מקטין את הרענון ציון. ככל שהנוריות הלכו ונעשו עמומות יותר, הן היו מתחילות להבהב במילים אחרות. אז שיטה זו שימושית רק במידה. עבור השעון, זה היה בסדר. פונקציה נקראת לסירוגין שקוראת את ממיר A/D ב- PIC ומגדירה את רמת הבהירות הזו. אם אתה קורא את הקוד, הוא גם בודק אם הנורית הקרובה ביותר ל- LDR דולקת, ואינה מבצעת שום הגדרת רמה אם כן, הדבר מפסיק את הצג בוהק באופן בלתי צפוי כאשר התבנית השתנתה. לאחר מכן פונקציית דהיית הצלב.

שלב 3: אלגוריתם עמעום - אפקט קרוס דהוי וחוצץ כפול

אלגוריתם עמעום - אפקט הצלב דוהה וחוצץ כפול
אלגוריתם עמעום - אפקט הצלב דוהה וחוצץ כפול

המעבר בין דפוס אחד לשני היה בעבר מיידי. עבור שעון זה רציתי להראות תבנית אחת בהדרגה בהירות הבהירות והתבנית הבאה בהדרגה עולה … כלומר דהייה צולבת.

לא הייתי צריך לשלוט נוריות בודדות בכדי לשלוט ברמות בהירות נפרדות כדי לבצע דהייה צולבת. רק היה צריך את התבנית הראשונה בהירות אחת והשנייה בהירות נמוכה. ואז במשך תקופה קצרה הייתי מוריד מעט את הבהירות של הראשון, ומגדיל את השני….. זה ימשיך להמשיך עד שהתבנית השנייה במלואה. ואז השעון היה מחכה עד שהתבנית הבאה אמורה להופיע ויהיה מעבר נוסף. לכן הייתי צריך לאחסן שני דפוסים. זה המוצג כרגע והתבנית השנייה שעומדת להיות מוצגת. אלה נמצאים במערכים nLedsA ו- nLedsB. (שים לב אין שום קשר ליציאות במקרה זה). זהו המאגר הכפול. הפונקציה update_display () שונתה כך שתעבור בין שמונה מסגרות ותציג מספר מסגרות ממערך ראשון, ולאחר מכן מהאחר. שינוי מספר המסגרות שהוקצו לכל חיץ במהלך שמונה המחזורים הגדיר עד כמה תבנית תהיה בהירה. כשסיימנו לרכוב בין מאגרים החלפנו את מאגרי 'התצוגה' וה'תצוגה הבאה ', כך שהפונקציה ליצירת תבניות תכתוב רק למאגר' התצוגה הבאה '. התרשים שלהלן מראה זאת בתקווה. אתה אמור להיות מסוגל לראות שהמעבר ייקח 64 מסגרות סריקה. בתמונה, התבנית הקטנה מציגה את תרשים מסגרת הסריקה מהעמוד הקודם מוקטן באומנות. מילה על תעריף טרי. כל זה צריך להיעשות מהר מאוד. יש לנו כעת שתי רמות של חישוב נוסף, אחת לעיוורון התצוגה הסביבה ואחת לשמונה מחזורי המסגרות שבוצעו במעבר בין שני מאגרים. לכן קוד זה היה צריך להיכתב בהרכבה, אך הוא מספיק טוב ב- 'C'.

שלב 4: בנייה - ה- PCB

בנייה - ה- PCB
בנייה - ה- PCB
בנייה - ה- PCB
בנייה - ה- PCB

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

הדבר היחיד שחשוב לבנות בבניית ה- PCB הוא הכללת מחבר לתכנות ה- PIC. זה מתחבר לסיכות ICSP ב- PIC ותזדקק למתכנת ICSP. שוב השתמשתי במחבר שימושי למחבר הזבל שלי. אתה יכול להשמיט את זה ופשוט להלחם חוטים לרפידות אם תרצה. לחלופין אם יש לך רק מתכנת שקעים, תוכל ליצור כותרת המתחברת לשקע שלך ולאחר מכן להלחם אותו לרפידות ICSP. אם אתה עושה זאת, נתק את Rx וחבר את Ry שהם רק קישורים של אפס אוהם (אני פשוט משתמש בכתם הלחמה). זה ינתק את שאר כוח המעגל מה- PIC כך שזה לא יפריע לתכנות. מתכנת שקוע פשוט משתמש בסיכות ICSP כמו מתכנת ICSP, אין באמת קסם. עליך גם לעשות זאת אם בטעות שכחת לשים עיכוב בקוד לפני תחילת ה- RTC. עבור 16F88 סיכות התכנות ICSP זהות לסיכות הדרושות עבור הגביש 32.768kHz המשמש עבור ה- RTC …… אם המתנד החיצוני T1 (כלומר RTC) פועל לפני שה- ICSP יכול להתחיל בעבודתו, אז התכנות ייכשל. בדרך כלל אם יש איפוס על סיכת MCLR ויש עיכוב, ניתן לשלוח נתוני ICSP לפינים אלה ולהתכנתם יכול להתחיל כראוי. עם זאת על ידי בידוד הכוח ל- PIC מתכנת ICSP (או מתכנת שקוע עם כותרת) יכול לשלוט בהספק למכשיר ולכפות תוכנית. הדברים האחרים שיש לשים לב אליהם הם שרפידות הקריסטל במחשב הלוח תוכננו במקור עבור גבישי SMD. לא יכולתי לחכות עד שימסרו חלק, כך שקריסטל השעון של 32.768 קילוהרץ מולחם למעלה כפי שמוצג, והגביש 20 מגה -הרץ הוצמד על ידי קידוח של כמה חורים ברפידות, דוחף את הגביש דרך התחתון והלחמה על גבי חלק עליון. אתה יכול לראות את הסיכות ממש מימין ל- PIC16F88.

שלב 5: הסרט ההולוגרפי והשיכון

הסרט והשיכון ההולוגרפי
הסרט והשיכון ההולוגרפי
הסרט והשיכון ההולוגרפי
הסרט והשיכון ההולוגרפי
הסרט ההולוגרפי והשיכון
הסרט ההולוגרפי והשיכון

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

החלק הבולט בשעון זה הוא השימוש בסרט מפזר הולוגרפי. זהו סרט מיוחד שהיה לי מונח המספק עומק יפה למכשיר. אתה יכול להשתמש בנייר מעקב רגיל (שבו הייתי מקרב את הלוח הקדמי קרוב יותר לחזית), או כל מפזר אחר כמו אלה המשמשים בגופי תאורה זורחים. ניסיון בנושא, הדבר היחיד שהוא צריך לעשות הוא לאפשר לך להבדיל בין מספר הלדים המוארים, או לספור את הנקודות כדי לומר שהזמן יהיה קשה. השתמשתי בחומר פיזור הולוגרפי מתאגיד האופטיקה הפיזית (www.poc.com) עם פיזור מעגלי של 30 מעלות, תצוגת סטטוס מחשב העל המוצג במקומות אחרים במדריך השתמש בסרט עם פיזור אליפטי בגודל 15x60 מעלות. אתה יכול להשתמש בקלטת האפלה כדי להסתיר את הפנימיות הנוצצות במהלך היום כדי לקבל מראה מסתורי יותר. אתה יכול אפילו להשאיר את המסך ברור ולתת לאנשים לראות את הפנימיות כמוני. המעמד היה שני פיסות מוט 'L' מאלומיניום עם מעט קצוץ בתחתית כדי לאפשר עיקול. הערה בתמונות אלה נוספה תאורה נוספת כך שתוכל לראות את מכסי התצוגה וכו 'בתאורת סלון רגילה, נוריות ה- LED בולטות יותר, אפילו באור יום.

שלב 6: תוכנה וממשק משתמש

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

כדי להגדיר את השעה הקש תחילה על SW1. המכשיר יהבהב את כל הלדים כמה פעמים ולאחר מכן קבוצת 10 השעות של נוריות SW3 תגדיל את הקבוצה שנבחרה SW2 תעבור לקבוצה הבאה של נוריות LED, בכל פעם מהבהבים כל נוריות הקבוצה בקבוצה לזמן קצר. הקוד כתוב לגרסת 6.70 מהדורת Sourceboost 'C'. קוד RTC נמצא בקבצי t1rtc.c/h, ויש לו פונקציית הפרעה על טיימר T1 של ה- PIC. טיימר T1 מוגדר להפריע כל שנייה אחת. בכל שנייה, המשתנה לזמן מצטבר. כמו כן טיימר מתקתק נספר כל שנייה יחד עם הזמן. זה משמש כדי לקבוע מתי לעבור את התצוגה. פונקציית ההפרעה משתמשת גם בפסק הטיימר של T0 כדי לרענן את התצוגה, וקוראת לפונקציה בתצוגה. C הקבצים display.h/display.c מכילים את הפונקציות לעדכון התצוגה ולהצגת הזמן הקבצים control.c/h מכילים את פונקציות לקביעת השעה וקריאת המתגים הקבצים holoclock.c/h הם הלולאות והאתחול העיקריים.

מוּמלָץ: