Menu
CoddyTech
flag Ar iconالعربيةdown icon

حصر القيم ضمن النطاق

جزء من قسم المدخلات في رحلة 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);
challenge icon

التحدي

سهل

المقبض موصول بـ 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
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المدخلات

تدرّب بنفسك: Playground لـ Arduino