---
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:


:::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: