أولا صعب البرمجة بدون دائرة
ثانيا عند وصول نغمة يظهر خرج على البورت و نظرا لسرعة الميكرو سيقرأه 4 مرات على انه الأربع أرقام و يعطى دوما إدخال خاطئ
ثالثا سيستمر فى قراءة أصفار عند عدم وصول رقم و هذا غير منطقى
رابعا الأرقام المطلوبة هى 2 ثم 5 ثم 3 ثم 8 و بعضها مشترك فى ذات البت لذا يجب أن يكوت الأمر شاملا الأربع أطراف مثلا
كود:
if (digitalRead(input1)==HIGH && digitalRead (input2) == HIGH) && digitalRead (input3) == LOW && digitalRead (input4) == LOW
و سيكرر لباقى الأرقام الأربعة وهذا بطئ لأنه فى المرات الأربع سيقرأ كل طرف منها مرة أخرى
الأفضل أن نحسب قيمة الدخل ثم نضع الشرط على القيمة مثلا
كود:
Byte InputValue =0;
.
.
.
)if(digitalRead(input1)==HIGH
{InputValue=1}
)if (digitalRead(input2)==HIGH
{InputValue=InputValue+2}
)if (digitalRead(input3)==HIGH
{InputValue=InputValue+4
if (digitalRead(input4)==HIGH
{InputValue=InputValue+8
معذرة أجد صعوبة فى وضع الأقواس المناسبة فى مكانها الصحيح و يجب أن اعيد كتابة كل شيء فى برنامج خارجى ثم نسخه هنا
أيضا لتجنب قراءة ما لا يجب قراءته هناك طرف فى المتكاملة يسمى ESt وهو يصبح High فقط عندما تكتشف المتكاملة أن هناك ترددات صحيحة لرقم صحيح موجود على الدخول و هذا يتيح لك أن تقرأى هذا الرقم فور ارتفاع هذا الطرف إلى واحد ثم تنتظرى عودته للصفر حتى تكون الدائرة و البرنامج جاهزا لإستقبال الرقم الثانى فى 2 LOOP الأولى تنتظر الطرف أن يصبح High ثم يقرأ الرقم ثم ينتظر فى الثانية أن يصبح Low للبدأ من جديد فى الرقم الثانى
هكذا يمكنك إعداد 4 أرقام أو مصفوفة لوضع النتائج بها