【正點原子K210連載】第二十四章 按鍵輸入實驗 摘自【正點原子】DNK210使用指南-CanMV版指南

第二十四章 按鍵輸入實驗

本章實驗將介紹如何使用CanMV讓Kendryte K210獲取板載按鍵的狀態。通過本章的學習,讀者將學習到在CanMV下讀取Kendryte K210的GPIO上的高低電平狀態。
本章分為如下幾個小節:
14.1 maix.GPIO模塊介紹
14.2 硬件設計
14.3 程序設計
14.4 運行驗證

14.1 maix.GPIO模塊介紹
有關maix.GPIO模塊的介紹,請見第12.1小節《maix.GPIO模塊介紹》。
14.2 硬件設計
14.2.1 例程功能

  1. 當KEY0按鍵被按下后,雙色LED的紅燈亮起,反之熄滅
  2. 當KEY1按鍵被按下后,雙色LED的藍色亮起,反之熄滅
  3. 當KEY2按鍵被按下后,蜂鳴器發聲,反之不發聲
    14.2.2 硬件資源
  4. 雙色LED
    LEDR - IO24
    LEDB - IO25
  5. 蜂鳴器 - IO17
  6. 獨立按鍵
    KEY0按鍵 - IO18
    KEY1按鍵 - IO19
    KEY2按鍵 - IO16
    14.2.3 原理圖
    本章實驗內容,需要讀取獨立按鍵連接IO上的電平狀態,正點原子DNK210開發板上獨立按鍵的連接原理圖,如下圖所示:
    在這里插入圖片描述

圖14.2.3.1 獨立按鍵連接原理圖
通過以上原理圖可以看出,KEY0按鍵、KEY1按鍵和KEY2按鍵對應的IO編號分別為IO18、IO19和IO16,當獨立按鍵沒有被按下時,其對應的IO將處于懸空狀態,此時讀取到的電平將由IO的上下拉決定,當獨立按鍵被按下后,其對應IO的電平將被拉低。
14.3 程序設計
14.3.1 maix.GPIO模塊
有關maix.GPIO模塊的介紹,請見第14.1小節《maix.GPIO模塊介紹》。
14.3.2 程序流程圖
在這里插入圖片描述

圖14.3.2.1 按鍵輸入實驗流程圖
14.3.3 main.py代碼
main.py中的腳本代碼如下所示:

from board import board_info
from fpioa_manager import fm
from maix import GPIO# 為IO分配相應的硬件功能
fm.register(board_info.LEDR, fm.fpioa.GPIO0)
fm.register(board_info.LEDB, fm.fpioa.GPIO1)
fm.register(board_info.BEEP, fm.fpioa.GPIO2)
fm.register(board_info.KEY0, fm.fpioa.GPIOHS0)
fm.register(board_info.KEY1, fm.fpioa.GPIOHS1)
fm.register(board_info.KEY2, fm.fpioa.GPIOHS2)# 構造GPIO對象
ledr = GPIO(GPIO.GPIO0, GPIO.OUT)
ledb = GPIO(GPIO.GPIO1, GPIO.OUT)
beep = GPIO(GPIO.GPIO2, GPIO.OUT)
key0 = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
key1 = GPIO(GPIO.GPIOHS1, GPIO.IN, GPIO.PULL_UP)
key2 = GPIO(GPIO.GPIOHS2, GPIO.IN, GPIO.PULL_UP)while True:# 讀取按鍵狀態,并做相應的按鍵解釋if key0.value() == 0:ledr.value(0)else:ledr.value(1)if key1.value() == 0:ledb.value(0)else:ledb.value(1)if key2.value() == 0:beep.value(1)else:beep.value(0)

可以看到,首先為使用到的IO分配相應的硬件功能,接著是構造GPIO對象,特別的,獨立按鍵相關的GPIO對象都被初始化為上拉輸入模式,以讀取獨立按鍵的狀態,最后在一個循環分別讀取KEY0按鍵、KEY1按鍵和KEY2按鍵對應的GPIO輸入電平,以判斷獨立按鍵是否被按下,若KEY0按鍵被按下,則控制對應的GPIO輸出低電平以控制紅色LED亮起,反之則控制對應的GPIO輸出高電平以控制紅色LED熄滅,KEY1按鍵和KEY2按鍵的讀取和按鍵解釋同理。
14.4 運行驗證
將DNK210開發板連接CanMV IDE,并點擊CanMV IDE上的“開始(運行腳本)”按鈕后,此時,若按下板載的KEY0按鍵,則能看到雙色LED的紅色亮起,釋放KEY0按鍵后,雙色LED的紅色熄滅,若按下KEY1按鍵,則能看到雙色LED的藍色亮起,釋放KEY1按鍵后,雙色LED的藍色熄滅,若按下KEY2按鍵,則能聽到蜂鳴器發聲,釋放KEY2按鍵后,蜂鳴器不發聲,這與理論推斷的結果一致。

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

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

相關文章

基于springboot/java/VUE的旅游管理系統/旅游網站的設計與實現

用戶:注冊,登錄,旅游景點,酒店信息,旅游線路,公告信息,留言板,后臺管理,個人中心,門票預訂管理,酒店預訂管理管理員:登錄,…

Python Excel 高階教程:使用 Spire.XLS 插入、修改和刪除迷你圖

Python 操作 Word 文檔:主流庫對比與選擇指南 在辦公自動化、報告生成、數據處理等領域,利用 Python 程序化地創建、讀取或修改 Microsoft Word 文檔 (.docx 格式) 是一項非常實用的技能。Python 生態中有多個優秀的庫可以完成這項任務,但它…

WebPages PHP:深入解析PHP在網頁開發中的應用

WebPages PHP:深入解析PHP在網頁開發中的應用 引言 隨著互聯網技術的飛速發展,PHP作為一種開源的腳本語言,已經在網頁開發領域占據了舉足輕重的地位。本文將深入探討PHP在網頁開發中的應用,包括其優勢、常用框架、開發流程以及未來…

【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程

【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程 文章目錄【深度學習】【三維重建】windows11環境配置PyTorch3d詳細教程前言確定版本對應關系源碼編譯安裝Pytorch3d總結前言 本人windows11下使用搭建PyTorch3d環境,故此以詳細教程以該算法依賴的環境…

SpringBoot+Mybatis+MySQL+Vue+ElementUI前后端分離版:日志管理(四)集成Spring Security

目錄 一、前言 二、后端開發及調整 1.日志管理開發 2.配置調整 3.日志入庫(注解、切面) 三、前端調整 1.日志管理開發 四、附:源碼 1.源碼下載地址 五、結語 一、前言 此文章在上次調整的基礎上開發后端管理系統的用戶請求日志功能&…

ceph 14.2.22 nautilus Balancer 數據平衡

Ceph Balancer (upmap 模式) 啟用與配置 在 Ceph Nautilus (14.2.22) 版本中啟用和配置 Balancer 的完整步驟 1. 前提檢查 檢查集群的初始狀態和版本。 集群狀態 (ceph -s)cluster:id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxhealth: HEALTH_OKservices:mon: 3 daemons, quo…

在Linux上對固態硬盤進行分區、格式化和掛載的步驟

在Linux上對固態硬盤進行分區、格式化和掛載的步驟如下: 插入固態硬盤:將固態硬盤插入計算機的SATA或M.2接口。 確認固態硬盤被識別:打開終端,輸入以下命令查看硬盤是否被系統識別 fdisk -l 查找硬盤列表中的固態硬盤&#xf…

用Unity結合VCC更改人物模型出現的BUG

1、上傳模型時出現錯誤經過排查是因為服裝發型預制體放到人物模型上之后,物體上自動多了一個空腳本,懷疑是VRC工具箱自動添加的。解決方法:在上傳前將帶有空腳本的物體上的組件刪除即可2、添加頭發時出現模型碰撞錯誤按照【【VRCHAT】從零開始…

k8s之DevicePlugin

解密 Kubernetes Device Plugin:讓容器輕松駕馭特殊硬件 在容器化技術飛速發展的今天,容器憑借輕量、隔離、可移植的特性成為應用部署的主流選擇。但在實際應用中,當容器需要訪問 GPU、FPGA 等特殊硬件資源時,事情就變得不那么簡單…

動態規劃Day7學習心得

今天給動態規劃掃個尾,還有兩題。 第一道:647. 回文子串 - 力扣(LeetCode) 暴力解法 兩層for循環,遍歷區間起始位置和終止位置,然后還需要一層遍歷判斷這個區間是不是回文。所以時間復雜度:O…

SpringCloud實戰:機器人對戰系統架構

基于Spring Cloud的機器人對戰 以下是基于Spring Cloud的機器人對戰實例相關案例和技術實現方向的整理,涵蓋微服務架構設計、通信機制及典型應用場景: 分布式對戰系統架構 采用Spring Cloud Alibaba+Nacos實現服務注冊與發現,每個機器人實例作為獨立微服務部署。通過Open…

LLM 核心能力解構與項目實踐指南

大語言模型(LLM)的爆發式發展,本質上是其核心能力在產業場景中的規模化驗證。作為技術博主,本文將系統拆解 LLM 的六大核心能力,結合工業級項目案例,提供從能力映射到工程實現的完整技術路徑,并…

retro-go 1.45 編譯及顯示中文

最近做了個使用 retro-go 的開源掌機 基于ESP32-S3的C19掌機(適配GBC外殼) - 立創開源硬件平臺 ,做完后用提供的固件發現屏幕反顯了,估計是屏幕型號不太對,隨即自己拉 retro-go 官方庫來編譯,拉取的最新的 …

中州養老項目:Mybatis自動填充攔截器

功能:在新增護理項目的時候,創建人,創建時間和修改時間字段會自動攔截填充,這些公共字段可以省去我們一個一個處理的麻煩依靠:AutoFillInterceptor攔截器,MybatisConfig配置類第一步:我們需要借助一個MybatisConfig,configuration標志著這是一個配置類,我們需要將autoFillInter…

[創業之路-527]:什么是產品技術成熟度曲線?

產品技術成熟度曲線(Gartner Hype Cycle)是由全球知名咨詢機構Gartner提出的工具,用于可視化展示新興技術從誕生到成熟的發展軌跡,以及市場對其預期和實際采用趨勢的變化。該曲線通過五個階段刻畫技術生命周期,幫助企業…

VScode對Ubuntu用root賬號進行SSH遠程連接開發

由于linux服務器大部分都是基于命令行的操作,缺乏比較方便好用的編輯工具,對于經常在linux服務器上做開發的同學來說直接在服務器上進行開發或配置文件的修改還不是特別的方便。雖然linux上有vi或vim比起圖形化的編輯工具體驗感還是不是很好。作為程序員…

【物聯網】基于樹莓派的物聯網開發【20】——樹莓派控制DHT11溫濕度傳感器實戰

傳感器概述 DHT11是一款有已校準數字信號輸出的溫濕度傳感器。 其精度濕度5%RH, 溫度2℃,量程濕度20-90%RH, 溫度0~50℃。分為3個接口,分別為:VCC, DATA, GND。 產品圖片主要用途 檢測環境溫濕度 GPIO控制DHT11溫濕度傳…

AI原生數據庫:告別SQL的新時代來了?

在2025年的今天,生成式AI的浪潮正以前所未有的力量重塑著各行各業。從代碼生成到藝術創作,大型語言模型(LLM)的能力邊界不斷被拓寬。現在,這股浪潮正涌向信息技術領域最古老、最核心的基石之一:數據庫。一個…

題單【模擬與高精度】

P1042 [NOIP 2003 普及組] 乒乓球 P1042 [NOIP 2003 普及組] 乒乓球 - 洛谷 #include<bits/stdc.h> using namespace std;char C; string S; int n,A,B;void Work(int Lim) {for(char i:S){if(iW) A;if(iL) B;if(max(A,B)>Lim && abs(A-B)>2){cout<<…

數據結構學習基礎和從包裝類緩存到泛型擦除的避坑指南

目錄 1.數據結構的概念和算法 1.1 數據結構的概念 1.2 數據結構的集合框架 1.3 算法 1.3.1 時間復雜度 1.3.2 空間復雜度 2.包裝類 2.1 為什么需要包裝類&#xff1f; 2.2 裝箱和拆箱 3. 初識泛型 3.1 認識泛型 3.2 泛型類的使用 3.3 泛型的編譯 3.4 通配符 3.4.1 …