🕹️ نقطهی جویاستیکی
جویاستیک روی 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);
}
}
چطور اجرایش کنم؟
- شبیهساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
- از پنل «نمونهها»، «نقطهی جویاستیکی» را بارگذاری کن — مدار و کد با هم میآیند.
- دکمهی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
- حالا کد را تغییر بده — عددها، پینها، ترتیب — و دوباره اجرا کن!