الحصالة الذكية باستخدام الاردوينو ومستشعر تجنب الحواجز

مبتدئ

image_pdf

مقدمة

في هذا الدرس ستتعلم كيف تصنع حصالة ذكية تقوم بحساب العملات المعدنية باستخدام الاردوينو ومستشعر تجنب الحواجز بالأشعة تحت الحمراء.coin-sorting-counting-machine-arduino

المواد والأدوات

الحصالة الذكية

اردوينو اونو

الحصالة الذكية

مستشعر تجنب الحواجز بالأشعة تحت الحمراء

arduino-usb-lead-blue

x1 سلك الاردوينو

حصالة ذكية

شاشة كرستالية (LCD 2×16)

حصالة ذكية

1× لوحة تجارب – حجم كبير

حصالة ذكية

 1× مقاومة متغيرة

اسلاك توصيل

 حزمة أسلاك توصيل (ذكر- أنثى)

الحصالة الذكية

 حزمة أسلاك توصيل (ذكر- ذكر)

شفرة

1× 40 رأس دبوس

الحصالة الذكية

1× هيكل الحصالة

توصيل الدائرة

للمزيد حول مستشعر تجنب الحواجز بالأشعة تحت الحمراء يمكنك الرجوع للدرس إضاءة ذكية باستخدام مستشعر تجنب الحواجز بالأشعة تحت الحمراء.

وللمزيد حول الشاشة الكرستالية يمكنك الرجوع للدرس التحكم بالشاشة الكرستالية LCD.

coin-sorting-counting-machine-arduino

هيكل الحصالة الذكية

في هذا الدرس تم استخدام قالب كرتوني لمحاكاة الحصالة الذكية.

coin-sorting-counting-machine-arduino

الحصالة الذكية

يمكنك اختيار شكل الهيكل المناسب لك سواء قالب فيليني أو كرتوني أو نموذج بالطابعة ثلاثية الأبعاد أو نموذج خشبي بجهاز الليزر.

بعد ذلك ثبت الدائرة الكهربائية على الهيكل.الحصالة الذكية

الحصالة الذكية

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

ارفع كود الحصالة الذكية على لوحة الاردوينو باستخدام برنامج اردوينو (IDE).

#include "EEPROMex.h"
#include <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const float coinA = A0; 
const int coinB = A1;
const int coinC = A2;

float irA=0;
int irB,irC = 0;
float cntA=0;
float cntB,cntC,cnttotal = 0;

void setup() 
{
Serial.begin(9600); 
pinMode(coinA ,INPUT);
pinMode(coinB ,INPUT);
pinMode(coinC,INPUT);

lcd.begin(16, 2);
lcd.write(EEPROM.read(5));
}

void loop() 
{
irA =digitalRead(coinA); 
irB =digitalRead(coinB); 
irC=digitalRead(coinC); 

if(irA ==LOW){cntA+=0.50; delay(600);}
if(irB ==LOW){cntB+=1; delay(600);}
if(irC ==LOW){cntC+=2; delay(600);}
cnttotal =cntA+cntB+cntC;

EEPROM.write(5,cnttotal);
Serial.println(EEPROM.read(5));
lcd.setCursor(0,0);
lcd.print("Total :");
lcd.setCursor(0,1);
lcd.print(cnttotal);
}

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

هذه الأسطر تستدعي المكتبات الضرورية للدرس مثل مكتبة الشاشة الكرستالية <LiquidCrystal.h> و مكتبة “EEPROMex.h” التي تستخدم لكتابة وقراءة الأرقام.

يمكنك تحميل المكتبات من هنا.

يتم تنزيل المكتبات من خلال شريط القوائم في برنامج arduino IDE.

لعبة X/O

أو من خلال فك الضغط عن ملفات المكتبات ونقلها إلى الملف التالي الموجود بجهازك  C:\Program Files (x86)\Arduino

#include "EEPROMex.h"
#include <LiquidCrystal.h>

بعد ذلك تم انشاء المتغيرات اللازمة مثل المتغيرات الخاصة بالشاشة الكرستالية.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

في هذه الأسطر تم تعريف المتغيرات التي سيتم استخدامها لتخزين القيم المقروءة من مستشعر تجنب الحواجز.

المتغير coinA من النوع float يستخدم لتخزين القيم المقروءة من المنفذ A0.

المتغير coinB من النوع int يستخدم لتخزين القيم المقروءة من المنفذ A1.

المتغير coinC من النوع int يستخدم لتخزين القيم المقروءة من المنفذ A2.

const float coinA = A0; 
const int coinB = A1;
const int coinC = A2;

سيتم تعيين القيم الابتدائية لكل مستشعرات تجنب الحواجز = 0.

وسيتم تعيين القيمة الابتدائية للمجموع الكلي لكل مستشعرات تجنب الحواجز = 0.

float irA=0;
int irB,irC = 0;
float cntA=0;
float cntB,cntC,cnttotal = 0;

في الدالة ()setup يتم تهيئة الشاشة الكرستالية وجعل المتغير coinA و coinB و coinC كمدخلات لقراءة القيم من المستشعرات.

void setup() 
{
Serial.begin(9600); 
pinMode(coinA ,INPUT);
pinMode(coinB ,INPUT);
pinMode(coinC,INPUT);

lcd.begin(16, 2);
lcd.write(EEPROM.read(5));
}

في الدالة ()loop يتم تخزين القيم المقروءة من المستشعرات الثلاث.

المدخل coinA قيمته تخزن في المتغير irA.

المدخل coinB قيمته تخزن في المتغير irB.

المدخل coinC قيمته تخزن في المتغير irC.

void loop() 
{
irA =digitalRead(coinA); 
irB =digitalRead(coinB); 
irC =digitalRead(coinC);

هنا سيتم حساب العملات في كل مستشعر.

وبعد ذلك يتم جمع القيم من كل المستشعرات وتخزينها في cnttotal.

if(irA ==LOW){cntA+=0.50; delay(600);}
if(irB ==LOW){cntB+=1; delay(600);}
if(irC ==LOW){cntC+=2; delay(600);}
cnttotal =cntA+cntB+cntC;

سيتم طباعة Total متبوعة بالمجموع الكلي للعملات المعدنية.

EEPROM.write(5,cnttotal);
Serial.println(EEPROM.read(5));
lcd.setCursor(0,0);
lcd.print("Total :");
lcd.setCursor(0,1);
lcd.print(cnttotal);
}

يمكنك اختبار الحصالة الذكية بعد رفع الكود البرمجي.

 لا تنسَ فصل مصدر الطاقة بعد الانتهاء من استخدام النظام.

X
Product added to the cart