سرعة الوميض عبر الإدخال التسلسلي
جزء من قسم المدخلات في رحلة Arduino على Coddy. الدرس 17 من 22.
اكتب 250، وستستقبل اللوحة ثلاثة أحرف، '2' و'5' و'0'، ثم محرف السطر الجديد. تقرأ Serial.parseInt() الأرقام وتحولها إلى العدد 250، وتتوقف عند أول محرف ليس رقمًا.
لكن هناك مشكلة: عندما لا يصل أي رقم، تنتظر parseInt() وصول رقم لمدة تصل إلى ثانية واحدة، ثم تُرجع 0. يحدث ذلك بعد كل رقم تكتبه: فما زال محرف السطر الجديد الذي أنهى الرقم في الانتظار، لذا تصبح قيمة Serial.available() أكبر من 0 مرة أخرى، ولا تجد parseInt() أي رقم، فتنتظر ثانية ثم تُرجع 0.
لذا اعتبر أن القيمة 0 تعني «لا شيء مفيد»، واحتفظ بالقيمة القديمة:
if (Serial.available() > 0) {
int n = Serial.parseInt();
if (n > 0) {
wait = n;
}
}ستلاحظ أن مؤشر LED يتوقف لثانية بعد كل رقم تكتبه: فهذه هي مدة انتظار parseInt().
التحدي
متوسطيومض مصباح LED على المنفذ 13، مضاءً لمدة wait مللي ثانية ومطفأً لمدة wait مللي ثانية، وتبدأ قيمة wait من 500. دع شاشة Serial تغيّر السرعة:
- عند انتظار أحرف، اقرأ رقمًا باستخدام
Serial.parseInt() - إذا كان أكبر من 0، فخزّنه في
wait
اضغط على Run، وأرسل 100 من شاشة Serial، ثم اضغط على Check.
جرّب بنفسك
const int ledPin = 13;
int wait = 500;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// عندما تكون هناك أحرف بانتظار القراءة، اقرأ عددًا في wait (إذا كان أكبر من 0)
digitalWrite(ledPin, HIGH);
delay(wait);
digitalWrite(ledPin, LOW);
delay(wait);
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المدخلات
تدرّب بنفسك: Playground لـ Arduino