日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣用4X4鍵盤和ArduinoUno制作Arduino計算器

454398 ? 來源:工程師吳畏 ? 2019-08-05 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

電路圖和說明

4X4鍵盤有8個引腳需要連接到從D2到D9的Arduino引腳,如下所示:

怎樣用4X4鍵盤和ArduinoUno制作Arduino計算器

然后,將LCD連接到Arduino,如下所示:

除了數(shù)字按鈕之外的按鈕將執(zhí)行以下任務:

‘A’用于添加

‘B’用于減法

‘C’用于清除

‘D’用于劃分

‘*’用于乘法

完整的電路圖如下所示。

Arduino計算器圖。

代碼細分和演練

我們來看看查看該項目所需的代碼以及每個代碼段的作用。

首先,您需要為鍵盤和I2C LCD顯示添加庫。使用的LCD顯示器通過I2C通信與UNO配合使用,因此使用允許在Arduino上進行I2C通信的線程庫。

然后,按照4X4鍵盤的引腳連接和鍵盤的說明進行操作按鈕執(zhí)行操作。

#include

#include

#include

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};

在設置功能中,顯示屏將顯示“MakerPro的Arduino計算器”。

lcd.begin();

lcd.setCursor(0, 0);

lcd.print(“Arduino Calculator”);

lcd.setCursor(0, 1);

lcd.print(“by MakerPro”);

delay(1000);

scrollDisplay();

clr();

在循環(huán)功能中,我們先來得到按下的鍵然后我們需要檢查按下的鍵是否是數(shù)字鍵。如果是數(shù)字,則它將存儲在firstNum字符串中。

char newKey = myKeypad.getKey();

if (newKey != NO_KEY && (newKey == ‘1’ || newKey == ‘2’ || newKey == ‘3’ || newKey == ‘4’ || newKey == ‘5’ || newKey == ‘6’ || newKey == ‘7’ || newKey == ‘8’ || newKey == ‘9’ || newKey == ‘0’)) {

if (firstNumState == true) {

firstNum = firstNum + newKey;

lcd.print(newKey);

}

else {

secondNum = secondNum + newKey;

lcd.print(newKey);

}

如果按下的鍵不是數(shù)字,請檢查是否為‘+’,‘ - ’,‘/’,‘*’(在thekeypad上,這些鍵是‘A’,‘B’,‘D’,‘*’)。如果它來自這些鍵,我們將存儲稍后將使用的值。它還會將firstNum設置為false,這意味著我們現(xiàn)在將得到第二個數(shù)字。

現(xiàn)在,其他數(shù)值將存儲在secondNum字符串中。

if (newKey != NO_KEY && (newKey == ‘+’ || newKey == ‘-’ || newKey == ‘*’ || newKey == ‘/’)) {

if (firstNumState == true) {

operatr = newKey;

firstNumState = false;

lcd.setCursor(15, 0);

lcd.print(operatr);

lcd.setCursor(5, 1);

}

}

最后,我們設置它,所以如果按下的鍵不是來自操作鍵,它將檢查它是否是‘=’。如果是這個鍵,那么它將對第一個和第二個數(shù)字執(zhí)行存儲操作并輸出結(jié)果。

設置完代碼后,計算器將能夠執(zhí)行方程式。

if (newKey != NO_KEY && newKey == ‘=’) {

if (operatr == ‘+’) {

result = firstNum.toFloat() + secondNum.toFloat();

}

if (operatr == ‘-’) {

result = firstNum.toFloat() - secondNum.toFloat();

}

if (operatr == ‘*’) {

result = firstNum.toFloat() * secondNum.toFloat();

}

if (operatr == ‘/’) {

result = firstNum.toFloat() / secondNum.toFloat();

}

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(firstNum);

lcd.print(operatr);

lcd.print(secondNum);

lcd.setCursor(0, 1);

lcd.print(“=”);

lcd.print(result);

firstNumState = true;

}

And if the key will be ‘C’, then it will clear the display screen.

if (newKey != NO_KEY && newKey == ‘C’) {

clr();

}

完整計算器項目代碼

#include

#include

#include

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};

// Created instances

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

LiquidCrystal_I2C lcd(0x27, 16, 2);

boolean firstNumState = true;

String firstNum = “”;

String secondNum = “”;

float result = 0.0;

char operatr = ‘ ’;

void setup() {

lcd.begin();

lcd.setCursor(0, 0);

lcd.print(“Arduino Calculator”);

lcd.setCursor(0, 1);

lcd.print(“by MakerPro”);

delay(1000);

scrollDisplay();

clr();

}

void loop() {

char newKey = myKeypad.getKey();

if (newKey != NO_KEY && (newKey == ‘1’ || newKey == ‘2’ || newKey == ‘3’ || newKey == ‘4’ || newKey == ‘5’ || newKey == ‘6’ || newKey == ‘7’ || newKey == ‘8’ || newKey == ‘9’ || newKey == ‘0’)) {

if (firstNumState == true) {

firstNum = firstNum + newKey;

lcd.print(newKey);

}

else {

secondNum = secondNum + newKey;

lcd.print(newKey);

}

}

if (newKey != NO_KEY && (newKey == ‘+’ || newKey == ‘-’ || newKey == ‘*’ || newKey == ‘/’)) {

if (firstNumState == true) {

operatr = newKey;

firstNumState = false;

lcd.setCursor(15, 0);

lcd.print(operatr);

lcd.setCursor(5, 1);

}

}

if (newKey != NO_KEY && newKey == ‘=’) {

if (operatr == ‘+’) {

result = firstNum.toFloat() + secondNum.toFloat();

}

if (operatr == ‘-’) {

result = firstNum.toFloat() - secondNum.toFloat();

}

if (operatr == ‘*’) {

result = firstNum.toFloat() * secondNum.toFloat();

}

if (operatr == ‘/’) {

result = firstNum.toFloat() / secondNum.toFloat();

}

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(firstNum);

lcd.print(operatr);

lcd.print(secondNum);

lcd.setCursor(0, 1);

lcd.print(“=”);

lcd.print(result);

firstNumState = true;

}

if (newKey != NO_KEY && newKey == ‘C’) {

clr();

}

}

void scrollDisplay() {

// scroll 13 positions (string length) to the left

// to move it offscreen left:

for (int positionCounter = 0; positionCounter 《 3; positionCounter++) {

// scroll one position left:

lcd.scrollDisplayLeft();

// wait a bit:

delay(300);

}

delay(1000);

// scroll 29 positions (string length + display length) to the right

// to move it offscreen right:

for (int positionCounter = 0; positionCounter 《 3; positionCounter++) {

// scroll one position right:

lcd.scrollDisplayRight();

// wait a bit:

delay(300);

}

delay(2000);

}

void clr() {

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“1st: ”);

lcd.setCursor(12, 0);

lcd.print(“op ”);

lcd.setCursor(0, 1);

lcd.print(“2nd: ”);

lcd.setCursor(5, 0);

firstNum = “”;

secondNum = “”;

result = 0;

operatr = ‘ ’;

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算器
    +關(guān)注

    關(guān)注

    16

    文章

    441

    瀏覽量

    39018
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6527

    瀏覽量

    197519
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    探索HMC596LP4/LP4E:0.2 - 3.0 GHz SMT CMOS 4x2開關(guān)矩陣的卓越性能

    產(chǎn)品概述 HMC596LP4和HMC596LP4E是采用無鉛QFN 4x4 mm表面貼裝封裝的低成本4x2開關(guān)矩陣,適用于200至3000 MHz的衛(wèi)星/DBS、LNB和多開關(guān)應用。
    的頭像 發(fā)表于 04-28 17:10 ?593次閱讀

    TMS570LS31x4/21x4微控制:設計與應用深度解析

    TMS570LS31x4/21x4微控制:設計與應用深度解析 在電子工程領域,高性能、高安全性的微控制是眾多應用的核心。TMS570LS31x4
    的頭像 發(fā)表于 04-23 14:55 ?138次閱讀

    STPMC1可編程多相電能計算器IC:設計與應用詳解

    STPMC1可編程多相電能計算器IC:設計與應用詳解 在電力計量領域,精準且高效的電能計算是關(guān)鍵。STPMC1作為一款可編程多相電能計算器IC,為電力線系統(tǒng)的有效電能測量提供了強大的解決方案。今天
    的頭像 發(fā)表于 03-02 16:55 ?634次閱讀

    TMS570LS31x4/21x4微控制:高安全標準下的強大之選

    TMS570LS31x4/21x4微控制:高安全標準下的強大之選 在電子設計領域,對于高性能且適用于安全關(guān)鍵應用的微控制的需求與日俱增。德州儀器(TI)的TMS570LS31
    的頭像 發(fā)表于 02-09 17:10 ?544次閱讀

    探索DS90CP04:1.5 Gbps 4x4 LVDS交叉點開關(guān)的卓越性能

    探索DS90CP04:1.5 Gbps 4x4 LVDS 交叉點開關(guān)的卓越性能 在當今高速數(shù)據(jù)傳輸?shù)臅r代,低抖動、低偏斜的高速開關(guān)設備對于確保數(shù)據(jù)的高效、準確傳輸至關(guān)重要。DS90CP04作為一款由
    的頭像 發(fā)表于 12-30 14:50 ?572次閱讀

    解析SN65LVDS125A和SN65LVDT125A:4x4非阻塞交叉點開關(guān)的卓越性能

    解析SN65LVDS125A和SN65LVDT125A:4x4非阻塞交叉點開關(guān)的卓越性能 在電子設計領域,高速信號處理和靈活的信號路由是許多應用的關(guān)鍵需求。德州儀器(TI)的SN65LVDS125A
    的頭像 發(fā)表于 12-29 17:40 ?756次閱讀

    探索SN65LVDS125A和SN65LVDT125A:4x4非阻塞交叉點開關(guān)的卓越性能

    探索SN65LVDS125A和SN65LVDT125A:4x4非阻塞交叉點開關(guān)的卓越性能 在當今高速發(fā)展的電子領域,數(shù)據(jù)傳輸和信號處理的速度和效率至關(guān)重要。而SN65LVDS125A
    的頭像 發(fā)表于 12-29 17:40 ?970次閱讀

    探索SN65LVDS250和SN65LVDT250:高性能LVDS 4x4交叉點開關(guān)

    探索SN65LVDS250和SN65LVDT250:高性能LVDS 4x4交叉點開關(guān) 在高速數(shù)據(jù)傳輸?shù)念I域中,對于實現(xiàn)高效、穩(wěn)定的數(shù)據(jù)交換,合適的開關(guān)器件至關(guān)重要。今天咱就來深入探討一下TI推出
    的頭像 發(fā)表于 12-29 17:10 ?682次閱讀

    深入解析SN65LVDS250與SN65LVDT250:高性能4x4 LVDS交叉點開關(guān)

    深入解析SN65LVDS250與SN65LVDT250:高性能4x4 LVDS交叉點開關(guān) 在高速數(shù)據(jù)處理與傳輸?shù)念I域中,交叉點開關(guān)作為關(guān)鍵組件,對于數(shù)據(jù)的靈活路由和高效傳輸起著至關(guān)重要的作用。今天
    的頭像 發(fā)表于 12-29 17:10 ?715次閱讀

    探索SN65LVCP404:高性能千兆4x4交叉點開關(guān)的技術(shù)剖析

    探索SN65LVCP404:高性能千兆4x4交叉點開關(guān)的技術(shù)剖析 在高速數(shù)據(jù)傳輸?shù)碾娮宇I域,一款性能卓越的交叉點開關(guān)對于確保數(shù)據(jù)的高效、穩(wěn)定傳輸至關(guān)重要。今天,我們就來深入剖析德州儀器(TI
    的頭像 發(fā)表于 12-26 14:25 ?472次閱讀

    深入剖析DS10CP154A:1.5 Gbps 4x4 LVDS交叉點開關(guān)的卓越性能與應用

    深入剖析DS10CP154A:1.5 Gbps 4x4 LVDS 交叉點開關(guān)的卓越性能與應用 在高速信號處理和路由領域,德州儀器(TI)的DS10CP154A 1.5 Gbps 4x4 LVDS
    的頭像 發(fā)表于 12-26 11:15 ?573次閱讀

    探索DS25CP104A/DS25CP114 3.125 Gbps 4x4 LVDS交叉點開關(guān)的奧秘

    探索DS25CP104A/DS25CP114 3.125 Gbps 4x4 LVDS交叉點開關(guān)的奧秘 在高速信號路由和切換的領域里,DS25CP104A和DS25CP114這兩款由德州儀器推出
    的頭像 發(fā)表于 12-24 17:45 ?848次閱讀

    基于VL53L4CX的飛行時間傳感擴展板:X-NUCLEO-53L4A2技術(shù)解析

    STMicroelectronics X-NUCLEO-53L4A2擴展板設計用于配備Arduino R3連接的任何STM32 Nucleo開發(fā)板。X-NUCLEO-53L4A2擴展
    的頭像 發(fā)表于 10-30 16:10 ?1063次閱讀
    基于VL53L<b class='flag-5'>4</b>CX的飛行時間傳感<b class='flag-5'>器</b>擴展板:<b class='flag-5'>X-NUCLEO-53L4</b>A2技術(shù)解析

    Qorvo全新設計計算器:晶振選型、能耗預算計算器和鏈路預算與覆蓋范圍計算器

    款功能強大的PC端計算工具 。這些工具—— 晶振采購工具 、 能耗預算計算器 和 鏈路預算與覆蓋范圍計算器 ——讓優(yōu)化晶振選型、預測電池續(xù)航時間以及評估RF鏈路性能變得前所未有地簡單。 接下來,讓我們深入了解每一款
    的頭像 發(fā)表于 06-24 17:51 ?1856次閱讀
    Qorvo全新設計<b class='flag-5'>計算器</b>:晶振選型、能耗預算<b class='flag-5'>計算器</b>和鏈路預算與覆蓋范圍<b class='flag-5'>計算器</b>

    VirtualLab:衍射角計算器

    介質(zhì)的折射率、結(jié)構(gòu)的周期和入射角。這種相關(guān)性在數(shù)學上被編碼在光柵方程中。在這個例中,我們介紹了VirtualLab Fusion的衍射角計算器,這是一個用于計算光柵方程的方便工具。 打開衍射角
    發(fā)表于 06-16 08:48
    思茅市| 剑河县| 高雄市| 长春市| 万盛区| 大同市| 晋江市| 石门县| 绥中县| 玉环县| 广饶县| 闵行区| 青冈县| 五常市| 微山县| 徐州市| 汕头市| 闵行区| 长沙市| 神池县| 汤原县| 玛纳斯县| 合山市| 东明县| 万全县| 伊川县| 龙川县| 巴南区| 新宁县| 阳东县| 安顺市| 来凤县| 巫溪县| 信阳市| 徐州市| 定日县| 广饶县| 夏河县| 桂平市| 南靖县| 年辖:市辖区|