O módulo joystick (#30) combina dois potenciómetros (eixo X e eixo Y) e um botão digital (pressionar o joystick). A cobertura ergonómica (#31) encaixa no topo. Em repouso os eixos lêem ~512 (centro). O botão usa pull-up interno — LOW quando premido.
#define JOY_X A0
#define JOY_Y A1
#define JOY_SW 2
void setup() {{
pinMode(JOY_SW, INPUT_PULLUP); // Pull-up: LOW = premido
Serial.begin(9600);
}}
void loop() {{
int x = analogRead(JOY_X); // 0–1023
int y = analogRead(JOY_Y); // 0–1023
bool sw = (digitalRead(JOY_SW) == LOW);
Serial.print("X:"); Serial.print(x);
Serial.print(" Y:"); Serial.print(y);
Serial.print(" SW:"); Serial.println(sw ? "PREMIDO" : "solto");
delay(100);
}}#define JOY_X A0
#define JOY_Y A1
#define CENTRO 512
#define DEADZONE 80 // Ignorar variações menores que ±80
String direcao(int x, int y) {{
int dx = x - CENTRO, dy = y - CENTRO;
if (abs(dx) < DEADZONE && abs(dy) < DEADZONE) return "CENTRO";
if (abs(dx) > abs(dy)) return dx > 0 ? "DIREITA" : "ESQUERDA";
else return dy > 0 ? "CIMA" : "BAIXO";
}}
void setup() {{ Serial.begin(9600); }}
void loop() {{
int x = analogRead(JOY_X), y = analogRead(JOY_Y);
String dir = direcao(x, y);
Serial.println(dir);
delay(150);
}}#include <Servo.h>
#define JOY_X A0
#define JOY_Y A1
Servo servoX, servoY;
void setup() {{
servoX.attach(9); // Servo X no pino 9
servoY.attach(10); // Servo Y no pino 10
}}
void loop() {{
int x = analogRead(JOY_X);
int y = analogRead(JOY_Y);
// Mapear 0–1023 para 0–180 graus
servoX.write(map(x, 0, 1023, 0, 180));
servoY.write(map(y, 0, 1023, 0, 180));
delay(15);
}}// Cursor X/Y no Serial Monitor — move um 'o' numa grelha 10×5
#define JOY_X A0
#define JOY_Y A1
#define JOY_SW 2
#define COLS 10
#define ROWS 5
#define DZ 150
int cx = 5, cy = 2; // Posição do cursor
void setup() {{
pinMode(JOY_SW, INPUT_PULLUP);
Serial.begin(9600);
}}
void loop() {{
int x = analogRead(JOY_X) - 512;
int y = analogRead(JOY_Y) - 512;
if (x > DZ) cx = min(cx+1, COLS-1);
if (x < -DZ) cx = max(cx-1, 0);
if (y > DZ) cy = min(cy+1, ROWS-1);
if (y < -DZ) cy = max(cy-1, 0);
// Desenha grelha
Serial.println("---");
for (int r = 0; r < ROWS; r++) {{
for (int c = 0; c < COLS; c++)
Serial.print((c==cx && r==cy) ? "O" : ".");
Serial.println();
}}
delay(200);
}}