תוכן עניינים:
- שלב 1: הגדרת כתובות רישום
- שלב 2: מערכים ומשתנים גלובליים
- שלב 3: הפונקציה "serial.begin"
- שלב 4: הפונקציה "serial.available"
- שלב 5: הפונקציה "serial.read"
- שלב 6: הפונקציה "serial.write"
- שלב 7: פונקציית ההתקנה
- שלב 8: פונקציות הלולאה וה- ISR
- שלב 9: חיווט
- שלב 10: להרכיב הכל ביחד
וִידֵאוֹ: מחולל טונים של Arduino ללא ספרייה או פונקציות סדרתיות (עם הפרעות): 10 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
זה לא משהו שבדרך כלל אני יכול להדריך אותו, אני מעדיף את עבודות המתכת שלי, אבל מכיוון שאני סטודנט להנדסת חשמל ועלי לקחת קורס על מיקרו -בקרים (תכנון מערכות משובצות), חשבתי שאעשה הדרכה בנושא אחד הפרויקטים שלי. כשעשיתי במקור את הפרויקט ואחרים לכיתה זו, גיליתי שיש מעט מאוד הדרכות שאינן משתמשות בפונקציות הספרייה של הארדואינו או בפונקציות סדרתיות, וזו עוד סיבה שחשבתי שזו תהיה הדרכה טובה.
קוד זה מיועד למיקרו -בקר Atmega 2560, כך שאם ברצונך ליישם אותו על לוח אחר תצטרך לשנות את רשימות הכתובות בקוד בהתאם למדריך למשתמש של הבקרים שלך. הרעיון הבסיסי מאחורי הקוד הוא שבכל פעם שאתה מכניס מקש במקלדת למסך הסדרתי, מגה הארדואינו יפיק תדר מסוים על סמך איזה מקש אתה לוחץ, כאשר "q" יאפס אותו. עשיתי את זה כך ש- "a" יפיק את תדר A שטוח ו- "A" יפיק את התדר A חד, "b" מוציא B שטוח, "c" עבור C שטוח, "C" עבור C חד וכן הלאה. הקוד המלא מועלה בסוף, אך כל שלב יפרק את הקוד לחתיכות כך שקל יותר להסביר אותו.
שלב 1: הגדרת כתובות רישום
שלב זה קל, אם אתה משתמש ב- atmega 2560, אתה רק צריך להשתמש בכתובות שבהן השתמשתי, אם כי אם אתה משתמש בלוח עם שבב אחר, יהיה עליך למצוא את הכתובות עבור כל אחד מהרשמים האלה ברשמתך. מדריך למשתמש של צ'יפס. ההגדרות למעלה הן רק קבועים שישמשו את הפונקציות שלנו בהמשך. אנו מציינים את הכתובות כתנודתיות ללא חתימה מכיוון שאיננו רוצים שהמהדר יתעסק איתן.
שלב 2: מערכים ומשתנים גלובליים
כאן אנו רוצים להגדיר את מערך התדרים שיכיל את כל התדרים שכל מפתח צריך להוציא. ערכים אלה מחושבים מתדרי התווים בפועל, ולמען האמת שכחתי כיצד קיבלתי אותם, אך הם הערכים הנכונים כאשר בדקתי אותם באוסילוסקופ כדי לוודא. אנו מגדירים גם את מערך התווים המכיל את כל המפתחות ללחיצה על כל צליל, כמו גם המשתנים שנצטרך עבור הפונקציות המאוחרות יותר שלנו.
שלב 3: הפונקציה "serial.begin"
נקרא לפונקציה המותאמת אישית שלנו המשכפלת את הפונקציה "serial.begin" U0init (). הוא לוקח את שידור העומס הרצוי כקלט ומתחיל את היציאה הטורית באותה קצב שידור.
שלב 4: הפונקציה "serial.available"
נקרא לפונקציה המחקה את "serial.available" U0kbhit (). זה לא לוקח קלט, אלא מזהה אם יש שינוי במקלדת באמצעות ביט הסטטוס של RDA וחוזר נכון כאשר מתגלה שינוי.
שלב 5: הפונקציה "serial.read"
נקרא לפונקציה המחקה את הפונקציה "serial.read" U0getchar (), שאינה לוקחת כל קלט ויוצאת כל שינוי שנעשה במקלדת, המאוחסנת במרשם UDR0.
שלב 6: הפונקציה "serial.write"
נקרא לפונקציה המחקה את "serial.write" U0putchar (), שלוקח את הנתונים מרשם UDR0 בזמן שזיהוי ושמירה של שינויים ופלטים המשתנים בחזרה לצג הטורי.
שלב 7: פונקציית ההתקנה
זוהי פונקציית ההתקנה הבסיסית שתשתמש בחיקוי "serial.begin" שלנו לאתחול היציאה הטורית, ותאתחל את הגדרות הסיביות שלנו לרשמי הטיימר ויגדיר את PB6 להפיק את הצלילים שלנו.
שלב 8: פונקציות הלולאה וה- ISR
הלולאה מתפקדת כך: אם מתגלה שינוי עם הפונקציה "serial.available" שלנו, הפונקציה "serial.read" שלנו מאחסן את השינוי, והפונקציה "serial.write" שלנו מכניסה את השינוי הזה לצג הטורי. כל עוד משתנה i קטן מגודל מערך התדרים, הוא יגדיר את הפלט להיות המיקום של i במערך זה, ויוציא את התדר במיקום זה. ה- ISR מתפקד כאיפוס, כאשר אם מיקום מערך התדרים אינו שווה ל- 0 (במילים אחרות אם לא לוחצים על "q"), הוא יפיק את התדר, אך כאשר לוחצים על "q" הוא יתאפס. שים לב: קוד זה משתמש בהפרעות, אך ניתן לעשות זאת עם הפרעות מושבתות. אפרסם את הקוד ללא הפרעות אם אקבל בקשות לכך, אני פשוט חושב שגרסת ה- interrupt מהנה יותר.
שלב 9: חיווט
החיווט לקוד זה הוא פשוט ביותר, פשוט הכנס חוט פלט מ- PB6 ללוח לחם, חיבר עם זה זמזם או רמקול בסדרה, וחבר אותו חזרה לקרקע. הערה: אם אתה משתמש ברמקול, הכנס נגד קטן לפני הרמקול. אם אתה רק רוצה לראות את הפלט אך לא שומע אותו, פשוט חבר את PB6 למוביל האדום של אוסצילוסקופ ואת ההובלה השחורה לקרקע.
שלב 10: להרכיב הכל ביחד
הוספתי את הקוד המלא לשלב זה, מכיוון שהסברתי את כל חלקיו בשלבים קודמים. זה פשוט לוקח קלט מקלדת לתדרים שונים ויוצא תדר זה ל- PB6. מקווה שנהנתם לקרוא דרך אחרת לקודד עם ה- IDE!
כמו כן, אנא הצביעו לכך בתחרות מיקרו -בקר: ד
מוּמלָץ:
היכרות עם "ערכת DIY מחולל פונקציות מקצועית ILC8038": 5 שלבים
היכרות עם "ערכת DIY מחולל הפונקציות המקצועית ILC8038": הסתובבתי לכמה פרויקטים חדשים של אלקטרוניקה כאשר נתקלתי בערכת מחולל פונקציות קטנה וחמודה. הוא מחויב כ"ערך ה- DIY מקצועי של מחולל הפונקציות ILC8038 Sine Triangle Wave Square "והוא זמין ממספר ספקים
תכנות ארדואינו באמצעות ארדואינו אחר להצגת טקסט גלילה ללא ספרייה: 5 שלבים
תכנות Arduino באמצעות Arduino אחר להצגת טקסט גלילה ללא ספרייה: Sony Spresense או Arduino Uno אינם כה יקרים ואינם דורשים הרבה כוח. עם זאת, אם לפרויקט שלך יש הגבלה על כוח, שטח או אפילו תקציב, מומלץ לשקול להשתמש ב- Arduino Pro Mini. שלא כמו Arduino Pro Micro, Arduino Pro Mi
מפענח פרוטוקול שלט רחוק RC5 ללא ספרייה: 4 שלבים
מפענח פרוטוקול שלט רחוק RC5 ללא ספרייה: לפני פענוח rc5 תחילה אנו דנים בפקודה rc5 ומהו מבנהה. אז בעצם הפקודה rc5 המשמשת בשלט רחוק המשמשים לטלוויזיות, נגני תקליטורים, d2h, מערכות קולנוע ביתיות וכו '. יש לה 13 או 14 סיביות מסודרות ב
מחולל הפרעות האתרים הגולווני-אדיסון: 4 שלבים (עם תמונות)
מחולל הפרעות האתרים הגלווני-אדיסון: הרשימה מבקשת להסב את תשומת הלב להתפתחויות האחרונות של האדונים גלווני ואדיסון ולשימוש במחקר שלהן בפיתוח מחולל הפרעות אתרי אתרי
מצנן / מעמד למחשב נייד בעלות אפסית (ללא דבק, ללא קידוח, ללא אגוזים וברגים, ללא ברגים): 3 שלבים
מצנן / מעמד למחשב נייד בעלות אפסית (ללא דבק, ללא קידוח, ללא אגוזים וברגים, ללא ברגים): עדכון: אנא, בבקשה להצביע עבור אחרים שלי היכנסו לאתר www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ או אולי הצביעו לחבר הטוב שלי