זווית סרוו דרך 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()אתגר
בינוניהזיזו את הסרוו לזווית שהוקלדה בצג הטורי:
- כשמגיע מספר, קראו אותו באמצעות
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, הזז את הזרוע והדפס אותו
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פלטים
תרגלו בעצמכם: Arduino אונליין