חיישן חניה: צפצופים
חלק מהיחידה פרויקטים במסלול ה-Arduino של Coddy. שיעור 11 מתוך 24.
חיישן חניה גם מדבר וגם מציג: ככל שהקיר קרוב יותר, כך הוא מצפצף מהר יותר, עד שהוא משמיע צליל רציף אחד שמשמעותו לעצור. הזמזם מחובר לפין 8.
המרווח בין הצפצופים נקבע לפי המרחק: המרחק כפול 10, במילישניות. במרחק 70 ס"מ צפצוף כל 700 ms, ובמרחק 20 ס"מ צפצוף כל 200 ms. טיימר millis() קובע מתי הצפצוף הבא אמור להישמע:
if (millis() - lastBeep >= cm * 10) {
lastBeep = millis();
tone(buzzerPin, 1000, 50); // צפצוף של 50 ms
}יש עוד שני מקרים. במרחק קטן מ־10 ס"מ, השמע tone(buzzerPin, 1000) ללא משך: הצליל יימשך עד שמשהו יעצור אותו. במרחק של 100 ס"מ או יותר, שמור על שקט וקרא ל־noTone(buzzerPin) כדי לעצור גם צליל רציף שנותר מפעולה קודמת.
אתגר
בינוניהוסיפו את הצפצופים:
- 100 ס״מ או יותר: ללא צליל (קראו ל־
noTone()) - 10 עד 99 ס״מ: צפצוף של 50 ms בתדירות 1000 Hz בכל
cm * 10ms, בתזמון באמצעותmillis() - פחות מ־10 ס״מ: צליל רציף בתדירות 1000 Hz
השאירו את האורות ואת ההדפסה. לחצו על Run, קרבו את העצם, ואז לחצו על Check.
נסו בעצמכם
// חיישן המרחק
const int trigPin = 9;
const int echoPin = 10;
// נורות האזהרה
const int greenPin = 6;
const int yellowPin = 7;
const int redPin = 13;
// שלח פולס והחזר את המרחק ב-cm.
long readDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration / 58;
}
// ירוק כשהדרך פנויה, צהוב כשקרובים, אדום כשקרובים מדי.
void showLights(long cm) {
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
if (cm >= 100) {
digitalWrite(greenPin, HIGH);
} else if (cm >= 30) {
digitalWrite(yellowPin, HIGH);
} else {
digitalWrite(redPin, HIGH);
}
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(redPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
long cm = readDistance();
Serial.println(cm);
showLights(cm);
delay(100);
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
תרגלו בעצמכם: Arduino אונליין