العدّ التنازلي حتى الصفر
جزء من قسم الشاشات والمستشعرات في رحلة Arduino على Coddy. الدرس 4 من 24.
كما في حركة مسح محرك السيرفو، يمكن لحلقة for أن تعدّ تنازليًا: ابدأ من عدد كبير، واستمر ما دام العدد 0 أو أكثر، وأنقصه بمقدار واحد في كل مرة باستخدام n--:
for (int n = 5; n >= 0; n--) {
showDigit(n);
delay(1000);
}يعرض هذا الأعداد 5 و4 و3 و2 و1 و0. باستخدام n > 0 سيتوقف عند 1 ولن يعرض 0 أبدًا.
ينبغي أن يحدث العدّ التنازلي مرة واحدة، لا مرارًا وتكرارًا. يُنفَّذ الكود في setup() مرة واحدة، لذا ضع العدّ التنازلي هناك، وما يحدث عند الوصول إلى 0 بعده. يمكن أن تبقى loop() فارغة، وسيظل العدد 0 ظاهرًا على الشاشة.
التحدي
سهلالجرس متصل بالمنفذ 9. أنشئ عدًّا تنازليًا للإطلاق:
- في
setup()، عُدّ تنازليًا من 5 إلى 0، رقمًا واحدًا كل ثانية - عند 0، شغّل الجرس باستخدام
tone(buzzerPin, 880, 1000) - اترك الرقم 0 ظاهرًا على الشاشة
اضغط على Run، ثم Check.
جرّب بنفسك
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// نمط واحد لكل رقم، يُقرأ من اليمين: البت الأخير هو المقطع a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b1100110, // 4
0b1101101, // 5
0b1111101, // 6
0b0000111, // 7
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
for (int i = 0; i < 7; i++) {
if (bitRead(digits[n], i) == 1) {
digitalWrite(segmentPins[i], LOW); // مضاء
} else {
digitalWrite(segmentPins[i], HIGH); // مطفأ
}
}
}
const int buzzerPin = 9;
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// عُدّ تنازليًا من 5 إلى 0 هنا، ثم شغّل الجرس
}
void loop() {
}
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الشاشات والمستشعرات
1شاشات العرض ذات الأجزاء السبعة
شاشة العرض ذات الأجزاء السبعةأنماط الأرقام في البايتاتالعدّ على الشاشةالعدّ التنازلي حتى الصفرمحاكي رمي النردتدرّب بنفسك: Playground لـ Arduino