حصر القيم ضمن النطاق
جزء من قسم المدخلات في رحلة Arduino على Coddy. الدرس 11 من 22.
أحيانًا ينبغي احتساب جزء فقط من النطاق. لنفترض أن الجزء الأوسط فقط من مدى حركة المقبض هو المهم، أي القراءات من 200 إلى 800، وينبغي أن يقابل ذلك من 0 إلى 100 بالمئة:
int percent = map(reading, 200, 800, 0, 100);يعطي ذلك 0 عند 200 و100 عند 800، لكن map() لا يتوقف عند نهايتي النطاق. القراءة 0 تعطي -33، و1023 تعطي 137. لا معنى لنسبة مئوية أقل من 0 أو أعلى من 100.
تُبقي constrain(x, low, high) العدد ضمن نطاق: أي قيمة أقل من low تصبح low، وأي قيمة أعلى من high تصبح high، وكل ما بينهما يبقى كما هو.
percent = constrain(percent, 0, 100);التحدي
سهلالمقبض موصول بـ A0. اطبع نسبة مئوية بحيث تُحوَّل القراءات من 200 إلى 800 إلى القيم من 0 إلى 100:
- حوِّل القراءة من النطاق 200 إلى 800 إلى النطاق 0 إلى 100
- أبقِها بين 0 و100 باستخدام
constrain() - اطبعها، ثم انتظر 100 ms
اضغط على Run، وأدِر المقبض إلى أقصى اليمين ثم إلى أقصى اليسار، ثم اضغط على Check.
جرّب بنفسك
void setup() {
Serial.begin(9600);
}
void loop() {
int reading = analogRead(A0);
// حوّل النطاق 200..800 إلى 0..100، وأبقِ القيمة ضمن 0..100، واطبعها، ثم انتظر 100 ms
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المدخلات
2المدخلات التناظرية
قراءة مقبض التحكمتحويل قراءة المقبض إلى فولتالتحويل إلى نسبة مئويةحصر القيم ضمن النطاقعتبة المقبضمصباح ليلي تلقائيدبوس مفتاح مستشعر الضوءتدرّب بنفسك: Playground لـ Arduino