الأهداف

في النشاط التالي سوف نصنع عدّاد من 0 إلى 15 و يكون العد في النظام الثنائي بالإستعانة بأربعة صمامات لاد، بحيث نمثل الرقم 0 بلد منطفئة و الرقم واحد بلد متوهجة.

للتذكير لاحظ الجدول التالي:

ما يلزمناdecbin

  • لوحة أردوينو
  • لوحة تجارب
  • 04 مقاومات 220 Ω (أحمر، أحمر، أحمر)
  • 04 صمامات لد 
  • أسلاك توصيل.

قم بانشاء التركيب التالي

bincount

المخارج المستعملة هي:

المخرج «Pin 2» لتمثيل الموضع 20 و الذي يساوي 1

المخرج «Pin 3» لتمثيل الموضع 21 و الذي يساوي 2

المخرج «Pin 4» لتمثيل الموضع 22 و الذي يساوي 4

المخرج «Pin 5» لتمثيل الموضع 23 و الذي يساوي 8.

إفتح واجهة التطوير و حرر نص البرنامج التالي:

int ledPin[] = {2,3,4,5};

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

void loop()
{
    for (byte counter =0;counter<=15; counter++){
      displayBinary(counter);
      delay(500);
  }
}

void displayBinary(byte numToShow){
    for (int i =0;i<4;i++){
      if (bitRead(numToShow, i)==1){
          digitalWrite(ledPin[i], HIGH);
      }
      else{
          digitalWrite(ledPin[i], LOW);
          }
      }
}

بقم بفحص نص البرنامج ثم إرفعه إلى اللوحة.

لقد أنجزت عداد من 0 إلى 15. بدأنا في البرنامج بتحديد المنافذ الرقمية (PIN2 – PIN5) كمخارج و قمنا بوصلها عبر مقاومات تحديد التيار للصمامات.

في مشروعنا أنشأنا الدالة displayBinary(counter) و التي تقوم بتحويل العدد العشري المحصور بين 0 و 15 (لاحظ الحلقة) إلى نظيره في النظام الثنائي.

تستعين الدالة السابقة بالدالة المُعرفة في برنامج أردوينو و قد رأينا عملها بالتفصيل في النشاط السابق.

bitRead()

تمرين

أعد كتابة البرنامج السابق كي يقوم بالعد العكسي أي من 15 إلى 0.

قم بدراسة البرنامج التالي مع تجريبه

int ledPin[] = {2,3,4,5};

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

void loop()
{
	byte nums[] = {1, 2, 4, 8, 4, 2, 1};
	for (byte i = 0; i<7;i++) {
		displayBinary(nums[i]);
		delay(80);
	}
}

void displayBinary(byte numToShow){
	for (int i =0;i<4;i++){
		if (bitRead(numToShow, i)==1){
			digitalWrite(ledPin[i], HIGH);
		}
		else{
			digitalWrite(ledPin[i], LOW);
		}
	}
}

قم يتغيير السطرين 12 و 13 إلى التالي و لاحظ نمط العرض. ألا يذكرك هذا البرنامج بشيء ؟

byte nums[] = {0, 1, 3, 6, 4, 12, 8, 12, 4, 6, 3, 1, 0};
for (byte i = 0; i<13;i++)

قم بالاستعانة بالجدول السابق (عشري / ثنائي) لإنشاء أنماط مختلفة من إبداعك.