Учебный проект "Калькулятор на Arduino"
#include// подключаем библиотеки #include // подключаем библиотеки #include // подключаем библиотеки LiquidCrystal_I2C lcd(0x38, 16, 2); //даем определение нашего дисплея int num1, num2 ; // переменые цифра 1, цифра 2 float total; // результат char operation, button; // знак и значение кнопки const byte ROWS = 4; const byte COLS = 4; //сколько линий и строк в клавиотуре char keys[ROWS][COLS] = { {'1', '2', '3', '+'}, {'4', '5', '6', '-'}, {'7', '8', '9', '*'}, {'C', '0', '=', '/'} }; // массив с обозначением дя клавиш byte rowPins[ROWS] = {9, 8, 7, 6}; //задаем пины клавиатуры byte colPins[COLS] = {5, 4, 3, 2}; //задаем пины клавиатуры Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //создаем клавиатуру void setup() { lcd.init(); //Инициализирует дисплей lcd.backlight(); //включает подсветку lcd.setCursor(1, 0); // устанавливает курсор на 1 место 0 строки lcd.print("Calculator 1.0"); // выдает название delay(1000); // подождем секунду lcd.clear(); // очистим дисплей lcd.setCursor(2, 1); // установим курсор на 2 место 1 строки lcd.print("Make Radmir"); //создатель } void domath() //функция для вычеслений { switch (operation)//если действие равно... { case '+': // сложению, то total = num1 + num2; // складываем числа break; case '-':// вычитанию, то total = num1 - num2; //вычитаем числа break; case '/':// делению, то total = (float)num1 / (float)num2; // делим числа break; case '*':// умножению, то total = num1 * num2; // умнажаем числа break; } lcd.clear(); //эти строки выводит результат lcd.setCursor(2, 1); lcd.print("Make Radmir"); lcd.setCursor(0, 0); //ставим курсор на 0 сторчку 0 место lcd.print(total, 2); // выводим результат } void loop() { while (1) //цикл 1 числа и знака { button = customKeypad.getKey(); // даем переменой значение нажатой кнопки if (button == 'C') // если было нажат "С" то очищаем значения { num1 = 0; num2 = 0; total = 0; operation = 0; lcd.clear(); lcd.setCursor(2, 1); lcd.print("Make Radmir"); } if (button >= '0' && button <= '9')// если нажата цифра, то { num1 = num1 * 10 + (button - '0'); //трюк для значения 1 числа lcd.setCursor(0, 0); lcd.print(num1);// выводим 1 цифру } if ( (button == '-' || button == '+' || button == '*' || button == '/'))//если нажат знак, то { operation = button; // даем переменой значиния знака lcd.print(operation);// выводм знак break;// выходим из цикла } } while (1)// цикл 2 числа и результата { if (button == 'C')//это нужно ведь если тот цикл очищаеться, то мы также отменяем этот цикл break; //выходим из цикла button = customKeypad.getKey();// даем значение кнопки if (button == 'C')// если хочет очистить значние { num1 = 0; //очищаем данные num2 = 0; total = 0; operation = 0; lcd.clear(); lcd.setCursor(2, 1); lcd.print("Make Radmir"); break; //выходим из цикла } if (button >= '0' && button <= '9' ) { //если цифра нажато, то num2 = num2 * 10 + (button - '0'); //также трюк для значения 2 числа lcd.clear(); // это нужно против повторения 2 числа lcd.setCursor(2, 1); lcd.print("Make Radmir"); lcd.home(); lcd.print(num1); lcd.print(operation); lcd.print(num2);// выводим 2 число } if (button == '=' && num2 != 0) // если нажат "=" и 2 число не равняеться 0, то { domath(); //запускаем функцию break; //выходим из цикла } } while (1)//цикл очитски полсе вывода { if (button == 'C') break; //выходим из цикла button = customKeypad.getKey(); if (button == 'C') { lcd.clear(); lcd.setCursor(2, 1); lcd.print("Make Radmir"); lcd.setCursor(0, 0); num1 = 0; //очищаем данные num2 = 0; total = 0; operation = 0; break; //выходим из цикла } } }