Saltar la navegación

Kiwibot

Mover punto Matriz de LEDs con Joystick

/* * Programa para mover un punto de la Matriz con el Joystick * Noviembre de 2015 * Jose Pujol */

// Pines registro de desplazamiento
const int latchPin = 6;
const int datosPin = 5;
const int relojPin = 9;

// Pines Joystick
const int joyX = A4;
const int joyY = A5;

// Lectura del Joystick
int leerX = 0;
int leerY = 0;

//Vector con las columnas como 1s
byte columna[7] = {B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000};
// Vector con las filas como ceros
byte fila[5] = {B11110111, B11101111, B11011111, B10111111, B01111111};

// Posición del punto en el vector columna y fila
int j = 0;
int i = 0;

// Velocidad de desplazamiento
int tiempo = 100;

void setup() {
  // Declaramos los pines como salidas
  pinMode(latchPin, OUTPUT);
  pinMode(datosPin, OUTPUT);
  pinMode(relojPin, OUTPUT);
  // Serial.begin(9600);
}

void loop() {
  //Lee los valores del joystick
  leerX = analogRead(joyX);
  leerY = analogRead(joyY);

  //Cambia la columna
  if (leerX <= 300) {
    if (j > 0) j--;
  }
  if (leerX >= 700) {
    if (j < 6) j++;
  }
  //Cambia la fila
  if (leerY <= 300) {
    if (i < 4) i++;
  }

  if (leerY >= 700) {
    if (i > 0) i--;
  }

  // Escribe el punto en la matriz
  digitalWrite(latchPin, LOW);            //Recibe datos
  shiftOut(datosPin, relojPin, LSBFIRST, fila[i]);    //Imprime el punto
  shiftOut(datosPin, relojPin, LSBFIRST, columna[j]);
  digitalWrite(latchPin, HIGH);          //Muestra los datos recibidos
  // tiempo que limita la velocidad de desplazamiento
  delay(tiempo);
}


Control de la Matriz de LED vía APP

 
/* CÓDIGO PARA APP MATRIZ DE LEDS
La aplicación manda una letra 'a'(apagado) o 'e'(encendido) y dos números según la fila y la columna.
Desarrollado por Jose Pujol, Alberto Pumar y Carlos Pumar
Marzo de 2015
*/
#include <Matriz.h>
Matriz matriz(6, 9, 5);
int incomingByte;
int unidad=0;
int decena=0;
void setup(){
  Serial.begin(9600);
}
void loop(){
  while (incomingByte < 1) { //Si recibe datos,
    incomingByte = Serial.read(); //Acumula el último byte en incomingByte
    matriz.printMatrix();
  }
  while (decena < 1) { //Si recibe datos,
    decena=Serial.read();
  }
  while (unidad < 1) {
    unidad=Serial.read();
  }
  if(incomingByte == 'e'){
    matriz.newPixel(decena-48, unidad-48);
  }
  if(incomingByte == 'a'){
    matriz.deletePixel(decena-48, unidad-48);
  }
  incomingByte=0;
  unidad=0;
  decena=0;
}

Toda la información sobre este proyecto en este enlace


Creado con eXeLearning (Ventana nueva)