()shiftIn
קולטת מידע של בית (byte) סיבית אחר סיבית (bit). הפונקציה יכולה להתחיל מצד ה-MSB (סיבית הכי שמאלית) או LSB (סיבית הכי ימנית). עבור כל סיבית, קו השעון (clock) מורם ל-"1" לוגי, הביט נקרא ואחריו קו השעון מורד ל-"0" לוגי.אם הצד השני אליו מחוברים הקווים מגיבים על עליה של קו השעון, תצטרכו לוודא שקו ה-clock יהיה ב-"0" לוגי לפני שתקראו לפונקציה
()shiftIn
, כלומר צריך לקרוא ל-digitalWrite(clockPin, LOW)
.זהו למעשה מימוש תוכנתי של ממשק SPI. תוכלו להשתמש בספריית SPI (קישור TODO) שמממשת את התקשורת בצורה חומרתית, מהירה יותר, אבל פועלת רק על קווים מסויימים.
תחביר
- קוד: בחר הכל
byte incoming = shiftIn(dataPin, clockPin, bitOrder);
פרמטרים:
dataPin - הקו ממנו יקראו הסיביות של המידע - מסוג int
clockPin - הקו שיעלה וירד בקריאה מ-dataPin - מסוג int
bitOrder - סדר של קריאת הסיביות, MSBFIRST - Most Significant Bit First או LSBFIRST - Least Significant Bit First
הפונקציה מחזירה byte של מידע שנקרא.
שימו לב:
קו ה-dataPin צריך להיות מוגדר כקו קלט ו-clockPin כקו פלט בעזרת פונקציה ()pinMode.
פונקציית
()shiftOut
כתובה כך שהיא פועלת רק על בית אחד (1byte), כך שאם אתם צריכים לטפל במספרים גדולים יותר מ-255, תצטרכו לקרוא לפונקציה זו עבור כל byte במספר.ראו גם:
()shiftOutSPI - TODO
פירוט שפת תכנות לסביבת Arduino
עמוד זה הוא תרגום של ()shiftIn לפי רישיון Creative Commons Attribution-ShareAlike 3.0.