--- title: MicroPython 繪製歷史曲線 image: https://i.imgur.com/6tvByHZ.jpg disqus: paoyung --- # MicroPython 繪製歷史曲線 ###### tags: `致敬` | `MicroPython` | `ESP32` > [color=#58f][name=Paoyung][time=Jun 04, 2022] [:snake: ℳ𝒾𝒸𝓇ℴ𝒫𝓎𝓉𝒽ℴ𝓃 隨手記](/@PaoyungChang/mpy_trifiles) 前言 --- >[color=skyblue]這是一篇致敬文 >[阿好伯](/@LHB-0222)的文章在[這裡](/@LHB-0222/MPY_ADC_LinePlot)喔! 在 Line 的 [**益師傅 MicroPython 同學會中**](https://www.facebook.com/groups/3636001276437792),某位大神提供了[明體中文字庫模組](https://hackmd.io/@PaoyungChang/BynkmRq_c),一看內容眼晴為之一亮,趕快找出我封塵已久的 SSD1306 想要來試試。然後突然[阿好伯](https://hackmd.io/@LHB-0222)的[「micropython 讀取ADC繪製歷史曲線」](/@LHB-0222/MPY_ADC_LinePlot)的這篇也讓我感到興趣,於是決定先轉個彎來致敬一下。 :rolling_on_the_floor_laughing: I2C or SPI --- 阿好伯範例中是使用 I2C,我手上的 SSD1306 則是 SPI/I2C 可調,但預設在 SPI 與範例不同,要調整的話必須把背板那幾顆小小的 0805 SMD 電阻解焊再換個位置,為避免手拙弄壞還是用 SPI 的連接方式。 ESP32 hall effect sensor --- 另外我也少了 VR 來產生 ADC 訊號,不過 ESP32 有一個內建的 hall effect sensor,拿磁鐵在 ESP32 鐵殻上晃啊晃的就可以產生不同的數值來,就拿它來模擬訊號吧! Pins --- 再來就是要把線給接上,關於 Pin 脚通常都是查詢 datasheet,或網路上找 Pinouts 圖,其實還有一個更輕鬆的方法。MicroPython 和 Python 一樣有 introspection 特性,所以我們其實問問它本人即可。 ``` python=1 >>> from machine import Pin, I2C, SPI >>> I2C(0) I2C(0, scl=22, sda=21, freq=400000) >>> I2C(1) I2C(1, scl=25, sda=26, freq=400000) >>> SPI(1) SPI(id=1, baudrate=500000, polarity=0, phase=0, bits=8, firstbit=0, sck=14, mosi=13, miso=12) >>> ``` 只要依著它講的接線就好啦! 如果沒有照著接,那麼它會提醒你要改用 SoftI2C or SoftSPI 才行。 ```python=9 >>> i2c = I2C(sda=Pin(23), scl=Pin(19)) Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead >>> ``` 以本篇為例的接線如下: |MOSI|MISO |SCK| DC |RST|CS | |:--:|:---:|:-:|:--:|:-:|:-:| | 13 |unuse|14 | 4 | 5 |15 | Run 起來 --- 整理以上資料,以 hall sensor 當模擬訊號、SSD1306 使用 SPI、加上[阿好伯的範例](/@LHB-0222/MPY_ADC_LinePlot)來組成新玩法。 因為我加了許多可調的參數,所以程式有一點點長,先來個圖片,鐵殻上那個圓柱體是磁鐵... :sweat_smile: ![](https://i.imgur.com/5za8YSy.jpg) ![](https://i.imgur.com/6tvByHZ.jpg) :::danger :collision: **磁鐵有導電性,操作時請注意勿短路造成開發板損毀。** :collision: ::: [模組 ssd1306.py 在此下載](https://github.com/micropython/micropython/blob/master/drivers/display/ssd1306.py) {%gist paoyung/436a1a5361ede70bd0fde2e1563185b7%} **轉彎轉完該來去試試那個[中文字庫](https://hackmd.io/@PaoyungChang/BynkmRq_c)了** :rocket: