لعبة الرماية باستخدام الاردوينو

مبتدئ

image_pdf

الكود البرمجي

#define aPin 2 
#define bPin 1 
#define cPin 4 
#define dPin 5 
#define ePin 6 
#define fPin 7 
#define gPin 8 

#define c1Pin 9 // Common pin for digit 1
#define c2Pin 10 // Common pin for digit 2
#define c3Pin 11 // Common pin for digit 3
#define c4Pin 12 // Common pin for digit 4

#define c1 A0
#define c2 A1
#define c3 A2
#define bt_reset A3
long Counter=0;
int flag1=0, flag2=0, flag3=0, timer=0;
int Common = 0; //<Common=1; for Common anode> <Common=0; for Common cathode>
int On, Off, Off_C; 
int DTime = 4; // Display timer

void setup(){ // put your setup code here, to run once

pinMode(c1, INPUT);
pinMode(c2, INPUT);
pinMode(c3, INPUT);
pinMode(bt_reset, INPUT);

pinMode(aPin, OUTPUT);
pinMode(bPin, OUTPUT);
pinMode(cPin, OUTPUT);
pinMode(dPin, OUTPUT);
pinMode(ePin, OUTPUT); 
pinMode(fPin, OUTPUT);
pinMode(gPin, OUTPUT);
pinMode(c1Pin, OUTPUT);
pinMode(c2Pin, OUTPUT);
pinMode(c3Pin, OUTPUT);
pinMode(c4Pin, OUTPUT);


if(Common==1){On=0, Off=1, Off_C=0;} //for Common anode
else{On=1, Off=0, Off_C=1;} //for Common cathode

// Indicate that system is ready
for (int i = 9; i >=0; i--) {
showNumber(i);
digitalWrite(c1Pin, Common);
digitalWrite(c2Pin, Common);
digitalWrite(c3Pin, Common);
digitalWrite(c4Pin, Common);
delay(1000); 
} 
}

void loop(){

if(digitalRead (c1) == 1){
if(flag1==0){ flag1=1;
Counter = Counter+30;
if(Counter>9999){Counter=0;} 
}}
else{flag1=0;}

if(digitalRead (c2) == 1){ 
if(flag2==0){ flag2=1;
Counter = Counter+20;
if(Counter<0){Counter=9999;} 
} 
}else{flag2=0;}
if(digitalRead (c3) == 1){ 
if(flag2==0){ flag2=1;
Counter = Counter+10;
if(Counter<0){Counter=9999;} 
} 
}else{flag3=0;}

if(digitalRead (bt_reset) == 1){ 
Counter=0;
if(timer<200){timer=timer+1;}
if(timer==200){

} 
}else{timer=0;}


showNumber((Counter/1000)%10);
digitalWrite(c1Pin, Common);
delay(DTime);
digitalWrite(c1Pin, Off_C);

showNumber((Counter/100)%10);
digitalWrite(c2Pin, Common);
delay(DTime);
digitalWrite(c2Pin, Off_C);

showNumber((Counter/10)%10);
digitalWrite(c3Pin, Common);
delay(DTime);
digitalWrite(c3Pin, Off_C);

showNumber(Counter%10);
digitalWrite(c4Pin, Common);
delay(DTime);
digitalWrite(c4Pin, Off_C);

}


void showNumber(int x){

switch(x){
case 1: one(); break;
case 2: two(); break;
case 3: three(); break;
case 4: four(); break;
case 5: five(); break;
case 6: six(); break;
case 7: seven(); break;
case 8: eight(); break;
case 9: nine(); break;
default: zero(); break;
}
}

void one(){
digitalWrite( aPin, Off); // 
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // |
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, Off);
digitalWrite( gPin, Off);
}

void two(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | 
digitalWrite( cPin, Off); // ____|
digitalWrite( dPin, On); // | 
digitalWrite( ePin, On); // |____
digitalWrite( fPin, Off);
digitalWrite( gPin, On);
}

void three(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // ____|
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, Off); 
digitalWrite( gPin, On);
}

void four(){
digitalWrite( aPin, Off); // 
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void five(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, Off); // |
digitalWrite( cPin, On); // |____
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, On); 
digitalWrite( gPin, On);
}

void six(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, Off); // |
digitalWrite( cPin, On); // |____
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void seven(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // |
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, Off);
digitalWrite( gPin, Off);
}

void eight(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On); 
digitalWrite( gPin, On); 
}

void nine(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, On); 
digitalWrite( gPin, On);
}

void zero(){ 
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // | |
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On); 
digitalWrite( gPin, Off); 
}

 شرح الكود البرمجي

نعرف منافذ شاشة السبع مقاطع اربع أرقام

#define aPin 2
#define bPin 1
#define cPin 4
#define dPin 5
#define ePin 6
#define fPin 7
#define gPin 8
#define c1Pin 9 // Common pin for digit 1
#define c2Pin 10 // Common pin for digit 2
#define c3Pin 11 // Common pin for digit 3
#define c4Pin 12 // Common pin for digit 4

نعرف الخطوط الثلاثة الخاسة بحلقات هدف الرماية

#define c1 A0
#define c2 A1
#define c3 A2

نعرف زر تصفير حساب النقط

#define bt_reset A3

نعرف متغير لحساب النقاط باسم counter

long Counter=0;

نعرف متغير باسم common نعطيه قيمة 1 اذا كان شاشة السبع مقاطع اربع أرقاب ذات قطب موجب مشترك و 0 اذا كانت ذات قطب سابي مشترك

int flag1=0, flag2=0, flag3=0, timer=0;
int Common = 0; //<Common=1; for Common anode> <Common=0; for Common cathode>
int On, Off, Off_C;
int DTime = 4; // Display timer

في دالة void setup نعرف منافذ الدخل والخرج

void setup(){ // put your setup code here, to run once

pinMode(c1, INPUT);
pinMode(c2, INPUT);
pinMode(c3, INPUT);
pinMode(bt_reset, INPUT);

pinMode(aPin, OUTPUT);
pinMode(bPin, OUTPUT);
pinMode(cPin, OUTPUT);
pinMode(dPin, OUTPUT);
pinMode(ePin, OUTPUT);
pinMode(fPin, OUTPUT);
pinMode(gPin, OUTPUT);
pinMode(c1Pin, OUTPUT);
pinMode(c2Pin, OUTPUT);
pinMode(c3Pin, OUTPUT);
pinMode(c4Pin, OUTPUT);


if(Common==1){On=0, Off=1, Off_C=0;} //for Common anode
else{On=1, Off=0, Off_C=1;} //for Common cathode

في بداية تشغيل البرنامج و للتأكد من أن جميع وحدات شاشة العرض في جميع الأرقام تعمل بشكل صحيح يتم اظهار عد تنازلي على الشاشة من 9 الى 0 على كل رقم

for (int i = 9; i >=0; i--) {
showNumber(i);
digitalWrite(c1Pin, Common);
digitalWrite(c2Pin, Common);
digitalWrite(c3Pin, Common);
digitalWrite(c4Pin, Common);
delay(1000);
}
}

في بداية دالة voide loop نحدد الشرط اذا قرأ الأردوينو المنفذ الخاص بالدائرة الداخلية على أنه 1 يتم اضافة قيمة 30 نقطة لمتغير النقاط counter

void loop(){

if(digitalRead (c1) == 1){
if(flag1==0){ flag1=1;
Counter = Counter+30;
if(Counter>9999){Counter=0;}
}}
else{flag1=0;}

اذا قرأ الأردوينو اشارة 1 من المنفذ A1 سيتم اضافة 20 نقطة

if(digitalRead (c2) == 1){
if(flag2==0){ flag2=1;
Counter = Counter+20;
if(Counter<0){Counter=9999;}
}

اذا قرأ الأردوينو اشارة 1 من المنفذ A2 سيتم اضافة 10 نقطة

}else{flag2=0;}
if(digitalRead (c3) == 1){
if(flag2==0){ flag2=1;
Counter = Counter+10;
if(Counter<0){Counter=9999;}
}
}else{flag3=0;}

اذا قرأ الأردوينو اشارة 1 من المنفذ A3 تصفير عداد النقاط أي عند الضغط على ضغاط التحكم

if(digitalRead (bt_reset) == 1){
Counter=0;
if(timer<200){timer=timer+1;}
if(timer==200){

}
}else{timer=0;}

الدوال التالية لتعريف الأرقام من 0- 9


void one(){
digitalWrite( aPin, Off); //
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // |
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, Off);
digitalWrite( gPin, Off);
}

void two(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // |
digitalWrite( cPin, Off); // ____|
digitalWrite( dPin, On); // |
digitalWrite( ePin, On); // |____
digitalWrite( fPin, Off);
digitalWrite( gPin, On);
}

void three(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // ____|
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, Off);
digitalWrite( gPin, On);
}

void four(){
digitalWrite( aPin, Off); //
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void five(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, Off); // |
digitalWrite( cPin, On); // |____
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void six(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, Off); // |
digitalWrite( cPin, On); // |____
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void seven(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // |
digitalWrite( cPin, On); // |
digitalWrite( dPin, Off); // |
digitalWrite( ePin, Off); // |
digitalWrite( fPin, Off);
digitalWrite( gPin, Off);
}

void eight(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void nine(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // |____|
digitalWrite( dPin, On); // |
digitalWrite( ePin, Off); // ____|
digitalWrite( fPin, On);
digitalWrite( gPin, On);
}

void zero(){
digitalWrite( aPin, On); // ____
digitalWrite( bPin, On); // | |
digitalWrite( cPin, On); // | |
digitalWrite( dPin, On); // | |
digitalWrite( ePin, On); // |____|
digitalWrite( fPin, On);
digitalWrite( gPin, Off);
}
X
Product added to the cart