🌞 ماموریت ۹۶: ردیاب خورشید
دو LDR با مقاومت ۱۰k روی A0 و A1. اختلافشان را حساب کن و سروو را یک درجه به سمت روشنتر بچرخون (با یه حاشیهی بیحسی).
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ دو تا LDR
- ☐ یه سروو
- ☐ هر دو سنسور خونده بشن
- ☐ سروو چرخونده بشه
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- حسگر نور (LDR) × ۲
- مقاومت 220Ω × ۲
- سروو موتور
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (VCC5) ⟷ Photoresistor (LDR) (A)
- Photoresistor (LDR) (B) ⟷ Arduino Uno (A0)
- Arduino Uno (A0) ⟷ مقاومت 220Ω (PIN1)
- مقاومت 220Ω (PIN2) ⟷ Arduino Uno (GND1)
- Arduino Uno (VCC5) ⟷ Photoresistor (LDR) (A)
- Photoresistor (LDR) (B) ⟷ Arduino Uno (A1)
- Arduino Uno (A1) ⟷ مقاومت 220Ω (PIN1)
- مقاومت 220Ω (PIN2) ⟷ Arduino Uno (GND1)
- Arduino Uno (VCC5) ⟷ سروو موتور (VCC)
- سروو موتور (GND) ⟷ Arduino Uno (GND2)
- Arduino Uno (D9) ⟷ سروو موتور (SIG)
کد
// Sun tracker: two LDRs, the servo turns toward the brighter one
#include <Servo.h>
Servo panel;
int angle = 90;
const int DEADBAND = 30; // ignore small differences, so it does not shake
void setup() {
Serial.begin(9600);
panel.attach(9);
panel.write(angle);
}
void loop() {
int left = analogRead(A0);
int right = analogRead(A1);
int diff = left - right;
if (diff > DEADBAND && angle < 180) angle++;
if (diff < -DEADBAND && angle > 0) angle--;
panel.write(angle);
Serial.print(left);
Serial.print(" ");
Serial.println(right);
delay(15);
}
ماموریتهای مشابه
🎯
ماموریت ۹۵: کنترل تناسبی سروو
🛗
ماموریت ۹۷: آسانسور با ماشین حالت
💾
ماموریت ۹۴: ذخیرهی تنظیمات در حافظهی فلش
🥤
ماموریت ۹۸: دستگاه فروش خودکار
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها