Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include <Sprite.h>  
  2. #include <Matrix.h>
  3.  
  4. int count = 0;
  5.  
  6. int x = 8;
  7. int letra1 = 0;
  8. int letra2 = 0;
  9.  
  10. int tiempoEspera = 0;
  11.  
  12. const int numChips = 1;
  13. int DIN  = 16;  //1
  14. int CLK  = 17;  //13
  15. int LOAD = 18; //12
  16.                      //DIN, CLK, LOAD, #chips
  17. Matrix matrix = Matrix(DIN, CLK, LOAD, numChips);
  18.  
  19. void setup() {
  20.   pinMode(16,OUTPUT);
  21.   pinMode(17,OUTPUT);
  22.   pinMode(18,OUTPUT);
  23.   tiempoEspera = 150;
  24.   Serial.begin(9600);
  25. }
  26.  
  27. void loop() {
  28.   if(Serial.available() > 0){
  29.      byte dato = Serial.read();
  30.      //si el dato esta entre A-Z o a-z
  31.      if((64 < dato && dato < 91) || (96 < dato && dato < 123)){
  32.         //pasamos a mayuscula el caracter
  33.         byte caracterMayuscula = toUpperCase(dato);  
  34.         letra1 = caracterMayuscula-65;
  35.         mover();      
  36.      }else {
  37.        //si hay espacio
  38.        if(dato == 32){
  39.          letra1 = 26;
  40.          mover();
  41.         }        
  42.      }
  43.   }else{    
  44.     letra1 = 26;
  45.     mover();
  46.   }    
  47. }
  48.  
  49. void mover(){
  50.   do{
  51.     delay(tiempoEspera);    
  52.     count--;
  53.     x--;
  54.     pintar();
  55.   }while(x >= 0);
  56.   x = 8;
  57.   count = 6;
  58.   letra2 = letra1;  
  59. }
  60.  
  61. Sprite letras(int valor){
  62.   //creamos los sprite con 5 pixeles de ancho y 5 pixelex de alto  
  63.   int _width = 5;
  64.   int _height = 5;
  65.   switch(valor){
  66.     case 0:
  67.        //A
  68.        return Sprite(_width, _height,
  69.         B10001, B10001, B11111, B10001, B11111
  70.       );
  71.       break;
  72.     case 1:
  73.       //B
  74.       return Sprite(5, 5,
  75.         B11110, B10001, B11110, B10001, B11110
  76.       );
  77.       break;
  78.     case 2:
  79.       //C
  80.       return Sprite(5, 5,
  81.         B11111, B10000, B10000, B10000, B11111
  82.       );
  83.       break;
  84.     case 3:
  85.       //D
  86.       return Sprite(5, 5,
  87.         B11110, B10001, B10001, B10001, B11110
  88.       );
  89.       break;
  90.     case 4:
  91.       //E
  92.       return Sprite(5, 5,
  93.         B11111, B10000, B11111, B10000, B11111
  94.       );
  95.       break;
  96.     case 5:
  97.       //F
  98.       return Sprite(5, 5,
  99.         B10000, B10000, B11110, B10000, B11110
  100.       );
  101.       break;
  102.     case 6:
  103.       //G
  104.       return Sprite(5, 5,
  105.         B11111, B10001, B11111, B10000, B11111
  106.       );
  107.       break;  
  108.     case 7:
  109.       //H
  110.       return Sprite(5, 5,
  111.         B10001, B10001, B11111, B10001, B10001
  112.       );
  113.       break;
  114.     case 8:
  115.       //I
  116.       return Sprite(5, 5,
  117.         B11111, B00100, B00100, B00100, B11111
  118.       );
  119.       break;
  120.     case 9:
  121.       //J
  122.       return Sprite(5, 5,
  123.         B11100, B00100, B00100, B00100, B11111
  124.       );
  125.       break;
  126.     case 10:
  127.       //K
  128.       return Sprite(5, 5,
  129.         B10001, B10010, B11100, B10010, B10001
  130.       );
  131.       break;
  132.     case 11:
  133.       //L
  134.       return Sprite(5, 5,
  135.         B11111, B10000, B10000, B10000, B10000
  136.       );
  137.       break;
  138.     case 12:
  139.       //M
  140.       return Sprite(5, 5,
  141.         B10001, B10001, B10001, B10101, B11011
  142.       );
  143.       break;  
  144.     case 13:
  145.       //N
  146.       return Sprite(5, 5,
  147.         B10001, B10011, B10101, B11001, B10001
  148.       );
  149.       break;
  150.     case 14:
  151.       //O
  152.       return Sprite(5, 5,
  153.         B11111, B10001, B10001, B10001, B11111
  154.       );
  155.       break;
  156.     case 15:
  157.       //P
  158.       return Sprite(5, 5,
  159.         B10000, B10000, B11110, B10001, B11110
  160.       );
  161.       break;    
  162.      case 16:
  163.       //Q
  164.       return Sprite(5, 5,
  165.         B11111, B10011, B10001, B10001, B11111
  166.       );
  167.       break;
  168.     case 17:
  169.       //R
  170.       return Sprite(5, 5,
  171.         B10001, B10010, B11110, B10001, B11110
  172.       );
  173.       break;
  174.     case 18:
  175.       //S
  176.       return Sprite(5, 5,
  177.         B11110, B00001, B01110, B10000,B01110
  178.       );
  179.       break;
  180.     case 19:
  181.       //T
  182.       return Sprite(5, 5,
  183.         B00100, B00100, B00100, B00100, B11111
  184.       );
  185.       break;
  186.     case 20:
  187.       //U
  188.       return Sprite(5, 5,
  189.         B11111, B10001, B10001, B10001, B10001
  190.       );
  191.       break;
  192.     case 21:
  193.       //V
  194.       return Sprite(5, 5,
  195.         B00100, B01010, B10001, B10001, B10001
  196.       );
  197.       break;  
  198.     case 22:
  199.       //W
  200.       return Sprite(5, 5,
  201.         B10001, B11011, B10101, B10001, B10001
  202.       );
  203.       break;  
  204.     case 23:
  205.       //X
  206.       return Sprite(5, 5,
  207.         B10001, B01010, B00100, B01010, B10001
  208.       );
  209.       break;
  210.     case 24:
  211.       //Y
  212.       return Sprite(5, 5,
  213.         B00100, B00100, B01110, B10001, B10001
  214.       );
  215.       break;
  216.     case 25:
  217.       //Z
  218.       return Sprite(5, 5,
  219.         B11111, B01000, B00100, B00010, B11111
  220.       );
  221.       break;
  222.     case 26:
  223.       //Blanco
  224.       return Sprite(5, 5,
  225.         B00000, B00000, B00000, B00000, B00000
  226.       );
  227.       break;    
  228.   }
  229. }
  230.  
  231. void pintar(){  
  232.   matrix.clear();
  233.   //se coloca el Sprite en pantalla
  234.   matrix.write(x, 0, letras(letra1));
  235.   if(count >= 0){
  236.     matrix.write(x - 8, 0, letras(letra2));
  237.   }
  238. }