חיישן חניה: מרחק
חלק מהיחידה פרויקטים במסלול ה-Arduino של Coddy. שיעור 9 מתוך 24.
במכוניות יש חיישני חניה שמצפצפים מהר יותר ככל שנוסעים לאחור ומתקרבים לקיר. בפרויקט הזה נבנה אחד כזה: חיישן מרחק, שלוש נורות אזהרה, זמזם ומסך, כולם כבר מחוברים. השלב הראשון הוא המדידה.
כמו ביחידה Displays and Sensors, פולס של 10 מיקרו־שניות ב־TRIG שולח צליל, ו־pulseIn(echoPin, HIGH) מחזירה כמה זמן ECHO נשאר ב־HIGH, במיקרו־שניות. לצליל לוקח כ־58 מיקרו־שניות לעבור סנטימטר אחד ולחזור, לכן המרחק בס״מ הוא הזמן הזה חלקי 58 (כמו duration * 0.034 / 2). נשמור את כל זה בפונקציה אחת:
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}נמדוד בערך עשר פעמים בשנייה: החיישן צריך מנוחה קצרה בין צלילים, אחרת הד עלול להתעכב מהצליל הקודם ולהיחשב בטעות לצליל החדש.
אתגר
קלהחיישן משתמש ב־TRIG בפין 9 וב־ECHO בפין 10:
- כתוב את
readDistance(): את פולס ההפעלה, אתpulseIn()ואת הזמן חלקי 58 - בתוך
loop(), הדפס את המרחק באמצעותSerial.println()כל 100 ms
לחץ על Run, גרור את המרחק על החיישן, ואז לחץ על Check.
נסו בעצמכם
// חיישן המרחק
const int trigPin = 9;
const int echoPin = 10;
// שלח פולס והחזר את המרחק ב-cm.
long readDistance() {
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
// הדפס את המרחק, ואז המתן 100 ms
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
תרגלו בעצמכם: Arduino אונליין