Мазмұны:

Arduino калькуляторы: 6 қадам
Arduino калькуляторы: 6 қадам

Бейне: Arduino калькуляторы: 6 қадам

Бейне: Arduino калькуляторы: 6 қадам
Бейне: Arduino кнопки с фиксацией 2024, Қараша
Anonim
Arduino калькуляторы
Arduino калькуляторы

Бағдарламалау әрқашан көңілді, ал егер сіз ендірілген бағдарламалауды жаңадан бастасаңыз, Arduino - тамаша платформа. Бұл оқулықта біз Arduino көмегімен жеке калькулятор құрамыз. Мәндерді пернетақта арқылы жіберуге болады (4 × 4 пернетақта) және нәтижені СКД экранында көруге болады (16 × 2 нүктелік матрица). Бұл калькулятор бүтін сандармен қосу, азайту, көбейту және бөлу сияқты қарапайым әрекеттерді орындай алады. Бірақ сіз тұжырымдаманы түсінгеннен кейін сіз Arduino -ның кіріктірілген функциялары арқылы тіпті ғылыми функцияларды жүзеге асыра аласыз, бұл жобаның соңында сіз Arduino -мен 16x2 СКД мен пернетақтаны қалай қолдану керектігін, сондай -ақ оларды оңай бағдарламалауды білесіз. қол жетімді кітапханалар. Сіз сондай -ақ Arduino -ны белгілі бір тапсырманы орындау үшін қалай бағдарламалау керектігін түсінесіз.

1 -қадам: Қажетті заттар

Arduino Uno (кез келген нұсқасы жұмыс істейді) 16 × 2 СКД дисплейі 4 × 4 пернетақтасы 9В аккумуляторлық тақта және қосылатын сымдар

2 -қадам: схема

Схема диаграммасы
Схема диаграммасы

3 -қадам: Arduino калькулятор бағдарламасы

Бұл жобаның толық Arduino бағдарламасы осы жобаның соңында берілген. Код кішігірім мағыналы бөліктерге бөлінген және төменде түсіндірілген. Жоғарыда айтылғандай, біз кітапханаларды пайдалана отырып, Arduino -мен СКД мен пернетақтаны қосамыз. Алдымен оларды Arduino IDE -ге қосайық. LCD -ге арналған кітапхана әдепкі бойынша Arduino -ға енгізілген, сондықтан бұл туралы алаңдамау керек. Пернетақта кітапханасы үшін Github -тен жүктеу үшін сілтемені нұқыңыз. Сіз ZIP файлын аласыз, содан кейін Arduino -ға Sketch арқылы осы кітапты қосыңыз -> Кітапхананы қосу ->. ZIP файлын қосыңыз және осы жүктелген файлға орынды көрсетіңіз. Біз кітапхананы пернетақтаны пайдаланғанымызбен, Arduino пернетақтасы туралы бірнеше мәліметтерді (төменде көрсетілген) айтуымыз керек. ROWS және COLS айнымалысы біздің пернетақтада қанша жолдар мен бағандар бар екенін көрсетеді және пернетақтада пернелердің орналасу ретін көрсетеді. Мен осы жобада қолданатын пернетақта төмендегідей кілт картасына ұқсас, әрі төменде біз rowPins және colPins.const байтының ROWS = 4 айнымалы жиегінің көмегімен пернетақтаның қандай түйреуіштермен байланыстырылғанын айтып өттік. // Төрт жолдық конст байт COLS = 4; // Үш баған // Keypapchar пернелерін [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'анықтаңыз. B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; байт rowPins [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2 және ROW3 пернетақтасын осы Arduino түйреуіштеріне жалғаңыз. Colte -colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1 және COL2 пернетақтасын осы Arduino түйреуіштеріне жалғаңыз. Біз пернетақтаның қай түрін қолданатынымызды және ол қалай қосылғанын айтқаннан кейін, біз төмендегі жолды қолдана отырып, пернетақтаны жасай аламыз Keypad kpd = Пернетақта (makeKeymap (пернелер)), rowPins, colPins, ROWS, COLS); // Пернетақтаны жасаңызСонымен қатар, біз LCD дисплейі Arduino -ның қай түйреуіштеріне қосылғанын айтуымыз керек. Біздің схемаға сәйкес анықтамалар төмендегідей болады: rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // СКД қосылған түйреуіштерLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // СКД жасау Орнату функциясының ішінде біз тек жобаның атауын көрсетеміз, содан кейін негізгі жоба орналасқан циклге өтеміз. Негізінде біз пернетақтада бірдеңе теріліп жатқанын тексеруіміз керек, егер терілген болса, біз тануымыз керек. не теріледі, содан кейін оны айнымалыға түрлендіреді, егер «=» басылса, біз нәтижені есептеп, содан кейін оны СКД -де көрсетуіміз керек. Бұл цикл функциясында дәл осылай жасалады, төменде көрсетілгендей = kpd.getKey (); // басылған кілт мәнін харифте сақтау (кілт! = NO_KEY) DetectButtons (); if (нәтиже == шын) CalculateResult (); DisplayResult (); Әр функцияның ішінде не болатыны түсініктеме жолдарының көмегімен түсіндіріледі, төмендегі толық кодты өтіңіз және оның қалай жұмыс істейтінін түсіну үшін онымен айналдырыңыз. Егер сізде белгілі бір жолға күмәніңіз болса, түсініктеме бөлімін немесе форумдарды қолданыңыз.

4 -қадам:

5 -қадам: Arduino калькуляторының жұмысы

Arduino калькуляторының жұмысы
Arduino калькуляторының жұмысы

Қосылымдарды схемаға сәйкес жасаңыз және төмендегі кодты жүктеңіз. Егер ол қате көрсетсе, жоғарыда берілген нұсқаулыққа сәйкес кітапхананы қосқаныңызға көз жеткізіңіз. Сондай -ақ, модельдеуді қолданып, аппараттық құралдың ақаулығын тексеруге болады. Егер бәрі ойдағыдай жасалса, онда сіздің аппараттық құралыңыз төмендегідей көрінеді: 4x4 пернетақтасы бар Arduino калькуляторын көрсетеді, мұнда қолданылатын пернетақтада тиісті таңбалар болмағандықтан, мен әліпбиді оператор ретінде қабылдадым. Төменде тізімделген Пернетақтадағы таңба «А» қосымшасы (+) «В» азайту (-) «С» көбейту (*) «D» бөлімі (/) «*» тазалау (C) «#» тең (=) деп есептеледі Әр түйменің нені білдіретінін жазу үшін маркерді қолданыңыз. Осымен сіз тікелей калькуляторды қолдануға кірісе аласыз. Нөмірді теріңіз және екінші жолда пайда болады, операндты басып, екінші нөмірді теріңіз, нәтижені алу үшін «#» пернесін басыңыз. Сіз сондай -ақ осы сенсорлық экранға негізделген Arduino калькуляторын құрып көре аласыз.

6 -қадам: код

/ * * Arduino пернетақта калькуляторларының бағдарламасы */#қамтиды // СКД үшін тақырыптық файл https://www.arduino.cc/kz/Reference/LiquidCrystal#include // Пернетақтаға арналған тақырыптық файл https://github.com/ Крис-A/Keypadconst байт ROWS = 4; // Төрт жолдық конст байт COLS = 4; // Үш баған // Keypapchar пернелерін анықтаңыз [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; байт rowPins [ROWS] = {0, 1, 2, 3}; // ROW0, ROW1, ROW2 және ROW3 пернетақтасын осы Arduino түйреуіштеріне жалғаңыз. Colte -colPins [COLS] = {4, 5, 6, 7}; // COL0, COL1 және COL2 пернетақтасын осы Arduino түйреуіштеріне қосыңыз. Keypad kpd = Keypad (makeKeymap (пернелер), rowPins, colPins, ROWS, COLS); // Пернетақтаны жасаңыз int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // СКД қосылған түйреуіштерLiquidCrystal lcd (rs, en, d4, d5, d6, d7); ұзын сан1, сан2, сан; char пернесі, әрекет; логикалық нәтиже = жалған; void setup () {lcd.begin (16, 2); // Біз 16*2 LCD дисплейін қолданамыз lcd.print («DIY калькуляторы»); // lcd.setCursor кіріс хабарламасын көрсету (0, 1); // курсорды 0 бағанына, 1 жолға орнатыңыз lcd.print («-CircuitDigest»); // Кіріспе хабардың кешігуін көрсету (2000); // lcd.clear () ақпаратты көрсетуді көрсетуді күтіңіз; // Содан кейін оны тазалаңыз} void loop () {key = kpd.getKey (); // басылған кілт мәнін харифте сақтау (кілт! = NO_KEY) DetectButtons (); if (нәтиже == шын) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Содан кейін оны тазартыңыз, егер (key == '*') // Болдырмау батырмасы басылса {Serial.println («Түймені бас тарту»); Сан = Сан1 = Сан2 = 0; result = false;} if (key == '1') // If Button 1 is pressed {Serial.println («Button 1»); if (Сан == 0) Сан = 1; else Сан = (Сан*10) + 1; // екі рет басылды} if (key == '4') // If 4 button is pressed {Serial.println («Button 4»); егер (Сан == 0) Сан = 4; else Сан = (Сан*10) + 4; // екі рет басылды} if (key == '7') // If 7 button is pressed {Serial.println («Button 7»); егер (Сан == 0) Сан = 7; else Сан = (Сан*10) + 7; // екі рет басылды} if (key == '0') {Serial.println («Button 0»); // 0 батырмасы басылады, егер (Сан == 0) Сан = 0; else Сан = (Сан*10) + 0; // екі рет басылды} if (key == '2') // 2 батырмасы басылады {Serial.println («Button 2»); егер (Сан == 0) Сан = 2; else Сан = (Сан*10) + 2; // екі рет басылды} if (key == '5') {Serial.println («Button 5»); егер (Сан == 0) Сан = 5; else Сан = (Сан*10) + 5; // екі рет басылды} if (key == '8') {Serial.println («Button 8»); егер (Сан == 0) Сан = 8; else Сан = (Сан*10) + 8; // екі рет басылды} if (key == '#') {Serial.println («Түйме тең»); Num2 = Сан; нәтиже = ақиқат; } if (key == '3') {Serial.println («Button 3»); егер (Сан == 0) Сан = 3; else Сан = (Сан*10) + 3; // екі рет басылды} if (key == '6') {Serial.println («Button 6»); егер (Сан == 0) Сан = 6; else Сан = (Сан*10) + 6; // екі рет басылды} if (key == '9') {Serial.println («9 -түйме»); егер (Сан == 0) Сан = 9; else Сан = (Сан*10) + 9; // екі рет басылды} егер (key == 'A' || key == 'B' || key == 'C' || key == 'D') // 4 -бағандағы түймелерді анықтау {Num1 = Number; Сан = 0; if (key == 'A') {Serial.println («Қосу»); әрекет = '+';} if (key == 'B') {Serial.println («Азайту»); әрекет = '-'; } if (key == 'C') {Serial.println («Көбейту»); әрекет = '*';} if (key == 'D') {Serial.println («Devesion»); әрекет = '/';} кешіктіру (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // курсорды 0 бағанына, 1 жолға орнатыңыз lcd.print (Num1); lcd.print (әрекет); lcd.print (Num2); if (нәтиже == шын) {lcd.print («=»); lcd.print (Сан);} // Нәтижені көрсету lcd.setCursor (0, 1); // курсорды 0 бағанына, 1 жолға орнатыңыз lcd.print (Сан); // Нәтижені көрсету}

Ұсынылған: