🚗 درس 44: سنسور پارک ماشین
فاصله را به ریتم بوق تبدیل کن — همان چیزی که در ماشین میشنوی.
سطح: پیشرفته · زمان: حدود 13 دقیقه · مفاهیم: اولتراسونیک، millis، ریتم
قدمهای این درس
- ایده: فاصله = ریتم
- قدم ۱ — چرا اینجا delay جواب نمیدهد
- قدم ۲ — بازخورد دیداری هم بده
- چالش: میانگین بگیر
نمونهای از کد این درس
const int trig = 9, echo = 10, buzzer = 8;
unsigned long lastBeep = 0;
bool beepOn = false;
long readDistance() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
long d = pulseIn(echo, HIGH, 30000);
return d == 0 ? 400 : d / 58;
}
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
long cm = readDistance();
Serial.print("fasele:");
Serial.println(cm);
long gap;
if (cm > 100) gap = 0; // خبری نیست
else if (cm > 50) gap = 700;
else if (cm > 25) gap = 350;
else if (cm > 10) gap = 150;
else gap = -1; // ممتد
if (gap == 0) {
noTone(buzzer);
} else if (gap == -1) {
tone(buzzer, 2000);
} else if (millis() - lastBeep >= gap) {
lastBeep = millis();
beepOn = !beepOn;
if (beepOn) tone(buzzer, 1500); else noTone(buzzer);
}
delay(50);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓