פונקציית נגן/הרץ קדימה
על מנת להפעיל את נגן המפ3 שחיברנו אל המיקרומעבד, השתמשנו במצמדים פוטואלקטרים 4N27 היחידה מקבלת את האות הדיגיטלי כפי שהוא יוצא מהמיקרומעבד והתזמונים הם קריטים בהפעלת המפסק כי הם צריכים לדמות לחיצה אנושית אך עדיין שתהיה נכונה באופן עקבי (אחרי בדיקות רבות וניסויים רבים ובעזרתו של עמיר הגענו לתזמון של 80/40 מילישניות בהתאמה לזמן כבוי/דלוק) בקוד כתבתי פונקציה שמתאימה ללחיצה על נגן.
void pp()
{
digitalWrite(playpin,HIGH);
delay(80);
digitalWrite(playpin,LOW);
delay(40);
}
{
digitalWrite(playpin,HIGH);
delay(80);
digitalWrite(playpin,LOW);
delay(40);
}
פונקציית העברת שיר באופן יחסי
בנוסף נדרשה לוגיקה אשר מעבירה שירים לפי מיקום השיר הנוכחי והשיר אליו אנחנו רוצים להגיע: הלוגיקה עובדת כך שכאשר מתקיים תנאי מסויים, המכשיר יודע באיזה שיר הוא נמצא באופן דיסקרטי לתנאי שאותו הקוד מקיים ובעקבות כך מפעיל פונקציה אשר בודקת באופן יחסי איפה נמצא השיר ביחס לרשימת השירים בנגן ואז מקדמת את הנגן אל השיר בהפעלת פונקציה דומה לפונקצית נגן שהוצגה קודם אך חוזרת על עצמה כמה פעמים
לדוגמא:
יש 5 שירים סך הכל ברשימה.
אנחנו נמצאים בשיר מס 3 ורוצים להגיע לשיר מס' 3 - נצטרך לעבור 5 שירים שירים
אנחנו נמצאים בשיר מס 3 ורוצים להגיע לשיר מס' 2 - נצטרך לעבור 4 שירים קדימה
אנחנו נמצאים בשיר מס 3 ורוצים להגיע לשיר מס' 1 - נצטרך לעבור 3 שירים קדימה
וכיו"ב בהתאמה.
כך שהפונקציה תהיה:
void gotoTrack(int trackNo) {
if(trackNo > currentTrack) {
skipForward(trackNo - currentTrack);
}
else if(trackNo < currentTrack) {
skipForward(totalTrackCount - currentTrack + trackNo);
} else {
skipForward(totalTrackCount);
}
currentTrack = trackNo;
}
if(trackNo > currentTrack) {
skipForward(trackNo - currentTrack);
}
else if(trackNo < currentTrack) {
skipForward(totalTrackCount - currentTrack + trackNo);
} else {
skipForward(totalTrackCount);
}
currentTrack = trackNo;
}
החלק הראשון והשני של התנאי בודק את המיקום ביחס לשיר הנוכחי והתנאי האחרון בודק אם זהו אותו שיר, בסוף הפונקציה יש עדכון של מס השיר לנתון שמכיל את מספר השיר הנוכחי.
פונקציית בדיקת לדים - הפעלה ראשונית
ברוב המכשירים האלקטרונים קיים מחזור בדיקה ראשוני שפועל כאשר מפעילים מתח למכשיר, הוספתי פונקציה אשר מריצה 5 פעמים מחזור של הדלקה וכיבוי לדים שגם מוסיף לחוויה וגם מאפשר לנו לדעת שהמכשיר תקין.
הפונקציה:
void blip()
{
for(int i=0; i<5; i++){
digitalWrite(inled,LOW);
digitalWrite(distled,HIGH);
delay(100);
digitalWrite(distled,LOW);
digitalWrite(posled,HIGH);
delay(100);
digitalWrite(inled,HIGH);
digitalWrite(posled,LOW);
delay(100);
}
digitalWrite(posled,LOW);
digitalWrite(inled,LOW);
digitalWrite(distled,LOW);
}
אין תגובות:
הוסף רשומת תגובה