Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

האם המוצר במלאי?
[X]
עמוד המוצר מציג את רמת המלאי האמיתית, הזמינה במחסנינו בישראל.
פרטים נוספים
איך מזמינים ומשלמים?
[X]
ההזמנה והתשלום מתבצעים רק דרך האתר.
איסוף או משלוח? כמה זה יעלה?
[X]
האתר מציע 5 אפשרויות משלוח וגם אפשרות לאיסוף עצמי מהמחסן.
אחרי הוספת המוצרים לעגלת הקניות, אפשר לראות בה את האפשרויות, המחירים והערכת זמני הגעת המשלוח.
המחיר יחושב לפי גודל ומשקל המוצרים שבחרת.
פרטים נוספים
מתי ההזמנה מוכנה?
[X]
אין צורך לעדכן אותנו טלפונית על ביצוע ההזמנה. אנו רואים אותה מיד ומטפלים בה במהירות.
כמה מהר? לפי הסטטיסטיקה של 3 חודשים האחרונים, הכוללים גם חגים וחופשים, הזמנות שבוצעו בשעות אלה (יום רביעי בין השעות 7 ל-8) היו מוכנות תוך שעה ו-דקה אחת.
פרטים נוספים
ייצור ושירותים
מחלקות מוצרים

פירוט שפת תכנות - טיפול מתקדם - ()shiftOut

על ידי Alex » ד' יולי 26, 2017 12:44 pm
פונקציית ()shiftOut מוציאה מידע של בית (byte) סיבית אחר סיבית (bit). הפונקציה יכולה להתחיל מצד ה-MSB (סיבית הכי שמאלית) או LSB (סיבית הכי ימנית). כל סיבית בתורה נכתבת לקו ה-data, אחרי שקו ה-clock מספק פולס (עולה ויורד) כדי להודיע שערך הסיבית זמין לקריאה.

שימו לב:
אם הצד השני אליו מחוברים הקווים מגיבים על עליה של קו השעון, תצטרכו לוודא שקו ה-clock יהיה ב-"0" לוגי לפני שתקראו לפונקציה ()shiftOut, כלומר צריך לקרוא ל-digitalWrite(clockPin, LOW).

זהו למעשה מימוש תוכנתי של ממשק SPI. תוכלו להשתמש בספריית SPI (קישור TODO) שמממשת את התקשורת בצורה חומרתית, מהירה יותר, אבל פועלת רק על קווים מסויימים.

תחביר
קוד: בחר הכל
shiftOut(dataPin, clockPin, bitOrder, value)

פרמטרים:
dataPin - הקו עליו יוצאו הסיביות של המידע - מסוג int
clockPin - הקו שיעלה וירד אחרי ש-dataPin יהיה מוכן לקריאה - מסוג int
bitOrder - סדר של הוצאת הסיביות, MSBFIRST - Most Significant Bit First או LSBFIRST - Least Significant Bit First
value - המידע שצריך להוציא על קו ה-dataPin - מסוג byte

פונקציה זו לא מחזירה ערכים.

שימו לב:
קווי ה-dataPin ו-clockPin צריכים להיות מוגדרים כקווי פלט בעזרת פונקציה ()pinMode.

פונקציית ()shiftOut כתובה כך שהיא פועלת רק על בית אחד (1byte), כך שאם אתם צריכים לטפל במספרים גדולים יותר מ-255, תצטרכו לקרוא לפונקציה זו עבור כל byte במספר.

דוגמה
קוד: בחר הכל
// Do this for MSBFIRST serial
int data = 500;
// shift out highbyte
shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); 
// shift out lowbyte
shiftOut(dataPin, clock, MSBFIRST, data);

// Or do this for LSBFIRST serial
data = 500;
// shift out lowbyte
shiftOut(dataPin, clock, LSBFIRST, data); 
// shift out highbyte
shiftOut(dataPin, clock, LSBFIRST, (data >> 8));
 


דוגמה
תוכלו לראות את המעגל הנלווה לדוגמה זו במדריך שליטה על אוגר הזזה 74HC595 - TODO.
קוד: בחר הכל
//**************************************************************//
//  Name    : shiftOutCode, Hello World                         //
//  Author  : Carlyn Maw,Tom Igoe                               //
//  Date    : 25 Oct, 2006                                      //
//  Version : 1.0                                               //
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                            //
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;

void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //count up routine
  for (int j = 0; j < 256; j++) {
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j); 
    //return the latch pin high to signal chip that it
    //no longer needs to listen for information
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}



ראו גם:
()shiftIn
SPI - TODO

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של ()shiftOut לפי רישיון Creative Commons Attribution-ShareAlike 3.0.