🕹️ نقطه‌ی جوی‌استیکی

جوی‌استیک روی A0/A1 یک نقطه را روی ۸ LED جابه‌جا می‌کند.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
const int JOY_BTN = 10;
const int DEAD = 60;          // ignore small wobbles around the centre
int pos = 3;                  // which LED is the dot
unsigned long lastMove = 0, lastPrint = 0;

void setup() {
  for (int i = 0; i < 8; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  pinMode(JOY_BTN, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  int x = analogRead(A0) - 512;   // -512 .. +511, 0 = centre
  int y = analogRead(A1) - 512;
  if (abs(x) < DEAD) x = 0;       // dead zone
  if (abs(y) < DEAD) y = 0;

  // more tilt = faster steps
  int wait = map(abs(x), DEAD, 512, 400, 80);
  if (x != 0 && millis() - lastMove > wait) {
    lastMove = millis();
    if (x > 0 && pos < 7) pos++;
    if (x < 0 && pos > 0) pos--;
  }

  if (digitalRead(JOY_BTN) == LOW) {
    pos = 3;                      // click = back to the middle
  }

  for (int i = 0; i < 8; i++) {
    digitalWrite(ledPins[i], i == pos);
  }

  if (millis() - lastPrint > 300) {
    lastPrint = millis();
    Serial.print("x:"); Serial.print(x);
    Serial.print(" y:"); Serial.print(y);
    Serial.print(" dot:"); Serial.println(pos);
  }
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «نقطه‌ی جوی‌استیکی» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖