פירוט שפת תכנות - תזמון - ()delay

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

פירוט שפת תכנות - תזמון - ()delay

הודעהעל ידי Alex » ה' יולי 27, 2017 9:03 am

פונקציית ()delay עוצרת את ריצת התוכנית לזמן שציינתם (במילי-שניות). בשנייה אחת יש 1000 מילי-שניות.


תחביר
קוד: בחר הכל
delay(ms)

פרמטרים:
ms - מספר המילי-שניות שהתוכנית תיעצר - מסוג unsigned long

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


דוגמה
קוד: בחר הכל
int ledPin = 13;                 // LED connected to digital pin 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}


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

יש דברים שכן פועלים תוך כדי ההמתנה של פונקציית ()delay בגלל שהפונקציה לא מבטלת את הפסיקות (interrupts). תקשורת הטורית על קו ה-Rx מוקלטת, תפעול קווי ה-PWM ממשיך (פונקציית ()analogWrite) וגם מערכת הפסיקות (interrupts) ממשיכה לפעול.


ראו גם:
()millis
()micros
()delayMicroseconds
מדריך: Blink בלי שימוש ב-delay - TODO

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


עמוד זה הוא תרגום של ()delay לפי רישיון Creative Commons Attribution-ShareAlike 3.0.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7459
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]