娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

將簡單的Arduino Uno(以及一些Python代碼)轉換為粗略的示波器,以查看波形和電壓電平。

怎樣制作基本的ArduinoPC示波器

示波器非常有用,但通常帶有很大的價格標簽。幸運的是,有一些專用示波器的替代方案,所以在這個項目中,我們將把一個簡單的Arduino Uno(以及一些Python代碼)轉換成可以用來查看波形和電壓電平的粗略示波器!


工作原理:Arduino

示波器的硬件/固件端非常簡單,并利用內置的模塊Arduino,ADC。 ADC代表模擬數字轉換器,是一個可以采用模擬電壓(0V和5V之間)并將其轉換為二進制數的模塊。 Arduino有一個10位ADC,這意味著最大電壓5V表示為1023(1111111111),最小電壓0V表示為0(0000000000)。但是,由于Arduino是一個8位機器,無符號字符的大小為8位(稍后你會看到原因),我們只使用ADC結果中的前8位。這意味著5V現在表示為255,0V表示為0V。由于有256個可能的值,每個位代表5/256伏或0.02V(大約)。因此,0x0F的值表示0.3V,0x80的值表示2.56V,值0x3E表示1.22V。


雖然Arduino默認啟用ADC,因此不需要設置代碼,但我們仍將模擬引腳配置為輸入。我們將用于獲取讀數的引腳為A0,即引腳編號14.除引腳配置外,我們還將配置UART模塊以實現PC通信的快速波特率(115200波特),并初始化一些變量。


主循環中的代碼首先從ADC模塊中讀取100個讀數。從ADC讀取模擬數據非常簡單,可以使用函數analogRead(引腳號)完成,該函數返回一個整數,其中10位ADC結果來自引腳號指定的引腳。在我們的例子中,input0指的是引腳14,它是A0。一旦讀取完畢,下一段要執行的代碼就是延遲。延遲的大小(以微秒為單位)由timeBase定義,默認為100。盡管是100us延遲,但讀數之間的真實間距是延遲的大小加上ADC轉換時間(100us),這給出了200us的讀取間隔。為簡單起見,這個項目將被忽略。

一旦完成所有100個讀數,就可以將這些數據發送到PC用于繪圖。為確保接收器能夠正確區分數據事務,Arduino只會在Arduino發送請求“R?”后接收方發送字母“K”后發送數據。

一次Arduino和PC已經成功地相互交談,所有的數據都流出來了。但是,UART工作在8位,并且嘗試在UART上發送整數將需要復雜的轉換,這將使事情變得相當困難。因此,我們只將模擬讀數作為單個字節發送,我們使用函數highByte()來完成。 Arduino中的整數大小為16位,這意味著我們需要取10位結果并將它們向左移動,直到前8位包含我們的數據。為此,我們將數據向左移動六次,這意味著我們丟失了ADC讀數的最低2位,但對于我們的基本示波器無關緊要。

使用8位結果發送,最后一項任務是等待計算機的響應通知Arduino結果已被正確讀取。 Arduino只是停留在一個循環中,等待串口上的字符“K”。一旦讀完,整個循環就會自行重復!

工作原理:Python代碼

Python代碼以及一些額外的庫是什么一個簡單的Arduino數據記錄器到一個基本的示波器。但是,Python本身無法執行某些任務,如圖形例程和串口通信,因此我們需要先獲取幾個庫。幸運的是,如果安裝了PIP,安裝這些庫是輕而易舉的。如果你不這樣做,請先在這里按照本教程獲取點子。安裝pip后,打開命令提示符并按順序輸入以下命令(一次一個):

pip install pyserial

pip install PyGame

一旦成功安裝了這兩個軟件包,我們就可以直接進入我們的圖形應用程序!雖然串行包很容易理解,但pygame包有點復雜,所以這里只介紹基礎知識。我們Python程序的第一個任務是導入所需的庫,它們是pygame(用于生成圖形界面),serial(用于Arduino通信)和時間(用于時間延遲)。下一個代碼塊用于變量聲明和初始化,其中包括pygame的布爾值,字符串和顏色。 pygame中使用的顏色是RGB類型,其中三個字節(0-255)表示紅色,綠色和/或藍色的數量。

完成變量定義后,下一個任務是初始化pygame,這是通過調用pygame.init()來完成的。由于我們計劃將文本打印到我們的窗口應用程序,我們還需要初始化字體引擎,這是通過調用pygame.font.init()來完成的。除了初始化字體引擎之外,我們還將創建一個字體對象,我們將使用它作為渲染字體(將是等寬字體)。 pygame初始化代碼的最后一位將是創建一個窗口(大小為700×500)并將窗口的標題設置為“PyScopeUno”。

下一個任務涉及配置串行端口以使用與Arduino相匹配的波特率(在本例中為115200)。還必須選擇正確的端口(在我的情況下為“COM8”)并指定超時,以便程序在串行端口循環期間不會掛起。配置串口后,最后一步是打開端口!

完成所有初始化代碼后,主程序循環執行,即以while循環的形式,等待直到布爾變量applicationClose等于true。在窗口上單擊關閉按鈕時,此值設置為true,單擊后,串口正常關閉,pygame關閉。

顯示我們記錄的數據的第一項任務是從Arduino獲取串行數據。為此,我們要等到串口中有數據存在。如果此數據等于“R?”,我們將Arduino發送給字符“K”,這導致Arduino將100個字節流式傳輸到PC。程序等待直到收到所有100個字節,一旦完成,將這些字節傳送到數據緩沖區。下一行代碼涉及一些有用的基本操作,包括計算平均值和查找最小/最大值。

最后代碼塊涉及繪制數據,繪制文本和繪制線條,但由于代碼的不言自明的特性,不會對此進行深入討論。我們的示波器程序中的數據不是繪制為單個點,而是作為兩個數據點之間的插值線,因為快速變化的信號將顯示為散點圖,這很難可視化。為此,繪制一條線,其中第一個點是第一個電壓電平,而終點是下一個數據值。由于我們獲取了100個讀數但我們的圖形寬度為400像素,因此我們將x坐標乘以4以拉伸圖形。這樣可以更容易地查看單個讀數。

完整的圖形化程序如下所示。

在不到15分鐘的時間內完成并運行這個項目應該很容易和可行。可能導致最頭疼的步驟是安裝和運行Python庫,因為命令行安裝方法有拋出錯誤,無法找到所需文件或缺少權限的習慣。一旦Arduino加載了代碼,它就會自動開始。假設Python程序有效(確保COM端口正確),那么項目應該可以正常工作。

關鍵字:ArduinoPC示波器 引用地址:怎樣制作基本的ArduinoPC示波器

上一篇:關于示波器頻率響應分析儀選件和伯德圖測試的區別和分析
下一篇:示波器和頻譜分析儀的指標區別

0

推薦閱讀

1 引言在眾多的網絡安全設施中,防火墻是行之有效的重要網絡安全設備,通過對網絡通信進行篩選屏蔽以防未經授權的訪問進出計算機網絡。防火墻是位于可信網絡和不可信網絡之間的一道安全屏障,其最核心的任務就是管理和控制進出網絡的通信量,它可以截獲中途傳輸的數據包并進行處理,然后與事先定義好的安全策略規則相比較,并最終決定轉發或丟棄該數據包...
集微網消息,面板廠中華映管公司總處長黃世昌昨(12)日晚間在臺灣證券交易所重大訊息記者會上宣布,對大陸華映科技已喪失控制權,目前由第2大股東福建省電子信息集團負責經營。黃世昌表示,華映轉投資大陸華映科技持股仍為26.37%,是最大股東,但因辭去董事長及董事職務,已喪失對其控制力;依董事會成員來看,現階段由第2大股東,福建省電子信息集團主導...
西門子 MindSphere 被 Forrester 評為工業物聯網軟件平臺市場領導者MindSphere 合作伙伴生態系統現包括 SAS、AWS、微軟、阿里云和艾睿電子等MindSphere 實現了西門子 Xcelerator 解決方案組合的進一步擴展,以滿足未來工程需求 工業物聯網(IIoT)將對全球生產力的提高產生巨大的推動作用,根據埃森哲的預測,最新一輪數字化創新浪潮將惠及全球近...

史海拾趣

問答坊 | AI 解惑

PCB實例欣賞(Intel 815主板)protel格式

免費PCB實例欣賞(Intel 815主板)protel格式,已重新更新,請需要的朋友下載.…

查看全部問答∨

DSP軟件開發

準備去做LTE DSP基帶開發,以前沒做過DSP相關的。學這個除了要了解物理層協議和數字信號處理外還需要哪些知識呢?需不需要了解信道編碼?請各位大牛給小弟解答。…

查看全部問答∨

首次啟動Tornado出錯,為什么?

安裝完Tornado2.2后,首次Tornado啟動就出現錯誤,內容如下: 彈出框一: Preparing Tornado for first use Finding gnu toolchains 0% 彈出框二: Tornado Error create gnu toolchain information files.you will no be able to open or c ...…

查看全部問答∨

求問:如何判別wince是否待機狀態呢?

要開發一個應用,如果wince在待機狀態(或者沒有人操作wince)n時間后,關閉背光 但是這個 時間 如何判斷呢? 謝謝…

查看全部問答∨

eZ430-Chronos Wireless Watch 有買的嗎?

我們應該買哪個頻率比較好點,看it的網上買915的很多,國內使用是不是買433比較好點,價格49,挺便宜的。…

查看全部問答∨

提供一個ST7單片機開發的QQ群:108091549

                                 提供一個ST7單片機開發的QQ群:108091549…

查看全部問答∨

rts.lib占用的存儲空間太大該怎么辦

我用的是dsp5402, 我設計的板子上沒有加外部存儲器。我在工程中加入了rts.lib庫文件,結果光這個文件占用的存儲空間長度就要ox2100左右,而5402的ROM只有4K。該怎么辦啊?…

查看全部問答∨

boot_serial 用jlink 能正常仿真嗎

請問在使用boot_serial 可以正常的仿真嗎,我的一進去PC就停在0x6a上也跳不進ProcessorInit中老是停在UARTReceive() 中的 while((HWREG(UART0_BASE + UART_O_FR) & UART_FR_RXFE))        {    ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新測試測量文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 德兴市| 汉中市| 文水县| 武城县| 获嘉县| 武鸣县| 瑞昌市| 芷江| 嫩江县| 民勤县| 镇雄县| 永德县| 南平市| 浦江县| 子洲县| 徐水县| 塔城市| 万年县| 盐源县| 靖江市| 肇源县| 宝鸡市| 巩义市| 扶沟县| 龙山县| 密山市| 泸州市| 思茅市| 怀柔区| 石首市| 阿鲁科尔沁旗| 高雄市| 长垣县| 桦川县| 大同县| 香港| 和政县| 延川县| 汕尾市| 泊头市| 韶关市|