DEV Community

張旭豐
張旭豐

Posted on

用搖桿做一個「姿勢控制器」——自己定義什麼叫「動一動」

這個裝置會做什麼

家裡的燈只能「開」或「關」?現在你可以「動一動」就變。

今天做一個姿勢控制器——用最普通的搖桿,控制 LED 的亮度和顏色。往左推變暗,往右推變亮;往上拉變暖色,往下壓變冷色。這不是按鈕,是你的手勢。


需要的材料

材料 哪裡買 參考價
Arduino Uno 露天拍賣 $250
雙軸搖桿模組(KY-023) 露天拍賣 $50
RGB LED 電子材料行 $20
麵包板 + 跳線 電子材料行 $30

總計約 $350,組裝時間 30 分鐘。


電路圖

Arduino A0 ─── VRx(搖桿 X 軸)
Arduino A1 ─── VRy(搖桿 Y 軸)
Arduino D9  ─── RGB LED R腳
Arduino D10 ─── RGB LED G腳
Arduino D11 ─── RGB LED B腳
Arduino GND ─── RGB LED GND + 搖桿 GND
Enter fullscreen mode Exit fullscreen mode

Arduino 程式碼

int xPin = A0;
int yPin = A1;
int rPin = 9;
int gPin = 10;
int bPin = 11;

void setup() {
  Serial.begin(9600);
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(rPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(bPin, OUTPUT);
}

void loop() {
  int xVal = analogRead(xPin);   // 0-1023
  int yVal = analogRead(yPin);   // 0-1023

  // X軸控制亮度
  int brightness = map(xVal, 0, 1023, 0, 255);

  // Y軸控制色相(HSV概念)
  int hue = map(yVal, 0, 1023, 0, 255);

  // 簡單RGB轉換
  analogWrite(rPin, (hue > 85 && hue < 170) ? brightness : 0);
  analogWrite(gPin, (hue > 0 && hue < 85) ? brightness : 0);
  analogWrite(bPin, (hue > 170) ? brightness : 0);

  delay(50);
}
Enter fullscreen mode Exit fullscreen mode

為什麼手勢比按鈕更直覺

按鈕是二元思考:開或關。
搖桿是連續思考:多少、多強、多暖。

設計系的同學應該很熟悉這個邏輯——參數式設計本來就是「滑動數值」而不是「選開關」。把這個直覺帶進實體互動,LED 只是第一步。


三個延伸方向

  1. 加上 MIDI:把數值映射成音高,做成音樂控制器
  2. 改成遊戲手把:映射成方向鍵 + 功能鍵
  3. 加上「鎖定」功能:特定姿勢自動保持燈光不變

完成之後

你房間的燈不再需要牆壁開關。你蹲下來,燈就暗下來。你站起來伸手,燈就變成暖黃色。

這聽起來有點怪,但做出來的瞬間你會一直玩,停不下來。


你可以從這裡開始

材料在露天一天到貨。組裝不複雜。程式的參數你可以自己調——這本來就是屬於你的控制器。

Top comments (0)