from machine import Pin, ADC, PWM # 從nachine模組引入Pin、ADC、PWM
import time # 引入time模組
SW1 = Pin(15, Pin.IN, Pin.PULL_UP) # 創建Pin物件,將GPIO15設定為輸入,並使用內建的提升電阻,給定別名為SW1
SW2 = Pin(10, Pin.IN, Pin.PULL_UP) # 創建Pin物件,將GPIO10設定為輸入,並使用內建的提升電阻,給定別名為SW2
adc = ADC(4) # 創建ADC物件,將GPIO4設定為輸入,給定別名為adc
ledpin = Pin(20, Pin.OUT) # 創建Pin物件,將GPIO20設定為輸出,給定別名為ledpin
LED = PWM(ledpin, 1000) # 創建PWM物件,設定PWM輸出到ledpin,頻率為1000Hz
sw_count = 0 # 用來計算按鈕按下次數,初始化為0
def ADC_PWM():
"""
用於讀取ADC的值、調整PWM佔空比,並顯示ADC的值的函式
"""
val = adc.read() # 讀取ADC的值
val = int(val / 4) # 調整ADC的值,最大值4095/4=1023.75,再取整數
LED.duty(1023 - val) # 設置PWM佔空比
print('current adc value:', str(val)) # 顯示當前ADC的值
time.sleep_ms(500) # 延遲500毫秒
while True:
if (SW2.value() == 0): # 檢查SW2按鈕是否被按下,用以結束程式
print('End Program') # 顯示End Program
break; # 跳出while迴圈
elif (SW1.value() == 0): # 檢查SW1按鈕是否被按下,並計算按下次數
time.sleep_ms(500) # 延遲500毫秒
sw_count += 1 # 每按一次,計數器+1
print( '目前SW_count的數值為', str(sw_count)) # 顯示當前sw_count的值
while (SW1.value() == 0): # 等待SW1釋放
pass
if (sw_count % 2 == 1): # 檢查sw_count是否為奇數
ADC_PWM() # 如果是,啟動ADC_PWM副函式
while (SW1.value() == 0): # 等待SW1釋放
passLoading
esp32-s3-devkitc-1
esp32-s3-devkitc-1