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

أنماط الأرقام في البايتات

جزء من قسم الشاشات والمستشعرات في رحلة Arduino على Coddy. الدرس 2 من 24.

سبعة أسطر من digitalWrite() لكل رقم تعني الكثير من التعليمات البرمجية. خزّن كل رقم على هيئة نمط: بت واحد لكل مقطع، 1 للإضاءة و0 للإطفاء.

الـbyte عدد صحيح من 0 إلى 255 مكوّن من ثمانية بتات. اكتبه بالنظام الثنائي مع 0b في المقدمة. اقرأ البتات من اليمين: البت الأخير هو المقطع a، والذي يسبقه هو b، وهكذا حتى g.

//           gfedcba
byte one = 0b0000110;  // b وc: القيمة 1

تتسع المصفوفة لعشرة أنماط، لذا فإن digits[3] هو نمط الرقم 3. تقرأ bitRead()، من عدّاد النظام الثنائي، بتًا واحدًا منه، بدءًا من اليمين والعد من 0:

bitRead(0b0000110, 0)  // 0: المقطع a مطفأ
bitRead(0b0000110, 1)  // 1: المقطع b مضاء

يمكن لدالة المرور على البتات السبعة باستخدام حلقة for وضبط دبوس كل مقطع، لذا فإن رسم أي رقم لا يتطلب سوى استدعاء واحد: showDigit(7);

challenge icon

التحدي

متوسط

يحتوي الكود المبدئي على جميع الأنماط باستثناء 4 و7، وتعرض loop() الأرقام 1 و4 و7.

  • أكمل الرقم 4 (المقاطع b وc وf وg) والرقم 7 (a وb وc)
  • اكتب showDigit(n): لكل i من 0 إلى 6، اضبط segmentPins[i] على LOW عندما تكون قيمة البت i في digits[n] هي 1، وعلى HIGH عندما تكون 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
  0b0000000,  // 4: أكمل القيمة
  0b1101101,  // 5
  0b1111101,  // 6
  0b0000000,  // 7: أكمل القيمة
  0b1111111,  // 8
  0b1101111   // 9
};

void showDigit(int n) {
  // أضئ مقاطع digits[n] وأطفئ المقاطع الأخرى
}

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}

void loop() {
  showDigit(1);
  delay(1000);
  showDigit(4);
  delay(1000);
  showDigit(7);
  delay(1000);
}
quiz iconاختبر نفسك

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

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

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