Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Калькулятор на Arduino с 16x2 LCD и клавиатурой 4x4

Компоненты и материалы

Arduino UNO 1
RGB LCD Shield Kit, 16x2 символов 1
Перемычки (набор) 1
Крона 9В 1
Макетная плата 1

О проекте

В этом проекте вы научитесь работать с 16x2 LCD и матричной клавиатурой 4x4 на Arduino, используя готовые библиотеки. Также разберетесь, как программировать Arduino для решения конкретной задачи.

Необходимые материалы

Калькулятор на Arduino с 16x2 LCD и клавиатурой 4x4

Схема подключения (пины)

Пин клавиатурыArduino Pin
1 (R1)D0
2 (R2)D1
3 (R3)D2
4 (R4)D3
5 (C1)D4
6 (C2)D5
7 (C3)D6
8 (C4)D7
LCD PinArduino Pin
RS (4)D8
EN (6)D9
D4 (11)D10
D5 (12)D11
D6 (13)D12
D7 (14)D13
Vdd (2)+5V
Vss, Vee, RW (1,3,5)GND

Важно: на некоторых платах Arduino загрузка скетча может завершиться ошибкой, если к пинам 0 и 1 (RX/TX) подключена клавиатура. В таком случае отключите клавиатуру во время загрузки.

Калькулятор на Arduino с 16x2 LCD и клавиатурой 4x4

Код

Arduino Calculator Sketch

/* Arduino Keypad Calculator */
#include <LiquidCrystal.h>
#include <Keypad.h>

const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'7','8','9','D'},
  {'4','5','6','C'},
  {'1','2','3','B'},
  {'*','0','#','A'}
};

byte rowPins[ROWS] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};

Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

long Num1 = 0, Num2 = 0, Number = 0;
char key, action;
boolean result = false;

void setup() {
  lcd.begin(16, 2);
  lcd.print("DIY Calculator");
  lcd.setCursor(0, 1);
  lcd.print("-CircuitDigest");
  delay(2000);
  lcd.clear();
}

void loop() {
  key = kpd.getKey();
  if (key != NO_KEY) DetectButtons();
  if (result) CalculateResult();
  DisplayResult();
}

void DetectButtons() {
  lcd.clear();
  if (key == '*') { Number = Num1 = Num2 = 0; result = false; }
  else if (key >= '0' && key <= '9') {
    if (Number == 0) Number = key - '0';
    else Number = Number * 10 + (key - '0');
  }
  else if (key == '#') { Num2 = Number; result = true; }
  else if (key == 'A' || key == 'B' || key == 'C' || key == 'D') {
    Num1 = Number; Number = 0;
    if (key == 'A') action = '+';
    else if (key == 'B') action = '-';
    else if (key == 'C') action = '*';
    else if (key == 'D') action = '/';
    delay(100);
  }
}

void CalculateResult() {
  switch(action) {
    case '+': Number = Num1 + Num2; break;
    case '-': Number = Num1 - Num2; break;
    case '*': Number = Num1 * Num2; break;
    case '/': Number = (Num2 != 0) ? Num1 / Num2 : 0; break;
  }
}

void DisplayResult() {
  lcd.setCursor(0, 0);
  lcd.print(Num1); lcd.print(action); lcd.print(Num2);
  if (result) { lcd.print(" ="); lcd.print(Number); }
  lcd.setCursor(0, 1);
  lcd.print(Number);
}

Схемы

Калькулятор на Arduino с 16x2 LCD и клавиатурой 4x4

Производственный процесс

  1. Валёк для теста: от этрусских истоков к современному мастерству
  2. Эволюция и мастерство современных кеглей для боулинга
  3. Защита от USB HID-атак: Демонстрация эксплойта клавиатуры на Arduino Leonardo
  4. Легкая прошивка микроконтроллеров Atmel AT89 с помощью Arduino Uno — пошаговое руководство
  5. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  6. Декодирование PPM-сигнала RC-приёмника на Arduino: пошаговое руководство
  7. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  8. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  9. Создание пользовательских LED-часов с будильником — видно с 12 метров
  10. Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты