- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -
הפונקציה tone(pin, frequency[, duration]) גורמת להפקת גל ריבועי בפין פלט של הארדואינו, בתדר הרצוי. טווח התדרים המעשי לפונקציה זו מכיל, פחות או יותר, את טווח השמיעה האנושי, כך שבחיבור לרמקול או רכיב דומה ניתן ליצור בעזרת tone צלילים. אפשר להגדיר מגבלת זמן להפקת הגל. הפונקציה אינה חוסמת (היא Non-blocking) – כלומר, ניתן לבצע פעולות נוספות בקוד הראשי במשך הפקת הגל.
בכל רגע נתון, הפונקציה tone יכולה לפעול על פין ארדואינו אחד בלבד. קריאה חוזרת ל-tone עם אותו מספר פין תשנה את תדר הגל הריבועי בו בהתאם לפרמטר frequency. קריאה ל-tone עם מספר פין אחר, לעומת זאת, לא תפעל אלא אם תתבצע קודם לכן קריאה ל-noTone עבור הפין הקודם, כפי שמודגם בקוד שבהמשך.
פרמטרים
pin הוא מספר/שם הפין הרלוונטי, כפי שהוא רשום על לוח הארדואינו. פרמטר זה הוא מטיפוס uint8_t. שמות פינים כגון A0 הינם למעשה קבועים שמוגדרים מראש בספריות הליבה של ארדואינו, כך שניתן להשתמש גם בהם.
frequency הוא התדר הרצוי של הגל הריבועי, ביחידות של הרץ (Hz). פרמטר זה הוא מטיפוס unsigned int – הערך המרבי שניתן להעביר בעזרתו הוא 65,535.
duration הוא פרמטר אופציונלי מטיפוס unsigned long, שקובע את משך הגל/צליל באלפיות שנייה. הערך 0 פירושו שהצליל יופק ללא מגבלת זמן. ערך ברירת המחדל עבור פרמטר זה הוא 0.
ערך חוזר
אין
דוגמאות
tone(7, 440); delay(100); noTone(7); tone(8, 262, 100);
הערות
- הפקת הצליל מתבצעת באמצעות טיימר של המיקרו-בקר, ופלט PWM שקשור לטיימר זה עלול להשתבש עקב השימוש ב-tone. כמו כן, כל ספריה שמסתמכת על טיימר זה למטרות אחרות עשויה לפגוע בפלט של tone או להיפגע ממנו. בארדואינו Uno, מדובר בטיימר 2 ולכן ב-PWM בפינים 3 ו-11.
- בשל מגבלות הטיימר, וטיפוס המשתנה של הפרמטר frequency, טווח התדרים בפועל הוא 31Hz – 65.535KHz. גם רמת הדיוק של התדר מוגבלת ועשויה לסטות מהערך הרצוי במספר אחוזים לכאן או לכאן.
- אסור לחבר את פין הפלט ישירות לרמקול רגיל (הזרם עלול להיות גבוה מדי ולהזיק למיקרו-בקר). חובה להשתמש לכל הפחות בנגד מתאים. אסור לחבר את פין הפלט ישירות לכניסת אודיו כלשהי (כגון חיבור מיקרופון), מכיוון שטווח המתחים שלו גדול מדי ועלול להזיק למכשיר הקולט.