/* * 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);
}
Arduino para 4º de ESO
Kiwibot
Guía de trabajo con KiwiBot
Mover punto Matriz de LEDs con Joystick
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
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0