sábado, 12 de noviembre de 2016

LABORATORIO #10

DESCRIPCIÓN

Controlar desde el Arduino, una matriz LED 8x8 a través de IC MAX7219, para mostrar un número del 0 al 9, dependiendo de la posición del Potenciómetro.

MATERIALES DEL LABORATORIO 

Computador con el IDE de Arduino y el driver de nuestra placa
- Arduino Uno
- Protoboard
- Matriz LED 8x8 MAX7219
- Cables Macho - Macho
- Potenciometros 10.000Ω


MATERIALES DEL LABORATORIO 


    DIAGRAMAS

    PROTOBOARD




    FOTOS MATERIALES Y MONTAJE










    CÓDIGO

    ARDUINO
      1. ///********** Proyecto **********

      2. #include "LedControl.h"
      3. int DataPin = 9;       //pin 9 conectado a DataIn
      4. int ClockPin = 10;     //pin 10 conectado a CLK
      5. int LatchPIN = 8;      //pin 8 conectado a LOAD/CS
      6. int POT1 = A0;         //A0 Potenciometro
      7. LedControl lc=LedControl(DataPin,ClockPin,LatchPIN,1);
      8. //retardo entre envios de datos
      9. unsigned long delaytime=100;
      10.  //Mostrará los caracteres para la numeración del 0 al 9 ,
      11.  //incluyendo el espacio
      12. byte cero[5]={ B00111110, B01000001, B01000001, B00111110, B00000000}; //
      13. byte uno[5]={ B01000010, B01111111, B01000000, B00000000, B00000000}; //
      14. byte dos[5]={ B01100010, B01010001, B01001001, B01000110, B00000000}; //
      15. byte tres[5]={ B00100010, B01000001, B01001001, B00110110, B00000000}; //
      16. byte cuatro[5]={ B00011000, B00010100, B00010010, B01111111, B00000000}; //
      17. byte cinco[5]={ B00100111, B01000101, B01000101, B00111001, B00000000}; //
      18. byte seis[5]={ B00111110, B01001001, B01001001, B00110000, B00000000}; //
      19. byte siete[5]={ B01100001, B00010001, B00001001, B00000111, B00000000}; //
      20. byte ocho[5]={ B00110110, B01001001, B01001001, B00110110, B00000000}; //
      21. byte nueve[5]={ B00000110, B01001001, B01001001, B00111110, B00000000}; //
      22. byte espacio[5]={ B00000000, B00000000, B00000000, B00000000, B00000000}; //
      23. // Permite ejecutar el byte requerido
      24. byte kar[100] = {
      25.   B00000000, B00000000, B00000000, B00000000, B00000000,
      26.   B00111110, B01000001, B01000001, B00111110, B00000000,
      27.   B00000000, B00000000, B00000000, B00000000, B00000000,
      28.   B01000010, B01111111, B01000000, B00000000, B00000000,
      29.   B00000000, B00000000, B00000000, B00000000, B00000000,
      30.   B01100010, B01010001, B01001001, B01000110, B00000000,
      31.   B00000000, B00000000, B00000000, B00000000, B00000000,
      32.   B00100010, B01000001, B01001001, B00110110, B00000000,
      33.   B00000000, B00000000, B00000000, B00000000, B00000000,
      34.   B00011000, B00010100, B00010010, B01111111, B00000000,
      35.   B00000000, B00000000, B00000000, B00000000, B00000000,
      36.   B00100111, B01000101, B01000101, B00111001, B00000000,
      37.   B00000000, B00000000, B00000000, B00000000, B00000000,
      38.   B00111110, B01001001, B01001001, B00110000, B00000000,
      39.   B00000000, B00000000, B00000000, B00000000, B00000000,
      40.   B01100001, B00010001, B00001001, B00000111, B00000000,
      41.   B00000000, B00000000, B00000000, B00000000, B00000000,
      42.   B00110110, B01001001, B01001001, B00110110, B00000000,
      43.   B00000000, B00000000, B00000000, B00000000, B00000000,
      44.   B00000110, B01001001, B01001001, B00111110, B00000000};
      45. void setup() {
      46.   /* el MAX7219 esta en modo Power-saving cuando se
      47.    inicia, se debe sacar de ese estado*/
      48.   lc.shutdown(0,false);    
      49.   lc.setIntensity(0,4);    // configurar brillo a nivel medio
      50.   lc.clearDisplay(0);      // limpiar pantalla
      51. //Establece el pin análogo POT1 como salida
      52.  pinMode(POT1,INPUT);
      53. }
      54. void loop() //Función principal.
      55. // Dependiendo de cada dígito, se envía a la función display
      56. // los estados (0 y 1) a cada uno de los segmentos.
      57. {
      58.   int t1=analogRead(POT1);
      59.   int pos=map(t1,0,1023,0,94);
      60.   lc.setRow(0,0,0);
      61.   // for (int j=0;j<50;j++){
      62.  // Muestra el retraso que debe tener cada caracter
      63.     lc.setRow(0,0,kar[pos]);
      64.     lc.setRow(0,1,kar[pos+1]);
      65.     lc.setRow(0,2,kar[pos+2]);
      66.     lc.setRow(0,3,kar[pos+3]);
      67.     lc.setRow(0,4,kar[pos+4]);
      68.     lc.setRow(0,5,kar[pos+5]);
      69.     lc.setRow(0,6,kar[pos+6]);
      70.     lc.setRow(0,7,kar[pos+7]);
      71.     delay(200);//El tiempo de espera en milisegundos
      72.   /* digitalWrite(LatchPIN, LOW);
      73.   shiftOut(DataPin, ClockPin, MSBFIRST, kar[pos]);
      74.   digitalWrite(LatchPIN, HIGH);
      75.    */
      76. }

    No hay comentarios.:

    Publicar un comentario