/******************************************************************************* * * I21: Usando o módulo Joystick KY-023 * Autor: Angelo Luis Ferreira * Data: 05/04/2023 * * http://squids.com.br/arduino * *******************************************************************************/ 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); }