#define BITS 12 /*這只是在之後使用BITS標示資料的資料 會被替換為用12來表示
並不是12直接被賦值到ex:一個變數BITS中 所以這和宣告的意思不同*/
#define RED_LED_BUILTIN 2
#define GREEN_LED_BUILTIN 4
void setup() {
//default
Serial.begin(115200);
//先設定要連接各種元件的pin的IO設定
pinMode(RED_LED_BUILTIN, OUTPUT);
pinMode(GREEN_LED_BUILTIN, OUTPUT);
//這題比較複雜 基本接腳的IO設定好後 要經過"potentiomter電壓上限設定>使用ADC(PWM)位元數(資料處理精度)>led控制器的通道設定(通道序號/PWM頻率/PWM的BITS精度)>建立LED的PWM通道的序號連結"
//maximum voltage電壓上限 設定
//設置了模擬至數位轉換器(ADC)的參數
analogSetAttenuation(ADC_11db); /*通常情況下,
我們會用分貝(dB)來表示電壓、功率等的增益或損耗。 dB是一種對數單位,
用來表示兩個值之間的比例*/
analogSetWidth(BITS); //設置了ADC的位元數 表示他的資料處理精度(Accuracy)
//每個燈泡都要有自己的PWM通道
/* PWM(脈衝寬度調變)全名是「Pulse Width Modulation」,即脈衝寬度調變。
PWM是一種調節訊號的方法,通過調節訊號的高電平(也就是脈衝)的寬度,來控制訊號的平均功率。*/
ledcSetup(0, 5000, BITS);/*
第一個參數是 LED 控制器的通道(Channel), ###通常從 0 開始。
第二個參數是 PWM 的頻率,這裡設置為 5000,表示 PWM 脈衝的頻率為 5000 Hz。
第三個參數是 PWM 的位元數(bits),這個參數可能用於指定 PWM 的精度,通常是 1 到 16 位。
*/
ledcSetup(1, 5000, BITS); // 新增一個 PWM 通道,以便控制 GREEN LED 的亮度
ledcAttachPin(RED_LED_BUILTIN, 0);/*ledcAttachPin() 函數用於將 PWM 通道(LED 控制器的通道)
與特定的引腳關聯起來。在這裡,它將 PWM 通道 0(通常表示第一個 PWM 通道)與 LED_BUILTIN 引腳
關聯起來,這樣 LED 控制器就可以控制這個引腳
-> ###指定內建的PWM接腳成PWM輸出*/
ledcAttachPin(GREEN_LED_BUILTIN, 1); // 將 PWM 通道 1 關聯到 GREEN LED 的引腳
// 將綠色 LED 設定為最大亮度
ledcWrite(1, 5000);
}
void loop() {
uint16_t val = analogRead(32);
Serial.printf("val= %u\n", val);
// 控制紅色 LED 的亮度
ledcWrite(0, val);
// 如果希望綠色 LED 的亮度與紅色 LED 相反,可以將下面的設定改為 1023 - val
// 否則,保持 val 不變
uint16_t green_val = 1023 - val;
// 控制綠色 LED 的亮度
ledcWrite(1, green_val);
delay(1000);
}
/*
數位轉換器(Digital Converter)是指將模擬信號轉換為
數位信號或將數位信號轉換為模擬信號的裝置或系統。在電子學
、通訊、資訊科技和其他相關領域中,數位轉換器起著重要作用。
在將模擬信號轉換為數位信號的過程中,
稱為模擬數位轉換(Analog-to-Digital Conversion,簡稱ADC)。
ADC將連續的模擬信號(如聲音、影像或溫度)轉換為離散的數位信號,
以便進行處理、存儲或傳輸。
*/