Оглавление:

Калькулятор TinkerCad Contest: 8 шагов
Калькулятор TinkerCad Contest: 8 шагов

Видео: Калькулятор TinkerCad Contest: 8 шагов

Видео: Калькулятор TinkerCad Contest: 8 шагов
Видео: Мастер-класс Дальномер в симуляторе Tinkercad 2024, Ноябрь
Anonim
Калькулятор TinkerCad Contest
Калькулятор TinkerCad Contest

Привет, так недавно я изучал, как реализовать различные типы кода в схеме. Я обнаружил, что создание калькулятора - отличный способ реализовать «case» и другие формы кода, которые я нашел интересными. Раньше я делал калькуляторы прямо из кода, но создание схемы для него меня заинтересовало. Особенно в это время карантина, когда я почти весь день нахожусь на своем компьютере. Проект заключается в реализации математических операций на ЖК-экране.

Шаг 1: материалы

Для цепи:

  • ЖК-дисплей 16 x 2
  • Arduino Uno R3
  • Клавиатура 4x4
  • Малая макетная плата
  • Потенциометр (250 кОм)
  • Резистор (1кОм)
  • x26 перемычки

Шаг 2: Подключение клавиатуры 4x4

Подключение клавиатуры 4x4
Подключение клавиатуры 4x4

Подключите 4 контакта ряда на клавиатуре 4x4 к контактам 4-7 Arduino и соедините контакты 4 столбцов с контактами 0-3 Arduino.

Шаг 3. Подайте питание на макетную плату и подключите ЖК-дисплей

Подайте питание на макетную плату и подключите ЖК-дисплей
Подайте питание на макетную плату и подключите ЖК-дисплей

Я использовал напряжение питания 5 для макета. Я подключил питание и землю к макетной плате. ЖК-дисплей помещается на макетную плату и размещается так, чтобы все его контакты были подключены к макетной плате.

Шаг 4: Подключите питание и заземление к ЖК-дисплею

Подключите питание и заземление к ЖК-дисплею
Подключите питание и заземление к ЖК-дисплею

К ЖК-дисплею необходимо подключить 3 контакта заземления. Один будет подключен к земле самого ЖК-дисплея, другой будет подключен к светодиоду ЖК-дисплея, а последний будет подключен к RW. Для подключения VCC ЖК-дисплея и светодиода потребуется питание. Однако для питания светодиода потребуется подключенный резистор, в этом случае я использовал резистор 1 кОм.

Шаг 5: Подключение потенциометра

Подключение потенциометра
Подключение потенциометра

Подключите потенциометр к макетной плате с 3 свободными столбцами. Он будет иметь 3 контакта, столбец, содержащий контакт 1, потребует заземления. Столбец, который содержит контакт 2 клеммы, потребует подачи питания. Тогда дворник будет иметь перемычку в столбце, которая подключается к VO ЖК-дисплея.

Шаг 6: Подключение Arduino к ЖК-дисплею

Подключение Arduino к ЖК-дисплею
Подключение Arduino к ЖК-дисплею

Контакты 8-13 на Arduino будут подключены к ЖК-дисплею. Контакты 8-11 на Arduino будут подключаться к D8 (7-4) соответственно. Затем контакт 12 Arduino будет подключаться к включению ЖК-дисплея, а контакт 13 на Arduino подключится к регистру ЖК-дисплея.

Шаг 7. Внедрите код

Код потребуется для использования математических операций с клавиатурой и ЖК-дисплеем. Ниже будет код, который я использовал, однако я все еще могу внести несколько изменений, чтобы сделать его чище и лучше. Так что не стесняйтесь немного поиграть с этим.

#include #include

ЖК-дисплей LiquidCrystal (13, 12, 11, 10, 9, 8);

длинный первый = 0;

длинная секунда = 0;

двойной итог = 0;

int posit = 0;

char customKey;

const byte ROWS = 4;

константный байт COLS = 4;

символьные ключи [ROWS] [COLS] = {

{'1', '2', '3', '/'}, {'4', '5', '6', '*'}, {'7', '8', '9', '-'}, {'C', '0', '=', '+'}};

byte rowPins [ROWS] = {7, 6, 5, 4};

byte colPins [COLS] = {3, 2, 1, 0};

CustomKeypad клавиатуры = клавиатура (makeKeymap (ключи), rowPins, colPins, ROWS, COLS);

void setup () {

lcd.begin (16, 2);

lcd.setCursor (5, 0);

lcd.clear (); }

void loop () {

customKey = customKeypad.getKey ();

switch (customKey) {

case '0'… '9':

lcd.setCursor (0, 0);

первый = первый * 10 + (customKey - '0');

lcd.print (первый);

posit ++;

перерыв;

case '+':

first = (total! = 0? total: first);

lcd.setCursor (posit, 0);

lcd.print ("+");

posit ++;

второй = SecondNumber ();

итого = первый + второй;

lcd.setCursor (1, 1);

lcd.print (всего);

first = 0, второй = 0;

posit = 0;

перерыв;

кейс '-':

first = (total! = 0? total: first);

lcd.setCursor (posit, 0);

lcd.print ("-");

posit ++;

второй = SecondNumber ();

total = first - второй;

lcd.setCursor (1, 1);

lcd.print (всего);

first = 0, второй = 0;

posit = 0;

перерыв;

кейс '*':

first = (total! = 0? total: first);

lcd.setCursor (posit, 0);

lcd.print ("*");

posit ++;

второй = SecondNumber ();

итого = первое * второе;

lcd.setCursor (1, 1);

lcd.print (всего);

first = 0, второй = 0;

posit = 0;

перерыв;

кейс '/':

first = (total! = 0? total: first);

lcd.setCursor (posit, 0);

lcd.print ("/");

posit ++;

второй = SecondNumber (); lcd.setCursor (1, 1);

второй == 0? lcd.print ("Ошибка"): total = (float) first / (float) second;

lcd.print (всего);

first = 0, второй = 0;

posit = 0;

перерыв;

case 'C':

всего = 0;

первый = 0;

второй = 0;

posit = 0;

lcd.clear ();

перерыв; }

}

long SecondNumber () {

в то время как (1) {

customKey = customKeypad.getKey ();

if (customKey> = '0' && customKey <= '9') {

второй = второй * 10 + (customKey - '0');

lcd.setCursor (posit, 0);

lcd.print (второй); }

if (customKey == 'C') {

всего = 0;

первый = 0;

второй = 0;

posit = 0;

lcd.clear ();

перерыв; }

if (customKey == '=') {

lcd.setCursor (0, 1);

lcd.print ("=");

posit = всего;

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("=");

перерыв; }

}

return second;}

Шаг 8: Результат

Результат
Результат
Результат
Результат

Надеюсь, вам всем понравилось это руководство. Спасибо за чтение!

Саим.

Рекомендуемые: