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

הכנת שירים עם Arduino ומנוע DC: 6 שלבים
הכנת שירים עם Arduino ומנוע DC: 6 שלבים

וִידֵאוֹ: הכנת שירים עם Arduino ומנוע DC: 6 שלבים

וִידֵאוֹ: הכנת שירים עם Arduino ומנוע DC: 6 שלבים
וִידֵאוֹ: ארדואינו - כניסה אנלוגית , ועקרון ההמרה מאות אנלוגי לדיגטלי-ADC 2024, נוֹבֶמבֶּר
Anonim
הכנת שירים עם Arduino ומנוע DC
הכנת שירים עם Arduino ומנוע DC

לפני כמה ימים, תוך כדי גלילה בין כמה מאמרים על ארדואינו, גיליתי פרויקט מעניין שהשתמש במנועי צעד מבוקרי ארדואינו ליצירת מנגינות קצרות. הארדואינו השתמש בסיכה PWM (Pulse Width Modulation) להפעלת מנוע הצעד בתדרים ספציפיים, המתאימים לתווים מוזיקליים. לפי תזמון אילו תדרים שיחקו מתי, אפשר היה לשמוע מנגינה ברורה ממנוע הצעדים.

עם זאת, כשניסיתי את זה בעצמי, גיליתי שמנוע הצעדים שיש לי לא יכול להסתובב מספיק מהר כדי ליצור צליל. במקום זאת, השתמשתי במנוע DC, שהוא פשוט יחסית לתכנות וחיבור לארדואינו. ניתן להשתמש במעגל L293D נפוץ כדי להניע את המנוע בקלות מסיכת PWM של Arduino, ופונקציית הטון המקורי () בארדואינו יכולה לייצר את התדר הדרוש. להפתעתי, לא מצאתי דוגמאות או פרוייקטים המשתמשים במנוע DC ברשת, ולכן המדריך הזה הוא תגובתי לתקן זאת. בואו נתחיל!

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

אספקה

  • ארדואינו (השתמשתי ב- UNO אבל אתה יכול להשתמש בארדואינו אחר אם תרצה)
  • מנוע 5V DC סטנדרטי, עדיף למאוורר מצורף (ראו תמונה ב "הרכבת המעגל"
  • L293D IC
  • כפתורי לחיצה רבים כמו התווים בשיר שאתה רוצה לנגן
  • לוח לחם
  • חוטי מגשר

שלב 1: סקירה כללית

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

שלב 2: הרכבת המעגל

הרכבת המעגל
הרכבת המעגל
הרכבת המעגל
הרכבת המעגל

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

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

שלב 3: אופן הפעולה של המעגל

כיצד פועל המעגל
כיצד פועל המעגל

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

למעלה מופיעה סכמטי פיני/פונקציונלי של ה- L293D מתוך גליון הנתונים שלו. מכיוון שאנו נוהגים במנוע אחד בלבד (ה- L293D יכול להניע 2), אנו זקוקים רק לצד אחד של ה- IC. סיכה 8 היא כוח, סיכות 4 ו -5 הן GND, סיכה 1 היא פלט ה- PWM מהארדואינו, והסיכות 2 ו -7 שולטות בכיוון המנוע. כאשר סיכה 2 היא גבוהה וסיכה 7 היא נמוכה, המנוע מסתובב בכיוון אחד, וכאשר סיכה 2 היא נמוכה וסיכה 7 היא גבוהה, המנוע מסתובב לכיוון השני. מכיוון שלא אכפת לנו באיזה כיוון המנוע מסתובב, זה לא משנה אם סיכות 2 ו -7 הן LOW או HIGH, כל עוד הן שונות זו מזו. סיכות 3 ו -6 מתחברות למנוע. אתה יכול לחבר הכל לצד השני (סיכות 9-16) אם תרצה, אך שים לב כי סיכות ההספק וה- PWM מחליפות מקומות.

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

שלב 4: כיצד פועל הקוד

כדי להקל על הטיפול בכל הכפתורים, השתמשתי בספרייה בשם "כפתור" מאת madleech. כללתי את הספרייה דבר ראשון. לאחר מכן, בשורות 8-22, הגדרתי את התדרים עבור התווים הדרושים לניגון Twinkle, Twinkle, Little Star (השיר לדוגמה), הסיכה שבה אשתמש כדי להניע את ה- L293D והכפתורים.

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

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

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

שלב 5: תכנות שיר

במקום להשתמש בכפתורים לנגינת תווים, תוכל גם לתכנת את הארדואינו לנגן עבורך מנגינה אוטומטית. להלן גרסה שונה של המערכון הראשון המגלם את המנוצץ, הנוצץ, הכוכב הקטן על המנוע. החלק הראשון של המערכון זהה - הגדרת תדרי הצלילים והצליל. אנו מגיעים לחלק החדש ב- bpm = "100". הגדרתי את הפעימות לדקה (bpm) ולאחר מכן השתמשתי במתמטיקה כלשהי כדי להבין את מספר האלפיות השנייה לפעימה שה- bpm שווה לה. לשם כך השתמשתי בטכניקה הנקראת ניתוח ממדי (אל תדאג - זה לא קשה כמו שזה נשמע). אם אי פעם עברת קורס כימיה בתיכון, בהחלט השתמשת בניתוח ממדי כדי להמיר בין יחידות. המצופים () נמצאים שם כדי להבטיח ששום דבר במשוואה לא יעוגל עד הסוף לצורך דיוק.

לאחר שיש לנו את מספר ה- ms/פעימה, חילקתי או הכפלתי אותו כראוי כדי למצוא את הערכים באלפיות השנייה של משכי התווים השונים המצויים במוזיקה. לאחר מכן אני יוצר מערך של כל פתק בסדר כרונולוגי, ועוד אחד עם משך כל תו. זה קריטי שהאינדקס של כל תו יתאים לאינדקס משך הזמן שלו, אחרת המנגינה שלך תישמע. הכנסתי את ההערות ל- Twinkle, Twinkle, Little Star כאן כדוגמה, אך תוכל לנסות כל שיר או רצף תווים שתרצה.

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

שלב 6: משוב

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

מוּמלָץ: