MATLAB+Arduino利用板上的按鍵控制板上Led燈

幾年不使用,之前的知識都忘掉了。需要逐步撿起來。

1 熟悉按鍵的使用

2熟悉燈的控制

1 電路

我們將通過 MATLAB 的?Arduino?支持包與 Arduino 板通信,讀取按鍵狀態并控制 LED 燈的亮滅。

  1. 按鍵:連接到 Arduino 的數字引腳(例如?D2),另一端接地。(arduino UNO板子上自帶了兩個按鍵,通過杜邦線將KEY-L連接到D2

  2. LED:連接到 Arduino 的數字引腳(例如?D13,Arduino Uno 自帶 LED),另一端通過限流電阻接地。(uno板自帶

2 功能

使用 MATLAB 和 Arduino 實現按鍵控制 LED 燈的程序。

3 代碼

app中查找arduino資源管理器

查看com口,方便編碼用(如果是matlab2022版本及以上,且只有一個arduino板掛在電腦上,可省略com口,matlab可以自己查到)

編碼: 按鍵為低電平。

arduinoObj = arduino("COM5", "Uno")
%Configure specified Arduino pins.
configurePin(arduinoObj, "D13", "DigitalOutput");
configurePin(arduinoObj, "D2", "Pullup"); %必須上拉,否則按鍵無法正確識別% main code
disp('按下按鍵控制 LED 燈(按 Ctrl+C 退出)...');
while true% 讀取按鍵狀態buttonState = readDigitalPin(arduinoObj, 'D2');% 控制 LED 燈if buttonState == 0 % 按鍵按下(假設按鍵按下為低電平)writeDigitalPin(arduinoObj, 'D13', 1); % 點亮 LEDdisp('LED 燈亮');elsewriteDigitalPin(arduinoObj, 'D13', 0); % 熄滅 LEDdisp('LED 燈滅');endpause(0.5); % 稍微延遲,避免過于頻繁讀取
end% 清理
% clear a;
disp('程序結束');
%Clean Up
%Clear variables that are not needed.
clear arduinoObj

4 結果

按鍵和LED關聯功能實現。按鍵一定要用上拉功能。

5 通過按鍵判斷是否停止程序

手動結束while true 會讓arduino產生的通信信息無法清除,為此把arduino板自帶的KEY_R按鍵使用,用它來控制程序啟停

KEY_R鍵必須按下,然后再按KEY——L鍵 ,程序才能一致執行;否則就會直接退出while循環。

Create an Arduino Connection
Create an Arduino connection using the specified device and connection parameters.
arduinoObj = arduino("COM5", "Uno")Configure Arduino Pins
Configure specified Arduino pins.
configurePin(arduinoObj, "D13", "DigitalOutput");
configurePin(arduinoObj, "D2", "Pullup");
configurePin(arduinoObj, "D3", "Pullup");Read and Write data
Read data from and write data to Arduino pins configured above.disp('按下按鍵控制 LED 燈(按 Ctrl+C 退出)...');
stopState = readDigitalPin(arduinoObj, 'D3')% 這是反向的?
buttonState = readDigitalPin(arduinoObj, 'D2')
while stopState~=0 %必須一致按著KEY R,才能才能一致循環% 讀取按鍵狀態buttonState = readDigitalPin(arduinoObj, 'D2');stopState = readDigitalPin(arduinoObj, 'D3');% 控制 LED 燈if buttonState == 0 % 按鍵按下(假設按鍵按下為低電平)writeDigitalPin(arduinoObj, 'D13', 1); % 點亮 LEDdisp('LED 燈亮');elsewriteDigitalPin(arduinoObj, 'D13', 0); % 熄滅 LED
%         disp('LED 燈滅');endpause(0.5); % 稍微延遲,避免過于頻繁讀取
end% 清理
% clear a;
disp('程序結束');

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73158.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73158.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73158.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《深度學習》——YOLOv3詳解

文章目錄 YOLOv3簡介YOLOv3核心原理YOLOv3改進YOLOv3網絡結構 YOLOv3簡介 YOLOv3(You Only Look Once, version 3)是一種先進的實時目標檢測算法,由 Joseph Redmon 和 Ali Farhadi 開發。它在目標檢測領域表現出色,具有速度快、精…

【項目設計】網頁版五子棋

文章目錄 一、項目介紹1.項目簡介2.開發環境3.核心技術4.開發階段 二、Centos-7.6環境搭建1.安裝wget工具2.更換軟件源(yum源)3.安裝scl工具4.安裝epel軟件源5.安裝lrzsz傳輸工具6.安裝高版本gcc/g編譯器7.安裝gdb調試器8.安裝git9.安裝cmake10.安裝boost庫11.安裝Jsoncpp庫12.…

在coze工作流中將數據回寫到飛書表格

在coze工作流中將數據回寫到飛書表格

并查集(競賽)

一、模型建立 本質就是一個數組,數組的下標對應節點的編號,數組的值對應對應編號的節點的父節點。規定根節點的父節點是自己。 規定三個集合的根節點分別是1 4 6 二、并查集操作并實現 并查集主要操作:查找一個節點的父節點,判…

Leetcode 刷題筆記1 圖論part04

leetcode 110 字符串接龍 def judge(s1, s2):count 0for i in range(len(s1)):if s1[i] ! s2[i]:count 1return count 1if __name__ __main__:n int(input())begin_str, end_str map(str, input().split())if begin_str end_str:print(0)exit()strlist []for _ in ran…

從擴展黎曼澤塔函數構造物質和時空的結構-7

有了先前關于電荷之間吸引和排斥關系的頻率分析圖,我們可以按照類似的方法,對磁場做一樣的分析,即分析磁體同極相斥,異極相吸的本質。 我們知道上圖得以成立的原因在于磁感線,如下圖所示的排布方式, 磁體的…

AI比人腦更強,因為被植入思維模型【18】萬物系統思維模型

把事物看成鏈,看成網,看成生態。 定義 萬物系統思維模型是一種將宇宙萬物視為一個相互關聯、相互作用的整體系統的思維方式。它強調從系統的角度去認識、分析和解決問題,認為系統中的各個要素之間存在著復雜的相互關系,這些關系不…

Qt-Q_ENUM宏和QMetaEnum類

Q_ENUM是一個宏定義,它的作用是將一個枚舉類型注冊到元對象系統,從而能夠通過QMetaEnum類獲得一些關于enum類型的一些信息,例如獲取enum類型的名稱字符串,enum值和字符串互相轉換,enum類型保存在QVariant中&#xff0c…

MongoDB 配合python使用的入門教程

MongoDB 入門教程 1. 安裝 MongoDB 首先,你需要在你的機器上安裝MongoDB。你可以從 MongoDB官網 下載并安裝 Community 版本。安裝完成后,啟動MongoDB服務。 # 在Linux/Mac上啟動MongoDB mongod# 在Windows上,你可以通過Windows服務啟動Mo…

【云馨AI-大模型】大模型的開發和應用中,Python、PyTorch和vLLM關系概括

說明 1. Python 定位:基礎編程語言。作用:Python 是大模型生態系統的核心語言,幾乎所有深度學習框架(如 PyTorch、TensorFlow)和工具鏈(如 vLLM)都通過 Python 接口提供服務。特點&#xff1a…

西門子200smart之modbus_TCP(做主站與第三方設備)通訊

西門子200smart做MODBUS_TCP主站通訊,只有一個指令。設置相關參數即可完成讀寫操作。整 個過程非常復雜,操作非常嚴謹。此次,我們使用匯川EASY系列PLC做從站,完成演示。關于匯川案例的演示,詳見匯川EASY系列之以太網通訊(MODBUS_TCP做從站)-CSDN博客 關于主站和從站的介…

緩存設計模式

緩存設計模式(Cache Design Pattern)是一種用于存儲和管理頻繁訪問數據的技術,旨在提高系統性能、降低數據庫或后端服務的負載,并減少數據訪問延遲。以下是幾種常見的緩存設計模式,并用 Python Redis 進行示例代碼實現…

Java算法隊列和棧經常用到的ArrayDeque

主要是記錄一下add,push,poll這三個常用api,因為這三個就是棧和隊列一念之差的關鍵 1.add(E e) 方法 ?作用:將元素添加到雙端隊列的尾部?(等價于 addLast(E e))。?行為: ?成功時&#xff1…

機器學習——一元線性回歸(算法實現與評估)

一元線性回歸是統計學中最基礎的回歸分析方法,用于建立兩個變量之間的線性關系模型。 1. 模型表達式 一元線性回歸的數學模型為: :因變量(預測值):自變量(輸入變量):回…

Ubuntu下用QEMU模擬運行OpenBMC

1、前言 在調試過程中,安裝了很多依賴庫,具體沒有記錄。關于kvm,也沒理清具體有什么作用。本文僅記錄,用QEMU成功的將OpenBMC跑起來的過程,做備忘,也供大家參考。 2、環境信息 VMware Workstation 15 Pro…

Gradle/Maven 本地倉庫默認路徑遷移 (減少系統磁盤占用)

Gradle 配置環境變量 GRADLE_USER_HOME,如D:/.gradle同時將 %userprofile%/.gradle 移動到配置路徑 Maven 修改settings.xml文件,localRepository同時將 %userprofile%/.m2/repository 移動到配置路徑 IDEA默認用的bundle maven, 路徑為安裝目錄下 p…

MinGW與使用VScode寫C語言適配

壓縮包 通過網盤分享的文件:MinGW.zip 鏈接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取碼: 2c2q 需要下載的插件 1.翻譯 找到VScode頁面,從上數第4個,點擊擴展(以下通此) 搜索---Chinese--點擊---安裝--o…

【C++初階】從零開始模擬實現vector(含迭代器失效詳細講解)

目錄 1、基本結構 1.1成員變量 1.2無參構造函數 1.3有參構造函數 preserve()的實現 代碼部分: push_back()的實現 代碼部分: 代碼部分: 1.4拷貝構造函數 代碼部分: 1.5支持{}初始化的構造函數 代碼部分: …

Java實習生面試題(2025.3.23 be)

一、v-if與v-show的區別 v-show 和 v-if 都是 Vue 中的條件渲染指令,它們的主要區別在于渲染策略:v-if 會根據條件決定是否編譯元素,而 v-show 則始終編譯元素,只是通過改變 CSS 的 display 屬性來控制顯示與隱藏。 二、mybatis-…

stm32標準庫開發需要的基本文件結構

使用STM32標準庫(STM32 Standard Peripheral Library,SPL)開發時,項目中必須包含一些必要的文件,這些文件確保項目能夠正常運行并與MCU硬件交互。以下詳細說明: 一、標準庫核心文件夾說明 使用標準庫開發S…