--- title: 專題四程式 tags: code --- ### 專題四程式 ```c= // 數位輸出腳位 enum digitalOutput { LedRed = 11, LedGreen = 10, LedBlue = 9, }; // 類比輸入腳位 enum analogInput { AiRed = A0, AiGreen = A1, AiBlue = A2, }; // 正規化後(0-255)輸出至 PWM 的對應 RGB 數值 int outputRedValue = 0; int outputGreenValue = 0; int outputBlueValue = 0; // 類比輸入的 RGB 大小相對讀值(0-1024) int inputRedValue = 0; int inputGreenValue = 0; int inputBlueValue = 0; void setup() { // 設定串列埠傳輸速率,單位:鮑率(Baud rate) Serial.begin(9600); // 設定數位輸出對應腳位 pinMode(LedRed, OUTPUT); pinMode(LedGreen, OUTPUT); pinMode(LedBlue, OUTPUT); } void loop() { // 透過類比輸入從光敏電阻電路讀取電壓值 inputRedValue = analogRead(AiRed); delay(5); inputGreenValue = analogRead(AiGreen); delay(5); inputBlueValue = analogRead(AiBlue); // 將輸入(0-1024)正規化成 PWM 值(0-255) outputRedValue = inputRedValue / 4; outputGreenValue = inputGreenValue / 4; outputBlueValue = inputBlueValue / 4; // 將 PWM 值輸出至對應 RGB LED 腳位 analogWrite(LedRed, outputRedValue); analogWrite(LedGreen, outputGreenValue); analogWrite(LedBlue, outputBlueValue); // 顯示數值在串列監視器 Serial.print("Input: "); Serial.print("R: "); Serial.print(inputRedValue); Serial.print(", G: "); Serial.print(inputGreenValue); Serial.print(", B: "); Serial.print(inputBlueValue); Serial.print(" # "); Serial.print("Output: "); Serial.print("R: "); Serial.print(outputRedValue); Serial.print(", G: "); Serial.print(outputGreenValue); Serial.print(", B: "); Serial.print(outputBlueValue); Serial.println("\n"); } ```