Menu
CoddyTech

מהירות הבהוב דרך Serial

חלק מהיחידה קלטים במסלול ה-Arduino של Coddy. שיעור 17 מתוך 22.

הקלידו 250 והלוח מקבל שלושה תווים, '2', '5' ו־'0', ואחריהם תו שורה חדשה. Serial.parseInt() קוראת ספרות והופכת אותן למספר 250, ועוצרת בתו הראשון שאינו ספרה.

יש לה מלכוד: כשלא מגיעה אף ספרה, parseInt() ממתינה עד שנייה אחת לספרה, ואז מחזירה 0. זה קורה אחרי כל מספר שמקלידים: תו השורה החדשה שסיים את המספר עדיין ממתין, לכן Serial.available() גדול שוב מ־0, ו־parseInt() לא מוצאת ספרה, ממתינה שנייה ומחזירה 0.

לכן התייחסו ל־0 כאל "שום דבר מועיל" והשאירו את הערך הישן:

if (Serial.available() > 0) {
  int n = Serial.parseInt();
  if (n > 0) {
    wait = n;
  }
}

תראו שה־LED מושהה למשך שנייה אחרי כל מספר שמקלידים: זו parseInt() שממתינה.

challenge icon

אתגר

בינוני

הנורית בפין 13 מהבהבת: דולקת למשך wait אלפיות השנייה וכבויה למשך wait אלפיות השנייה, כאשר wait מתחיל ב־500. אפשר לשנות את המהירות באמצעות צג ה־Serial:

  • כשממתינים תווים, קרא מספר באמצעות Serial.parseInt()
  • אם הוא גדול מ־0, שמור אותו ב־wait

לחץ על Run, שלח 100 מצג ה־Serial, ואז לחץ על Check.

נסו בעצמכם

const int ledPin = 13;

int wait = 500;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // כשיש תווים שממתינים, קרא מספר לתוך wait (אם הוא גדול מ־0)
  digitalWrite(ledPin, HIGH);
  delay(wait);
  digitalWrite(ledPin, LOW);
  delay(wait);
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה קלטים

תרגלו בעצמכם: Arduino אונליין