Съдържание:

Калкулатор Arduino: 6 стъпки
Калкулатор Arduino: 6 стъпки

Видео: Калкулатор Arduino: 6 стъпки

Видео: Калкулатор Arduino: 6 стъпки
Видео: How to make calculator using arduino #shorts 2024, Октомври
Anonim
Arduino калкулатор
Arduino калкулатор

Програмирането винаги е забавно и Arduino е прекрасна платформа, ако тепърва започвате с вграденото програмиране. В този урок ще изградим наш собствен калкулатор с Arduino. Стойностите могат да се изпращат чрез клавиатура (4 × 4 клавиатура) и резултатът може да се види на LCD екран (16 × 2 точкова матрица). Този калкулатор може да изпълнява прости операции като събиране, изваждане, умножение и деление с цели числа. Но след като разберете концепцията, можете да реализирате дори научни функции с вградени функции на Arduino. В края на този проект ще знаете как да използвате 16x2 LCD и клавиатура с Arduino, както и колко лесно е да ги програмирате с помощта на лесно налични библиотеки. Ще разберете и как да програмирате вашия Arduino за изпълнение на определена задача.

Стъпка 1: Необходими неща

Arduino Uno (всяка версия ще работи) 16 × 2 LCD дисплей 4 × 4 клавиатура 9V батерия Дъска и свързващи проводници

Стъпка 2: Електрическа схема

Електрическа схема
Електрическа схема

Стъпка 3: Калкулаторна програма Arduino

Пълната програма Arduino за този проект е дадена в края на този проект. Кодът е разделен на малки смислени парчета и обяснен по -долу. Както беше споменато по -рано, ще свържем LCD и клавиатура с Arduino, използвайки библиотеки. Така че нека първо ги добавим към нашата Arduino IDE. Библиотеката за LCD вече е включена във вашия Arduino по подразбиране, така че не е нужно да се притесняваме за това. За библиотека с клавиатура щракнете върху връзката, за да я изтеглите от Github. Ще получите ZIP файл, след което добавете този lib към Arduino чрез Sketch -> Include Library -> Add. ZIP файл и посочете местоположението към този изтеглен файл. След като приключим, всички сме готови за програмиране. Въпреки че сме използвали библиотека за използване на клавиатура, трябва да споменем няколко подробности (показани по -долу) за клавиатурата на Arduino. Променливите ROWS и COLS ще покажат колко редове и колони има нашата клавиатура и картата на клавишите показва реда, в който клавишите присъстват на клавиатурата. Клавиатурата, която използвам в този проект, изглежда така по -долу, като картата на ключовете също представлява същото. По -долу споменахме към кои пинове клавиатурата е свързана с помощта на променливия масив rowPins и colPins.const байт ROWS = 4; // Четири байта conconst COLS = 4; // Три колони // Дефинирайте клавишите Keymapchar [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.byte colPins [COLS] = {4, 5, 6, 7}; // Свържете клавиатурата COL0, COL1 и COL2 към тези щифтове на Arduino. След като споменахме какъв тип клавиатура използваме и как е свързана, можем да създадем клавиатурата, използвайки тези детайли, използвайки реда по -долу Клавиатура kpd = Клавиатура (makeKeymap (клавиши), rowPins, colPins, ROWS, COLS); // Създаване на клавиатура По подобен начин трябва да кажем и към кои щифтове на Arduino е свързан LCD дисплеят. Според нашата електрическа схема дефинициите ще бъдат като по -долу const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Пинове, към които LCD е свързан LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // създаваме LCD В функцията за настройка просто показваме името на проекта и след това продължаваме към цикъла while, където се намира основният проект. По принцип трябва да проверим дали нещо се въвежда на клавиатурата, ако е въведено трябва да разпознаем какво се въвежда и след това да се преобразува в променлива, когато се натисне “=”, трябва да изчислим резултата и след това накрая да го покажем на LCD дисплея. Това е точно това, което се прави вътре във функцията на цикъла, както е показано по -долу key = kpd.getKey (); // съхраняване на натиснат клавиш в charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Какво се случва във всяка функция е обяснено с помощта на редовете за коментари, преминете през пълния код по -долу, потърсете го, за да разберете как всъщност работи. Ако имате някакви съмнения по конкретна линия, не се колебайте да използвате секцията за коментари или форумите.

Стъпка 4:

Стъпка 5: Работа на Arduino Calculator

Работа на калкулатор Arduino
Работа на калкулатор Arduino

Направете връзките според електрическата схема и качете кода по -долу. Ако показва грешка, уверете се, че сте добавили библиотеката съгласно инструкциите, дадени по -горе. Можете също да опитате симулацията, за да проверите дали проблемът е във вашия хардуер. Ако всичко е направено както трябва, тогава хардуерът ви ще изглежда по следния начин, като LCD дисплеят показва този Arduino калкулатор, използващ 4x4 клавиатура в действие Тъй като използваната тук клавиатура няма подходящи маркировки, предположих, че азбуките са оператори като изброени по-долу Характер на клавиатурата Предполага се, че е добавяне „A“(+) „B“Изваждане (-) „C“Умножение (*) „D“Деление (/) „*“Изчистване (C) „#“Равно (=) Можете използвайте маркер, за да напишете какво всъщност представлява всеки бутон. С това можете директно да започнете да използвате калкулатора. Въвежда числото и ще се появи на втория ред, натиснете операнда и въведете второто си число, накрая натиснете клавиша „#“, за да получите резултата си. Можете също да опитате да създадете този калкулатор на базата на сензорен екран Arduino.

Стъпка 6: Код

/ * * Програма за калкулатор на клавиатурата на Arduino */#включва // Заглавен файл за LCD от https://www.arduino.cc/en/Reference/LiquidCrystal#include // Заглавен файл за клавиатура от https://github.com/ Крис-A/Keypadconst байт ROWS = 4; // Четири байта conconst COLS = 4; // Три колони // Определете клавишите Keymapchar [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.byte colPins [COLS] = {4, 5, 6, 7}; // Свържете клавиатурата COL0, COL1 и COL2 към тези щифтове Arduino. Клавиатура kpd = Клавиатура (makeKeymap (клавиши), rowPins, colPins, ROWS, COLS); // Създаване на Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Пинове, към които LCD е свързан LCD LiquidCrystal (rs, en, d4, d5, d6, d7); дълъг Num1, Num2, Номер; char ключ, действие; логически резултат = false; void setup () {lcd.begin (16, 2); // Използваме 16*2 LCD дисплей lcd.print ("DIY Calculator"); // Показва интро съобщение lcd.setCursor (0, 1); // задаваме курсора на колона 0, ред 1 lcd.print ("-CircuitDigest"); // Показване на забавяне на интро съобщение (2000); // Изчакайте дисплеят да покаже информация lcd.clear (); // След това го почистете} void loop () {key = kpd.getKey (); // съхраняване на натиснат клавиш в charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // След това го почистете, ако (key == '*') // Ако бутонът за отказ е натиснат {Serial.println ("Button Cancel"); Брой = Num1 = Num2 = 0; result = false;} if (key == '1') // Ако е натиснат Бутон 1 {Serial.println ("Бутон 1"); ако (Число == 0) Число = 1; else Number = (Number*10) + 1; // Натиснат два пъти} if (key == '4') // Ако е натиснат Бутон 4 {Serial.println ("Бутон 4"); ако (Число == 0) Число = 4; else Number = (Number*10) + 4; // Натиснат два пъти} if (key == '7') // Ако е натиснат Бутон 7 {Serial.println ("Бутон 7"); ако (Число == 0) Число = 7; else Number = (Number*10) + 7; // Натиснат два пъти} if (key == '0') {Serial.println ("Button 0"); // Бутон 0 се натиска, ако (Номер == 0) Номер = 0; else Number = (Number*10) + 0; // Натиснат два пъти} if (key == '2') // Бутон 2 е натиснат {Serial.println ("Бутон 2"); ако (Число == 0) Число = 2; else Number = (Number*10) + 2; // Натиснат два пъти} if (key == '5') {Serial.println ("Button 5"); ако (Число == 0) Число = 5; else Number = (Number*10) + 5; // Натиснат два пъти} if (key == '8') {Serial.println ("Button 8"); ако (Число == 0) Число = 8; else Number = (Number*10) + 8; // Натиснат два пъти} if (key == '#') {Serial.println ("Button Equal"); Num2 = Номер; резултат = вярно; } if (key == '3') {Serial.println ("Бутон 3"); ако (Число == 0) Число = 3; else Number = (Number*10) + 3; // Натиснат два пъти} if (key == '6') {Serial.println ("Button 6"); ако (Число == 0) Число = 6; else Number = (Number*10) + 6; // Натиснат два пъти} if (key == '9') {Serial.println ("Button 9"); ако (Число == 0) Число = 9; else Number = (Number*10) + 9; // Натиснат два пъти} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Откриване на бутони в колона 4 {Num1 = Number; Брой = 0; if (key == 'A') {Serial.println ("Добавяне"); action = '+';} if (key == 'B') {Serial.println ("Изваждане"); действие = '-'; } if (key == 'C') {Serial.println ("Умножение"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} забавяне (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (действие == '-') Номер = Num1-Num2; if (действие == '*') Номер = Num1*Num2; if (действие == '/') Номер = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // задаваме курсора на колона 0, ред 1 lcd.print (Num1); lcd.print (действие); lcd.print (Num2); if (резултат == вярно) {lcd.print ("="); lcd.print (Number);} // Показва резултата lcd.setCursor (0, 1); // задаваме курсора на колона 0, ред 1 lcd.print (Number); // Показване на резултата}

Препоръчано: