controlando leds com joystick no arduino
Montagem
exemplo de código
byte joyX = A0; // pino analógico do eixo X
byte joyY = A1; // pino analógico do eixo Y
byte joyButton = 2; // pino digital do botão de pressão
byte ledUp = 9; // pino digital led superior
byte ledRight = 10; // pino digital led à direita
byte ledDown = 11; // pino digital led inferior
byte ledLeft = 12; // pino digital led esquerdo
// set initial variables
unsigned long anterior = 0; // para controle do timer
int x, y, button; // leitura posição do joystick
boolean led;
void setup() {
pinMode(joyX, INPUT); // entrada leitura eixo X joystick
pinMode(joyY, INPUT); // entrada leitura eixo y joystick
pinMode(joyButton, INPUT_PULLUP); // entrada resistor interno pull up pusch button
}
void loop() {
x = analogRead(joyX); // faz a leitura do eixo x (0 a 1023) - analógico
y = analogRead(joyY); // faz a leitura do eixo y (0 a 1023) - analógico
button = digitalRead(joyButton); // faz a leitura do eixo z (0 ou 1) - digital
ledsAction(); // aciona o conjunto de leds
delay(50); // espera 50 milessegundos
}
void ledsAction() {
x >= 1000 ? digitalWrite(ledUp, HIGH) : digitalWrite(ledUp, LOW);
y >= 1000 ? digitalWrite(ledRight, HIGH) : digitalWrite(ledRight, LOW);
x <= 50 ? digitalWrite(ledDown, HIGH) : digitalWrite(ledDown, LOW);
y <= 50 ? digitalWrite(ledLeft, HIGH) : digitalWrite(ledLeft, LOW);
// led pisca 3 vezes - botão acionado
if (button == 0) {
for (byte j=0; j<3; j++) {
turnLed(led = 1);
delay(500);
turnLed(led = 0);
delay(500);
}
}
}
// liga e desliga leds
void turnLed(boolean led) {
digitalWrite(ledUp, led);
digitalWrite(ledRight, led);
digitalWrite(ledDown, led);
digitalWrite(ledLeft, led);
}
Comentários
Postar um comentário