DEV Community

張旭豐
張旭豐

Posted on

用搖桿做一個姿勢控制器——身體就是遙控器

用搖桿做一個姿勢控制器——身體就是遙控器

你知道嗎?玩《蜘蛛人》的時候,往上推搖桿,蜘蛛人會跳。

那天晚上,阿哲往上推搖桿的時候,心裡想的卻是:

「如果家裡的燈也可以這樣動,應該很酷。」


燈,認識你的那一刻

他停下來了。

不是因為遊戲裡的什麼,是因為那個念頭——

「往上推,房間的燈也跟著亮?」

不是按開關。不是喊聲。是輕輕推一下搖桿,燈就懂了。

他後來說,那感覺像是「這房間突然認識我了」。


身體多了一個開關

做出來之後的生活是這樣的:

站在房間中央,把搖桿往上推——燈亮了。
往下推——暗下去。
往左,往右——顏色換一換。

不是遙控器。不是手機。是你的手。


做出這個,你需要什麼

  • Arduino Nano(兼容版)—— NT$130
  • KY-023 搖桿—— NT$55
  • WS2812B 燈條(30顆)—— NT$120
  • 麵包板 + 杜邦線—— NT$50

總共大約 NT$355。

今天下單,明天到貨。


為什麼是「姿勢」而不是「按鈕」

按鈕是確定的:按下去,A 或 B。
姿勢是不確定的:往上推多少,決定燈多亮。

這就是好玩的地方——

當燈的回應取決於你手的幅度,
你就會開始「玩」房間,
而不只是在「使用」它。


怎麼組裝

第一步:把東西攤開

拿出 Arduino,拿出搖桿,拿出燈條。
放在桌上,看一分鐘。

這就是你的遙控器。只不過不是對著電視,是對著整個房間。

第二步:接線(只有6條)

搖桿  →  Arduino
5V    →  5V
GND   →  GND
X     →  A0
Y     →  A1

燈條  →  Arduino
5V    →  5V
GND   →  GND
訊號線→  D6
Enter fullscreen mode Exit fullscreen mode

第三步:燒程式

#include <Adafruit_NeoPixel.h>

#define LED_PIN 6
#define NUM_PIXELS 30
Adafruit_NeoPixel strip(NUM_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show();
}

void loop() {
  int x = analogRead(A0);
  int y = analogRead(A1);

  uint8_t brightness = map(y, 0, 1023, 255, 0);
  uint16_t hue = map(x, 0, 1023, 0, 65535);

  uint32_t color = strip.ColorHSV(hue, 255, brightness);
  for (int i = 0; i < NUM_PIXELS; i++) {
    strip.setPixelColor(i, color);
  }
  strip.show();
  delay(50);
}
Enter fullscreen mode Exit fullscreen mode

複製,燒錄。就這幾行。


從這裡開始

  1. 露天拍賣搜尋:Arduino Nano、KY-023、WS2812B 30顆
  2. 今天下單,明天到貨
  3. 下載 Arduino IDE(免費,有中文介面)
  4. 複製上面的程式碼,燒進去
  5. 把燈條黏在牆上,試著推一下搖桿

你會看到燈跟著動。

那一刻,你就知道——

這房間,聽得懂你的話。

Top comments (0)