Por el momento solo el vídeo funcionando, mas adelante pondré el código cuando lo entienda (…), organice y cree el esquema de conexiones.
Borrador del código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
//Se definen las constantes: // Dos a modo de array en las cuales se asigna cada pin del matriz de leds a los pines del Arduino, en total son 8 pines para las columnas y 8 pines para las filas, 8x8=64 Leds // Otras dos para los pines en los cuales se conectan las resistencias variables que generaran las coordenadas X e Y. // Los pines digitales se númeran del 0 al 13 y los analogicos o bien del 14 al 19 ó del A0 al A5 const int columna[8] = { 6,7,8,9,10,11,12,13 }; const int fila[8] = { 2,3,4,5,14,15,16,17 }; const int corX = 18; const int corY = 19; // 2-dimensional array of pixels: int pixels[8][8]; // cursor position: int x = 5; int y = 5; void setup() { Serial.begin(9600); // initialize the I/O pins as outputs: // iterate over the pins: for (int thisPin = 0; thisPin < 8; thisPin++) { // initialize the output pins: pinMode(columna[thisPin], OUTPUT); pinMode(fila[thisPin], OUTPUT); // take the columna pins (i.e. the cathodes) high to ensure that // the LEDS are off: digitalWrite(columna[thisPin], HIGH); } // initialize the pixel matrix: for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { pixels[x][y] = HIGH; } } } void loop() { // read input: readSensors(); // draw the screen: refreshScreen(); } void readSensors() { // turn off the last position: pixels[x][y] = HIGH; // read the sensors for X and Y values: x = 7 - map(analogRead(corX), 0, 1023, 0, 7); y = map(analogRead(corY), 0, 1023, 0, 7); // set the new pixel position low so that the LED will turn on // in the next screen refresh: pixels[x][y] = LOW; } void refreshScreen() { // iterate over the filas (anodes): for (int thisfila = 0; thisfila < 8; thisfila++) { // take the fila pin (anode) high: digitalWrite(fila[thisfila], HIGH); // iterate over the columnas (cathodes): for (int thiscolumna = 0; thiscolumna < 8; thiscolumna++) { // get the state of the current pixel; int thisPixel = pixels[thisfila][thiscolumna]; // when the fila is HIGH and the columna is LOW, // the LED where they meet turns on: digitalWrite(columna[thiscolumna], thisPixel); // turn the pixel off: if (thisPixel == LOW) { digitalWrite(columna[thiscolumna], HIGH); } } // take the fila pin low to turn off the whole fila: digitalWrite(fila[thisfila], LOW); } } |
Me gusta el montaje, gracias por publicarlo.
Me gustaría repetirlo, te agradeceria por tanto el esquema de conexionado y algo de codigo.
Felicidades
Acabo de añadirte el código, aunque esta sin traducir. Me puse a hacer otros proyectos y este de momento lo he dejado de lado.
Saludos.
Edit:
El vídeo que has enlazado como web veo que es tuyo, tienes un blog o algo para ver tus proyectos, código, etc.?
Hola, solo quería saber si por casualidad es normal que me salga error de código en la parte de:
// turn off the last position:
pixels [x][y] = 0;
Error: ‘y’ was not declared in this scope
Eso por ahora.. Gracias
Hola Juan,
A mi me sigue compilando el código, no lo habrás copiado correctamente y por eso te da error.
Saludos.
No sé, todo el código parece estar bien menos eso… Y otra duda que me quedó, es más «necesidad» que duda, podrías pasarme el esquemático del circuito basado en una matriz de LEDs 8×8 (Matriz hecha manualmente)?? O simplemente ése del video, necesito trabajar la Matriz como proyecto final y no logro conseguir hacer funcionar el trabajo….
Mi idea principal era trabajar en una matriz controlada con Arduino que pudiese graficar Números-Letras, pero tengo el consistente problema de que no puedo encender más que cuadrantes de LEDs…. por ej:
x1 x2 x3 x4
x5 x6 x7 x8
x9 x10 x11 x12
Si yo programo, y enciendo «columna 1» y «fila 1» se enciende «x1», y si quiero encender al mismo tiempo «x6» no puedo ya que tmb se encenderían «x2» y «x5″….
Se entiende más o menos como va?? Si me pudieses ayudar con eso lo agradecería mucho
Hola,
No te funciona porque tu matriz de LEDs será distinto modelo que el mío, tienes que buscar la hoja de datos pasta saber cómo conectar cada pin.
El código no te debería dar error.
Saludos
Jajajaja, no entendiste, literalmente hablaba de una Matriz de LEDs (HECHA MANUALMENTE)
Prueba con esto
https://www.arduino.cc/en/Tutorial/RowColumnScanning
Seguís sin entender, pero gracias por el esquema 🙂
Acabo de volver a reescribir el código, y ya se compiló, podrías pasar el esquema del circuito que usaste pls??
No lo tengo.