¿Que te parecio mi blog?

martes, 25 de julio de 2017

Controlando el movimiento del LED con Joystick

Lo que necesitamos para realizar la práctica fue un joystick, con él se produjeron conexiones con la matriz y el Arduino. Primero se coordinó que los leds se mueva en las direcciones que daba el joystick, es decir que se mueva un espacio cada vez que se movía el joystick y el led de la matriz iba en la dirección que este lo indicara. Con la  Matriz 8x8 conectado al Arduino Mega y el uso del Joystick, se modificó el código base para que el movimiento del Led sea automática de tal manera que parta de un led específico y se mueva a la derecha solo y cuando mueva el control arriba, abajo, derecha o izquierda cambie de dirección. Cabe mencionar que si va a la derecha y el control lo posiciono a la derecha no deberá pasar nada y continuar.
 Para eso se necesitó la siguiente programación:
int ladoy = A0;
int ladox = A1;

int valor1;
int valor2;

int posX = 5;
int posY = 13;

void setup() {
  Serial.begin(9600);
  //PINES DEL 2 AL 19 COMO SALIDA  
  for (int j = 2; j <= 17; j++)
    pinMode(j, OUTPUT);

  //APAGO LOS PINES LOS POSITIVOS LES MANDO LOW Y LOS NEGATIVOS LES MANDO HIGH
  for (int j = 2; j <= 9; j++)
    digitalWrite(j, LOW);

  for (int j = 10; j <= 17; j++)
    digitalWrite(j, HIGH);

  digitalWrite(posX, HIGH);
  digitalWrite(posY, LOW);
}

void loop() {
  valor1 = analogRead(ladox);
  valor2 = analogRead(ladoy);
  Serial.print("X: ");
  Serial.print(valor1);
  Serial.print(" - ");
  Serial.print("Y: ");
  Serial.println(valor2);
  digitalWrite(posX, LOW);
  digitalWrite(posY, HIGH);
  if (valor1 > 700) {
    if (posX == 9)
      posX = 2;
    else
      posX++;//posX = posX + 1;
  } else {
    if (valor1 < 400) {
      if (posX == 2)
        posX = 9;
      else
        posX--;//posX = posX - 1;
    }
  }

  if (valor2 > 700) {
    if (posY == 17)
      posY = 10;
    else
      posY++;
  } else {
    if (valor2 < 400) {
      if (posY == 10)
        posY = 17;
      else
        posY--;
    }
  }
  digitalWrite(posX, HIGH);
  digitalWrite(posY, LOW);
 
  delay(250);
}