Menu
CoddyTech

זווית סרוו דרך Serial

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

הזרוע יכולה לקבל פקודות גם מהצג הטורי. מקלידים זווית ולוחצים על Enter; Serial.parseInt() קוראת את המספר:

if (Serial.available() > 0) {
  int angle = Serial.parseInt();
  Serial.read();  // תו השורה החדשה שאחרי המספר
  // השתמש ב-angle
}

תו השורה החדשה שאחרי המספר נשאר וממתין. בהרצה הבאה של loop(), הפונקציה parseInt() לא תמצא ספרות, תמתין שנייה ותחזיר 0. התעלמות מה-0 הזה עבדה עבור מהירות ההבהוב, אבל 0 הוא זווית אמיתית. לכן קוראים את תו השורה החדשה ומסירים אותו באמצעות Serial.read() אחד מיד אחרי המספר.

מישהו עלול גם להקליד מספר שאינו זווית. arm.write() קוראת כל מספר מ-544 ומעלה כאורך פעימה במיקרו-שניות, כך ש-1000 ימקם את הזרוע קרוב ל-45 מעלות. constrain() שומרת קודם על הזווית בטווח שבין 0 ל-180:

angle = constrain(angle, 0, 180);  // העבר לו את המשתנה, לא את parseInt()
challenge icon

אתגר

בינוני

הזיזו את הסרוו לזווית שהוקלדה בצג הטורי:

  • כשמגיע מספר, קראו אותו באמצעות Serial.parseInt(), ואז קראו את התו החדש כדי להסיר אותו (גם 0 היא זווית)
  • הגבילו אותו לטווח שבין 0 ל־180 באמצעות constrain()
  • הזיזו את הזרוע והדפיסו את הזווית כך: Angle: 45

לחצו על Run, שלחו 45 מצג הטורי, ואז לחצו על Check.

נסו בעצמכם

#include <Servo.h>

Servo arm;

void setup() {
  arm.attach(9);
  arm.write(90);
  Serial.begin(9600);
}

void loop() {
  // כשמגיע מספר: קרא אותו, דלג על תו השורה החדשה,
  // השאר אותו בין 0 ל-180, הזז את הזרוע והדפס אותו
}
quiz iconבחנו את עצמכם

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

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

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