جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
في هذا الدليل ، سنستكشف كيفية إنشاء القوائم ، وقراءة درجة الحرارة من مستشعر TC74A0 وعرض "القيم" (في هذه الحالة أرقام الهواتف المحمولة) بطريقة لا نهائية ، ولكنها تقتصر على ذاكرة اردوينو الموجودة على اللوحة.
سوف نستخدم
- المصفوفات
-شاشات الكريستال السائل
-لوحة المفاتيح
تم تضمين دليل المستخدم في الخطوة الأخيرة.
الخطوة 1: المكونات
اردوينو اونو
لوحة مفاتيح 4x4
· جهاز استشعار درجة الحرارة الرقمية TC74A0
· وحدة I2c 16x2 LCD
· شاشة عرض كريستالية سائلة 16 × 2
· أسلاك توصيل
· اللوح
· كمبيوتر شخصي
اردوينو IDE
· كابل نقل
الخطوة 2: الأسلاك المكونة
مستشعر TEMP وشاشة LCD متصلان على نفس الخط بـ SDA و SCL (A4 ، A5)
LCD (وحدة I2c)
o SDA إلى A5 على Arduino
o SCL إلى A4 على Arduino
o VCC إلى 5V على Arduino
o GND إلى GND على Arduino
· لوحة مفاتيح 4 × 4
o الدبوس 1-8 على لوحة المفاتيح متصل بالدبوس 9-2 على Arduino على التوالي
مستشعر درجة الحرارة TC74A0
o TC74A0 pin 2 إلى SDA على Arduino
o TC74A0 pin 3 to GND على Arduino
o TC74A0 pin 4 إلى SCL على Arduino
o TC74A0 pin 5 to 5V على Arduino
الخطوة 3: الكود
#include // يتضمن مكتبات عند التجميع
#يشمل
#يشمل
#define Password_Lenght 5
#define Command_Lenght 3
#define CellNumber 10
عدد المستخدمين = 0 ؛
عرض int = 0 ؛
عنوان int = 72 ؛ // tc74a0 العنوان
كثافة العمليات أنا = 0 ؛
مستخدم دولي
كثافة العمليات X = 0 ؛
int XY = 0 ؛
درجة الحرارة int
int tempPre = 0 ؛
char userNum [10] [10] = {{} ، {} ، {}} ؛
بيانات char [Password_Lenght] ؛
char Master [Password_Lenght] = "5466" ؛ //كلمه السر
char ExitData [Command_Lenght] ، //
char Master1 [Command_Lenght] = "**" ؛ //
شار MenuItem؛
شار CELLArrayA [10] ؛
شار CELLArrayB [10] ؛
شار CELLArrayC [10] ؛
const بايت ROWS = 4 ؛ // أربعة صفوف
البايت الثابت COLS = 4 ؛ // أربعة أعمدة
بايت rowPins [ROWS] = {5، 4، 3، 2} ؛
البايت colPins [COLS] = {9، 8، 7، 6} ؛
بايت data_count = 0 ، master_count = 0 ؛
bool Pass_is_good ؛
LiquidCrystal_I2C lcd (0x26، 16، 2) ؛
char hexaKeys [ROWS] [COLS] = // INITIATING KEYPAD
{
{'1'، '2'، '3'، 'A'}،
{'4'، '5'، '6'، 'B'}،
{'7'، '8'، '9'، 'C'}،
{'*'، '0'، '#'، 'D'}
};
لوحة المفاتيح المخصصة
الإعداد باطل()
{
Serial.begin (9600) ؛ // يؤدي هذا إلى إنشاء Serial Monitor
Wire.begin () ؛ // هذا يخلق كائن سلك
lcd.begin (16 ، 2) ؛
اضاءه خلفيه ال سى دى()؛
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("الرجاء الانتظار 3") ؛ //جاري تحميل الشاشة
تأخير (1000) ؛
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("الرجاء الانتظار 2") ؛
تأخير (1000) ؛
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("الرجاء الانتظار 1") ؛
تأخير (300) ؛
lcd.clear () ؛
String myString = "ARDUINO INSTRUCTABLE" ؛
lcd.setCursor (2 ، 2) ؛
lcd.print (myString) ؛
تأخير (2500) ؛
لـ (int scrollCounter = 0 ؛ scrollCounter <24 ؛ scrollCounter ++)
{
lcd.scrollDisplayLeft () ،
تأخير (300) ؛
}
lcd.clear () ؛
lcd.print ("أدخل كلمة المرور") ؛
}
حلقة فارغة()
{
مفتاح (عرض) // أين نحن في القائمة الرئيسية
{// هل قام المستخدم بالضغط على أ ، ب ، ج ، د
الحالة 0:
{
كلمه السر()؛
}
استراحة؛
حالة 1:
{
lcd.clear () ؛
lcd.setCursor (0 ، 1) ؛
lcd.print ("أ ب ج د") ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("القائمة الرئيسية") ؛
العرض = 2 ؛
تأخير (100) ؛
استراحة؛
}
الحالة 2:
{
char customKey = customKeypad.getKey () ؛
التبديل (مفتاح مخصص)
{
الحالة "أ":
{
Serial.println ("تم الضغط على A") ؛
StoreUser () ؛
استراحة؛
}
الحالة "ب":
{
Serial.println ("تم الضغط على B") ؛
إذا (المستخدمون == 0) {
lcd.clear () ؛
lcd.print ("لا يوجد مستخدمون محفوظون") ؛
تأخير (3000) ؛
lcd.clear () ؛
العرض = 1 ؛
استراحة؛
}
DisplayUsers () ، استراحة؛
}
الحالة "ج":
{
Serial.println ("تم الضغط على C") ؛ // مستعملة أثناء الاختبار
int ext = 0 ؛
بينما (! ext) {
شار ؛
temp = TempMenu () ؛
إذا (temp! = tempPre) {
lcd.clear () ؛
lcd.print ("درجة الحرارة") ؛
lcd.setCursor (0 ، 1) ؛
lcd.print (درجة الحرارة) ؛
lcd.print ("C") ؛
tempPre = درجة الحرارة ؛
تأخير (500) ؛
}
ch = customKeypad.getKey () ،
إذا (ch == '*') // الخروج من قائمة درجة الحرارة (إذا * تم الضغط عليه)
{
تحويلة = 1 ؛
lcd.clear () ؛
العرض = 1 ؛
}
}
استراحة؛
TempMenu () ،
استراحة؛
}
الحالة "د":
{
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("NUA PRAC") ؛
lcd.setCursor (0 ، 1) ؛
lcd.print ("JB SCHOEMAN") ؛
تأخير (3000) ؛
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("مايو 2019") ؛
lcd.setCursor (0 ، 1) ؛
lcd.print ("CC OOSTHUIZEN") ؛
تأخير (3000) ؛
lcd.clear () ؛
العرض = 1 ؛
}
}
}
}
}
// وظائف مخصصة للاتصال بالقيم أو الإجراءات
كلمة مرور باطلة ()
{
char customKey = customKeypad.getKey () ؛
إذا كان (customKey) // يتأكد من الضغط على مفتاح بالفعل ، يساوي (customKey! = NO_KEY)
{
البيانات [data_count] = مفتاح مخصص ؛ // تخزين شار في مصفوفة البيانات
lcd.setCursor (data_count، 1) ؛ // حرك المؤشر لإظهار كل حرف جديد
lcd.print ("*") ؛ // طباعة شار في المؤشر المذكور
data_count ++ ؛ // زيادة مصفوفة البيانات بمقدار 1 لتخزين حرف جديد ، وتتبع أيضًا عدد الأحرف التي تم إدخالها
}
إذا (data_count == Password_Lenght-1) // إذا كان فهرس المصفوفة يساوي عدد الأحرف المتوقعة ، قارن البيانات بالسيد
{
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("كلمة المرور") ؛
إذا (! strcmp (بيانات ، ماجستير)) // يساوي (strcmp (بيانات ، ماجستير) == 0)
{
lcd.print ("جيد") ؛
lcd.clear () ؛
العرض = 1 ؛
}
آخر
lcd.print ("سيئة") ؛
تأخير (1000) ؛ // تمت إضافة تأخير لمدة ثانية واحدة للتأكد من ظهور كلمة المرور بالكامل على الشاشة قبل مسحها.
lcd.clear () ؛
امسح البيانات()؛
lcd.clear () ؛
lcd.setCursor (0 ، 0) ؛
lcd.print ("أدخل كلمة المرور") ؛
}
}
int TempMenu ()
{
Wire.beginTransmission (العنوان) ؛
Wire.write (0) ؛
Wire.endTransmission () ؛
Wire.request From (العنوان ، 1) ؛
بينما (Wire.available () == 0) ؛
int c = Wire.read () ؛
عودة ج ؛
}
clearData () باطل
{
بينما (data_count! = 0)
{// يمكن استخدام هذا لأي حجم مصفوفة ،
البيانات [data_count--] = 0 ؛ // مجموعة واضحة للبيانات الجديدة
}
}
مستخدم المتجر باطل ()
{
int ext = 0 ؛
مستخدم int
شار ؛
بينما (! ext) {
lcd.clear () ؛
lcd.print ("أدخل المستخدم") ؛
المستخدم = المستخدمين + 1 ؛
lcd.print (مستخدم) ؛
كثافة العمليات س = 0 ؛
بينما (! x) {
لـ (int i = 0 ؛ i <10 ؛ i ++) {
ch = customKeypad.waitForKey () ؛
lcd.setCursor (ط ، 1) ؛
lcd.print (الفصل) ؛
userNum [مستخدم - 1] = ch ؛
}
تأخير (500) ؛
lcd.clear () ؛
lcd.print ("متابعة") ؛
lcd.setCursor (0 ، 1) ؛
lcd.print ("* نعم # لا") ؛
ch = customKeypad.waitForKey () ؛
إذا (ch == '*') {
س = 1 ؛
}
إذا (ch == '#') {
س = 1 ؛
تحويلة = 1 ؛
lcd.clear () ؛
العرض = 1 ؛
}
}
المستخدمون ++ ؛
}
}
DisplayUsers باطلة ()
{
lcd.clear () ؛
لـ (int i = 0 ؛ i <users؛ i ++) {
lcd.print ("المستخدم المحفوظ") ؛
lcd.print (أنا + 1) ؛
لـ (int u = 0 ؛ u <10 ؛ u ++) {
lcd.setCursor (u ، 1) ؛
lcd.print (userNum [u]) ؛
}
تأخير (2000) ؛
lcd.clear () ؛
العرض = 1 ؛
}
}
الخطوة 4: دليل المستخدم
1. عند تشغيل المشروع ، ستظهر شاشة تحميل أو ترحيب.
2. ستظهر شاشة "إدخال كلمة المرور" ، تتيح لك هذه الشاشة إدخال 4 أحرف أو أحرف أو أرقام ، وكلمة المرور الصحيحة هي: 5466 ، وهذا سيمنحك الوصول إلى القائمة الرئيسية.
3. عند إدخال كلمة المرور الصحيحة ، ستظهر القائمة الرئيسية مع 4 خيارات ممكنة للتنقل بين الوظائف المختلفة المتاحة.
أ - أدخل أرقام الهواتف المحمولة للمستخدم.
o أدخل 10 أرقام لحفظ المستخدم في النظام
o بعد إدخال 10 أرقام اضغط على "*" لإضافة المزيد من المستخدمين ، أو اضغط على "#" للخروج مرة أخرى إلى القائمة الرئيسية
ب - حفظ عرض المستخدمين
o سيقوم المستخدمون بالتمرير عبر الشاشة ، ويتم عرضها لمدة 3 ثوانٍ لكل منهم ، بمجرد عرض جميع المستخدمين ، سيتم إغلاق الصفحة والعودة إلى القائمة الرئيسية.
o إذا لم تتم إضافة مستخدمين في خيار القائمة أ ، فسيتم عرض "لا يوجد مستخدمون محفوظون".
· C - يعرض درجة الحرارة الحية
o اضغط على "*" للخروج مرة أخرى إلى القائمة الرئيسية
د - عرض نص قصير
o يعرض اسم المنشئ والموضوع الذي تم تجميعه من أجله مع التاريخ.