Мазмуну:

Calculator TinkerCad сынагы: 8 кадам
Calculator TinkerCad сынагы: 8 кадам

Video: Calculator TinkerCad сынагы: 8 кадам

Video: Calculator TinkerCad сынагы: 8 кадам
Video: [1DAY_1CAD] CALCULATOR (Tinkercad : Know-how / Style / Education) 2024, Ноябрь
Anonim
Calculator TinkerCad сынагы
Calculator TinkerCad сынагы

Эй, жакында эле мен коддун ар кандай түрлөрүн схемага кантип киргизүүнү изилдеп жатам. Мен калькулятор жасоо "кейс" жана башка кызыктырылган коддорду ишке ашыруунун эң сонун жолу болорун түшүндүм. Мурда мен калькуляторлорду түз коддон түзгөм, бирок анын схемасын түзүү мага кызыгууну жараткан. Өзгөчө карантин учурунда, мен дээрлик күн бою компьютеримде болом. Долбоор LCD экранында математикалык операцияларды ишке ашыруу болуп саналат.

1 -кадам: материалдар

Райондук үчүн:

  • LCD 16 x 2
  • Arduino Uno R3
  • Баскыч 4x4
  • Small Breadboard
  • Потенциометр (250 кОм)
  • Резистор (1kΩ)
  • x26 Jumper зымдары

2 -кадам: 4x4 баскычтопту туташтыруу

4x4 баскычтопту туташтыруу
4x4 баскычтопту туташтыруу

4x4 баскычтарындагы 4 катар пиндерди Arduino 4-7 казыктарына туташтырыңыз жана 4 мамы казыктарды Arduino казыктарына 0-3 туташтырыңыз.

3 -кадам: Breadboardго электр энергиясын берүү жана ЖКны туташтыруу

Нан тактасына кубат берүү жана ЖКны туташтыруу
Нан тактасына кубат берүү жана ЖКны туташтыруу

Мен нан үчүн 5 кубаттуулуктагы чыңалууну колдондум. Мен токту жерге жана бийликке туташтырдым. ЖК панелге жайгаштырылган жана анын бардык казыктары нан тактасына туташтырылган.

4 -кадам: ЖКга Жерди жана Жерди туташтырыңыз

ЖК менен Жерди туташтырыңыз
ЖК менен Жерди туташтырыңыз

ЖКга туташуу үчүн жерге 3 казык керек болот. Бири жерге ЖКга, экинчиси ЖКнын LEDине, экинчиси RWге туташат. ЖКнын ЖК жана жетеги туташуу үчүн кубаттуулукту талап кылат. Бирок LEDдын кубаттуулугуна резистор талап кылынат, бул учурда мен 1 кОм резистор колдондум.

5 -кадам: Потенциометрди туташтыруу

Потенциометрди туташтыруу
Потенциометрди туташтыруу

Потенциометрди нан бекетине 3 бекер мамыча менен туташтырыңыз. Анын 3 төөнөгүчтөрү болот, терминалдын 1 төөнөгүчүн камтыган мамыга ага жер керек. 2 -терминалдын түйүнүн камтыган мамычага ага күч керек болот. Андан кийин тазалагычтын колонкасында ЖКнын VOсуна туташтыруучу секирүүчү зым болот.

6 -кадам: Ардуинону ЖКга туташтыруу

Ардуинону ЖКга туташтыруу
Ардуинону ЖКга туташтыруу

Ардуинодогу 8-13-пиндер ЖКга туташат. Ардуинодогу 8-11 пиндер тийиштүү түрдө D8 (7-4) менен туташат. Андан кийин Arduino'дун 12 -пини ЖКны иштетүү менен, ал эми Arduino -догу 13 -пин ЖКнын реестрине туташат.

7 -кадам: Кодексти ишке ашыруу

Код клавиатура жана ЖК менен математикалык операцияларды колдонуу үчүн керек болот. Төмөндө мен колдонгон код болот, бирок мен аны таза жана жакшыраак кылуу үчүн бир нече өзгөртүүлөрдү киргизе алам. Андыктан аны менен бир аз ойноп көрүңүз.

#кошуу #кошуу

LiquidCrystal lcd (13, 12, 11, 10, 9, 8);

long first = 0;

узак секунд = 0;

эки эсе жалпы = 0;

int posit = 0;

char customKey;

const байт ROWS = 4;

const байт COLS = 4;

char баскычтары [ROWS] [COLS] = {

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

байт rowPins [ROWS] = {7, 6, 5, 4};

байт colPins [COLS] = {3, 2, 1, 0};

Клавиатура customKeypad = Баскычтоп (makeKeymap (баскычтар), rowPins, colPins, ROWS, COLS);

жараксыз орнотуу () {

lcd.begin (16, 2);

lcd.setCursor (5, 0);

lcd.clear (); }

void loop () {

customKey = customKeypad.getKey ();

которуу (customKey) {

учурда '0'… '9':

lcd.setCursor (0, 0);

биринчи = биринчи * 10 + (customKey - '0');

lcd.print (биринчи);

pozit ++;

тыныгуу;

учурда '+':

биринчи = (жалпы! = 0? Бардыгы: биринчи);

lcd.setCursor (позит, 0);

lcd.print ("+");

pozit ++;

экинчи = SecondNumber ();

жалпы = биринчи + экинчи;

lcd.setCursor (1, 1);

lcd.print (бардыгы);

биринчи = 0, second = 0;

pozit = 0;

тыныгуу;

иши '-':

биринчи = (жалпы! = 0? Бардыгы: биринчи);

lcd.setCursor (позит, 0);

lcd.print ("-");

pozit ++;

экинчи = SecondNumber ();

жалпы = биринчи - экинчи;

lcd.setCursor (1, 1);

lcd.print (жалпы);

биринчи = 0, second = 0;

pozit = 0;

тыныгуу;

учурда '*':

биринчи = (жалпы! = 0? Бардыгы: биринчи);

lcd.setCursor (позит, 0);

lcd.print ("*");

pozit ++;

экинчи = SecondNumber ();

жалпы = биринчи * экинчи;

lcd.setCursor (1, 1);

lcd.print (бардыгы);

биринчи = 0, second = 0;

pozit = 0;

тыныгуу;

иши '/':

биринчи = (жалпы! = 0? Бардыгы: биринчи);

lcd.setCursor (позит, 0);

lcd.print ("/");

pozit ++;

экинчи = SecondNumber (); lcd.setCursor (1, 1);

секунд == 0? lcd.print ("Error"): total = (float) first / (float) second;

lcd.print (жалпы);

биринчи = 0, second = 0;

pozit = 0;

тыныгуу;

учурда "С":

total = 0;

биринчи = 0;

second = 0;

pozit = 0;

lcd.clear ();

тыныгуу; }

}

long SecondNumber () {

учурда (1) {

customKey = customKeypad.getKey ();

эгер (customKey> = '0' && customKey <= '9') {

экинчи = экинчи * 10 + (customKey - '0');

lcd.setCursor (позит, 0);

lcd.print (экинчи); }

эгер (customKey == 'C') {

total = 0;

биринчи = 0;

second = 0;

pozit = 0;

lcd.clear ();

тыныгуу; }

эгер (customKey == '=') {

lcd.setCursor (0, 1);

lcd.print ("=");

позит = жалпы;

lcd.clear ();

lcd.setCursor (0, 1);

lcd.print ("=");

тыныгуу; }

}

экинчи кайтуу;}

8 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Баарыңарга бул үйрөткүч жакты деп ишенем. Окуганыңыз үчүн рахмат!

Saim.

Сунушталууда: