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

Postagens mais visitadas