فهرست مطالب:

آردوینو UNO (ایجاد منوها و توابع): 4 مرحله
آردوینو UNO (ایجاد منوها و توابع): 4 مرحله

تصویری: آردوینو UNO (ایجاد منوها و توابع): 4 مرحله

تصویری: آردوینو UNO (ایجاد منوها و توابع): 4 مرحله
تصویری: Arduino Tutorial: LED Sequential Control- Beginner Project 2024, جولای
Anonim
Arduino UNO (ایجاد منوها و توابع)
Arduino UNO (ایجاد منوها و توابع)
Arduino UNO (ایجاد منوها و توابع)
Arduino UNO (ایجاد منوها و توابع)

در این مقاله آموزشی نحوه ایجاد منوها ، خواندن دما از سنسور TC74A0 و نمایش "مقادیر" (در این مورد شماره تلفن همراه) به روشی که نامحدود است ، اما محدود به حافظه آردوینو روی صفحه است.

ما استفاده خواهیم کرد

-آرایه ها

-صفحه نمایش کریستال مایع

-دستگاه کلید

راهنمای کاربر در مرحله آخر گنجانده شده است.

مرحله 1: اجزاء

آردوینو اونو

· صفحه کلید 4x4

· سنسور دما دیجیتال TC74A0

· ماژول LCD I2c 16x2

· صفحه نمایش کریستال مایع 16x2

· سیم های بلوز

· تخته نان

· کامپیوتر شخصی

· Arduino IDE

· کابل انتقال

مرحله 2: سیم کشی کامپوننت

سنسور دما و LCD متصل به یک خط به SDA و SCL (A4 ، A5)

LCD (ماژول I2c)

o SDA تا A5 در آردوینو

o SCL تا A4 در آردوینو

o VCC تا 5V در آردوینو

o GND به GND در آردوینو

· صفحه کلید 4 * 4

o پین 1 - 8 در صفحه کلید به ترتیب به پین 9 - 2 در آردوینو متصل شده است

سنسور دما TC74A0

o TC74A0 پین 2 به SDA در آردوینو

o TC74A0 پین 3 به GND در آردوینو

o TC74A0 پین 4 به SCL در آردوینو

o TC74A0 پین 5 تا 5 ولت در آردوینو

مرحله 3: کد

#شامل // کتابخانه ها را هنگام کامپایل شامل می شود

#عبارتند از

#عبارتند از

#رمز_عمر را تعریف کنید 5

#تعریف_مدت_مدت 3

#تعداد سلول 10 را تعریف کنید

int کاربران = 0؛

int نمایش = 0؛

آدرس int = 72؛ // آدرس tc74a0

int I = 0 ؛

int USER؛

int X = 0 ؛

int XY = 0 ؛

int temp ؛

int tempPre = 0؛

char userNum [10] [10] = {{} ، {} ، {}}؛

char داده [Password_Lenght]؛

char Master [Password_Lenght] = "5466"؛ //کلمه عبور

char ExitData [Command_Lenght] ؛ //

char Master1 [Command_Lenght] = "**"؛ //

char MenuItem؛

char CELLArrayA [10]؛

char CELLArrayB [10]؛

char CELLArrayC [10]؛

const byte ROWS = 4؛ // چهار ردیف

const byte 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 ال سی دی (0x26 ، 16 ، 2) ؛

char hexaKeys [ROWS] [COLS] = // INITIATING KEYPAD

{

{'1' ، '2' ، '3' ، 'A'} ،

{'4' ، '5' ، '6' ، 'B'} ،

{'7' ، '8' ، '9' ، 'C'} ،

{'*' ، '0' ، '#' ، 'D'}

};

صفحه کلید customKeypad = صفحه کلید (makeKeymap (hexaKeys) ، rowPins ، colPins ، ROWS ، COLS) ؛

void setup ()

{

Serial.begin (9600)؛ // این Serial Monitor را ایجاد می کند

Wire.begin ()؛ // این یک شی Wire ایجاد می کند

lcd.begin (16 ، 2) ؛

lcd.lightlight ()؛

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 ()؛

رشته myString = "ARDUINO INSTRUCTABLE"؛

lcd.setCursor (2 ، 2) ؛

lcd.print (myString) ؛

تاخیر (2500) ؛

for (int scrollCounter = 0؛ scrollCounter <24؛ scrollCounter ++)

{

lcd.scrollDisplayLeft ()؛

تأخیر (300) ؛

}

lcd.clear ()؛

lcd.print ("رمز عبور را وارد کنید") ؛

}

حلقه خالی ()

{

سوئیچ (نمایش) // ما در کجا در منوی اصلی هستیم

{ /آیا کاربر کاربر A ، B ، C ، D را فشار داد

مورد 0:

{

کلمه عبور()؛

}

زنگ تفريح؛

مورد 1:

{

lcd.clear ()؛

lcd.setCursor (0 ، 1) ؛

lcd.print ("A B C D") ؛

lcd.setCursor (0 ، 0) ؛

lcd.print ("منوی اصلی") ؛

نمایش = 2؛

تأخیر (100) ؛

زنگ تفريح؛

}

مورد 2:

{

char customKey = customKeypad.getKey ()؛

سوئیچ (customKey)

{

مورد "A":

{

Serial.println ("A فشار داده شد") ؛

StoreUser ()؛

زنگ تفريح؛

}

مورد "B":

{

Serial.println ("B فشار داده شد") ؛

if (کاربران == 0) {

lcd.clear ()؛

lcd.print ("NO USERS SAVED")؛

تاخیر (3000) ؛

lcd.clear ()؛

نمایش = 1؛

زنگ تفريح؛

}

DisplayUsers ()؛ زنگ تفريح؛

}

مورد "C":

{

Serial.println ("C فشار داده شد") ؛ // در طول آزمایش استفاده می شود

int ext = 0؛

در حالی که (! ext) {

char ch؛

temp = TempMenu ()؛

if (temp! = tempPre) {

lcd.clear ()؛

lcd.print ("Temparature") ؛

lcd.setCursor (0 ، 1) ؛

lcd.print (temp) ؛

lcd.print ("C") ؛

tempPre = temp؛

تأخیر (500) ؛

}

ch = customKeypad.getKey ()؛

if (ch == ' *') // خروج از منوی دما (در صورت فشار *)

{

ext = 1؛

lcd.clear ()؛

نمایش = 1؛

}

}

زنگ تفريح؛

TempMenu ()؛

زنگ تفريح؛

}

مورد "D":

{

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 ("MAY 2019") ؛

lcd.setCursor (0 ، 1) ؛

lcd.print ("CC OOSTHUIZEN") ؛

تاخیر (3000) ؛

lcd.clear ()؛

نمایش = 1؛

}

}

}

}

}

// عملکردهای سفارشی برای فراخوانی ارزشها یا روشها

void password ()

{

char customKey = customKeypad.getKey ()؛

if (customKey) // مطمئن شوید که یک کلید در واقع فشرده شده است ، برابر با (customKey! = NO_KEY)

{

داده [data_count] = customKey؛ // char را در آرایه داده ذخیره کنید

lcd.setCursor (data_count ، 1) ؛ // مکان نما را برای نمایش هر کاراکتر جدید حرکت دهید

lcd.print ("*") ؛ // چاپ char در مکان نما گفت

data_count ++؛ // آرایه داده را 1 افزایش دهید تا کاراکتر جدید ذخیره شود ، همچنین تعداد کاراکترهای وارد شده را پیگیری کنید

}

if (data_count == Password_Lenght-1) // اگر نمای آرایه برابر با تعداد کاراکترهای مورد انتظار باشد ، داده ها را با master مقایسه کنید

{

lcd.clear ()؛

lcd.setCursor (0 ، 0) ؛

lcd.print ("رمز عبور است") ؛

if (! strcmp (Data، Master)) // برابر با (strcmp (Data، Master) == 0)

{

lcd.print ("خوب") ؛

lcd.clear ()؛

نمایش = 1؛

}

دیگری

lcd.print ("بد") ؛

تأخیر (1000) ؛ // 1 ثانیه تأخیر اضافه کرد تا مطمئن شوید رمز عبور قبل از پاک شدن به طور کامل روی صفحه نشان داده شده است.

lcd.clear ()؛

اطلاعات روشن()؛

lcd.clear ()؛

lcd.setCursor (0 ، 0) ؛

lcd.print ("رمز عبور را وارد کنید") ؛

}

}

int TempMenu ()

{

Wire.begin انتقال (آدرس) ؛

Wire.write (0) ؛

Wire.endTransmission ()؛

سیم. درخواست از (آدرس ، 1) ؛

while (Wire.available () == 0)؛

int c = Wire.read ()؛

بازگشت ج؛

}

void clearData ()

{

در حالی که (data_count! = 0)

{// این را می توان برای هر اندازه آرایه استفاده کرد ،

داده [data_count--] = 0؛ // پاک کردن آرایه برای داده های جدید

}

}

void StoreUser ()

{

int ext = 0؛

کاربر int ؛

char ch؛

در حالی که (! ext) {

lcd.clear ()؛

lcd.print ("ورود کاربر") ؛

کاربر = کاربران +1؛

lcd.print (کاربر) ؛

int x = 0 ؛

در حالی که (! x) {

برای (int i = 0؛ i <10؛ i ++) {

ch = customKeypad.waitForKey ()؛

lcd.setCursor (i ، 1) ؛

ال سی دی چاپ (ch) ؛

userNum [کاربر - 1] = ch؛

}

تأخیر (500) ؛

lcd.clear ()؛

lcd.print ("ادامه") ؛

lcd.setCursor (0 ، 1) ؛

lcd.print ("* بله # نه")؛

ch = customKeypad.waitForKey ()؛

if (ch == '*') {

x = 1 ؛

}

if (ch == '#') {

x = 1 ؛

ext = 1؛

lcd.clear ()؛

نمایش = 1؛

}

}

کاربران ++ ؛

}

}

void DisplayUsers ()

{

lcd.clear ()؛

برای (int i = 0؛ i <users؛ i ++) {

lcd.print ("کاربر ذخیره شده") ؛

lcd.print (i + 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 گزینه ممکن برای حرکت در توابع مختلف موجود ظاهر می شود.

· A - شماره تلفن های همراه کاربر را وارد کنید.

o برای نجات کاربر در سیستم ، 10 رقم وارد کنید

o پس از وارد کردن 10 رقم ، " *" را برای افزودن کاربران بیشتر فشار دهید ، یا "#" را برای خروج به منوی اصلی فشار دهید.

· B - نمایش کاربران ذخیره شده

o کاربران از روی صفحه حرکت می کنند ، هر کدام 3 ثانیه نمایش داده می شوند ، به محض نمایش همه کاربران صفحه بسته می شود و به منوی اصلی باز می گردد.

o اگر هیچ کاربر در گزینه A منو اضافه نشده باشد ، "NO SAVED USERS" نمایش داده می شود.

· C - دمای زنده را نمایش می دهد

o برای بازگشت به منوی اصلی ، " *" را فشار دهید

· D - نمایش متن کوتاه

o نام خالق و موضوعی که برای آن تدوین شده است را با تاریخ نمایش می دهد.

توصیه شده: