במאמר זה נבחן מהו ממשק I2C (ay-tu-si, i-two-tse), מה התכונות שלו וכיצד לעבוד איתו.
זה הכרחי
- - ארדואינו;
- - פוטנציומטר דיגיטלי AD5171;
- - דיודה פולטת אור;
- - נגד 220 אוהם;
- - 2 נגדים ל- 4.7 kOhm;
- - חיבור חוטים.
הוראות
שלב 1
פרוטוקול התקשורת הטורי של IIC (נקרא גם I2C - Inter-Integrated Circuits) משתמש בשני קווי תקשורת דו כיווניים להעברת נתונים, הנקראים אוטובוס SDA (Serial Data) ואוטובוס SCL (Serial Clock). ישנם גם שני קווי חשמל. האוטובוסים SDA ו- SCL נמשכים עד לאוטובוס הכוח דרך נגדים.
יש לפחות מאסטר אחד ברשת היוזם העברת נתונים ויוצר אותות סנכרון. ברשת יש גם עבדים שמעבירים נתונים לבקשת המאסטר. לכל מכשיר עבדים יש כתובת ייחודית בה המאסטר פונה אליו. כתובת המכשיר מצוינת בדרכון (גליון הנתונים). ניתן לחבר עד 127 מכשירים לאוטובוס I2C אחד, כולל כמה מאסטרים. ניתן לחבר התקנים לאוטובוס במהלך הפעולה, כלומר הוא תומך בחיבור חם.
שלב 2
Arduino משתמש בשתי יציאות לעבודה על ממשק I2C. לדוגמא, ב- Arduino UNO וב- Arduino Nano, יציאה אנלוגית A4 מתאימה ל- SDA, יציאה אנלוגית A5 תואמת ל- SCL.
לדגמי לוח אחרים:
Arduino Pro ו- Pro Mini - A4 (SDA), A5 (SCL)
Arduino מגה - 20 (SDA), 21 (SCL)
ארדואינו לאונרדו - 2 (SDA), 3 (SCL)
Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1
שלב 3
כדי להקל על חילופי הנתונים עם מכשירים דרך אוטובוס I2C, נכתבה ספריית "Wire" סטנדרטית עבור Arduino. יש לו את הפונקציות הבאות:
התחלה (כתובת) - אתחול הספרייה וחיבור לאוטובוס I2C; אם לא צויין כתובת, ההתקן המחובר נחשב למאסטר; נעשה שימוש בכתובת 7 סיביות;
requestFrom () - משמש את המאסטר לבקשת מספר מסוים של בתים מהעבד;
beginTransmission (כתובת) - תחילת העברת הנתונים למכשיר העבדים בכתובת ספציפית;
endTransmission () - סיום העברת נתונים לעבד;
כתוב () - כתיבת נתונים מהעבד בתגובה לבקשה;
available () - מחזיר את מספר הבתים של המידע הזמין לקבל מהעבד;
קרא () - קרא בתים שהועברו מהעבד לאדון או מהמאסטר לעבד;
onReceive () - מציין את הפונקציה שיש לקרוא לה כאשר העבד מקבל שידור מהמאסטר;
onRequest () - מציין פונקציה להיקרא כאשר המאסטר מקבל שידור מהעבד.
שלב 4
בואו נראה איך לעבוד עם אוטובוס I2C באמצעות Arduino.
ראשית, נרכיב את המעגל, כפי שמוצג באיור. אנו נשלוט על בהירות ה- LED באמצעות הפוטנציומטר הדיגיטלי AD5171 בעל 64 המיקומים, המתחבר לאוטובוס I2C. הכתובת בה נתייחס לפוטנציומטר היא 0x2c (44 בעשרוני).
שלב 5
עכשיו בואו נפתח סקיצה מהדוגמאות של ספריית "Wire":
קובץ -> דוגמאות -> חוט -> דיגיטלי פוטנציומטר. בואו נטען אותו בזיכרון הארדואינו. בואו נדלק את זה.
אתה מבין, הבהירות של ה- LED עולה במחזוריות ואז פתאום נכבית. במקרה זה, אנו שולטים בפוטנציומטר באמצעות הארדואינו באמצעות אוטובוס I2C.