LED матрица на микроконтроллере ATmega328p или самопальный модуль Arduino. Часть первая — Разработка

axjubzftotz4mhrvfedzjo_vedo.jpeg

class Jsus {
  
  public:
  
  void init() {
    
    pinMode(5, 1);
    pinMode(6, 1);
    pinMode(7, 1);
    pinMode(9, 1);
    pinMode(10, 1);
    pinMode(11, 1);
    pinMode(12, 1);
    pinMode(13, 1);
    
    digitalWrite(5,0);
    digitalWrite(6,0);
    digitalWrite(7,0);
    digitalWrite(9,0);
    digitalWrite(10,0);
    digitalWrite(11,0);
    digitalWrite(12,0);
    digitalWrite(13,0);
    
  };
  
  void path(char bits[5]) {
    
    for (int l = 0;l < 5;l++) {
      
      digitalWrite(9, 1);
      digitalWrite(10, 1);  
      digitalWrite(11, 1);  
      digitalWrite(12, 1);    
      digitalWrite(13, 1);  

      if (l == 1) digitalWrite(13, 0);
      if (l == 2) digitalWrite(12, 0);
      if (l == 3) digitalWrite(11, 0);
      if (l == 4) digitalWrite(10, 0);
      if (l == 0) digitalWrite(9, 0);

      
      digitalWrite(7, 1);
        for (int i = 0; i < 8;i++) {
          digitalWrite(6, 1);
           digitalWrite(5, (bits[l] >> i) & 1);  
          digitalWrite(6, 0);
        }
      digitalWrite(7, 0);
      
      delay(2);
    }
  };
  
  void message(String text, int Delay) {

    int len = text.length();

    for (int i = 0; i < len; i++) {      
     
      for (int Delay_ = 0; Delay_ < Delay/15; Delay_++){

       if (text[i] == 32) { char Symbol[5] = {0,0,0,0,0}; path(Symbol); } // 
       if (text[i] == 43) { char Symbol[5] = {8,8,62,8,8}; path(Symbol); } // +
       if (text[i] == 45) { char Symbol[5] = {8,8,8,8,8}; path(Symbol); } // -
       if (text[i] == 61) { char Symbol[5] = {20,20,20,20,20}; path(Symbol); } // =
       if (text[i] == 95) { char Symbol[5] = {1,1,1,1,1}; path(Symbol); } // _
       if (text[i] == 41) { char Symbol[5] = {62,65,0,0,0}; path(Symbol); } // )
       if (text[i] == 40) { char Symbol[5] = {0,0,0,65,62}; path(Symbol); } // (
       if (text[i] == 123) { char Symbol[5] = {0,65,65,54,8}; path(Symbol); } // {
       if (text[i] == 125) { char Symbol[5] = {8,54,65,65,0}; path(Symbol); } // }
       if (text[i] == 62) { char Symbol[5] = {8,20,34,65,0}; path(Symbol); } // >
       if (text[i] == 60) { char Symbol[5] = {0,65,34,20,8}; path(Symbol); } // <
       if (text[i] == 46) { char Symbol[5] = {0,0,1,0,0}; path(Symbol); } // .
       if (text[i] == 44) { char Symbol[5] = {0,0,3,2,0}; path(Symbol); } // ,
       if (text[i] == 63) { char Symbol[5] = {48,72,69,64,48}; path(Symbol); } // ?
       if (text[i] == 33) { char Symbol[5] = {0,0,125,0,0}; path(Symbol); } // !
       if (text[i] == 64) { char Symbol[5] = {58,69,93,65,62}; path(Symbol); } // @
       if (text[i] == 35) { char Symbol[5] = {20,127,20,127,20}; path(Symbol); } // #
       if (text[i] == 36) { char Symbol[5] = {38,73,127,73,50}; path(Symbol); } // $
       if (text[i] == 37) { char Symbol[5] = {19,11,4,50,49}; path(Symbol); } // %
       if (text[i] == 94) { char Symbol[5] = {0,32,64,32,0}; path(Symbol); } // ^
       if (text[i] == 58) { char Symbol[5] = {0,0,0,34,0}; path(Symbol); } // :
       if (text[i] == 42) { char Symbol[5] = {8,20,42,20,8}; path(Symbol); } // * 
       if (text[i] == 38) { char Symbol[5] = {2,53,73,73,54}; path(Symbol); } // &
       if (text[i] == 34) { char Symbol[5] = {0,112,0,112,0}; path(Symbol); } // "
       if (text[i] == 59) { char Symbol[5] = {0,0,0,38,2}; path(Symbol); } // ;
       if (text[i] == 48) { char Symbol[5] = {62,65,65,65,62}; path(Symbol); } // 0
       if (text[i] == 49) { char Symbol[5] = {0,1,127,33,16}; path(Symbol); } // 1
       if (text[i] == 50) { char Symbol[5] = {49,73,69,67,49}; path(Symbol); } // 2
       if (text[i] == 51) { char Symbol[5] = {54,73,73,65,34}; path(Symbol); } // 3
       if (text[i] == 52) { char Symbol[5] = {5,127,37,20,12}; path(Symbol); } // 4
       if (text[i] == 53) { char Symbol[5] = {6,73,73,73,114}; path(Symbol); } // 5
       if (text[i] == 54) { char Symbol[5] = {38,73,73,73,62}; path(Symbol); } // 6
       if (text[i] == 55) { char Symbol[5] = {96,80,79,64,64}; path(Symbol); } // 7
       if (text[i] == 56) { char Symbol[5] = {54,73,73,73,54}; path(Symbol); } // 8
       if (text[i] == 57) { char Symbol[5] = {62,73,73,73,50}; path(Symbol); } // 9
       if (text[i] == 97) { char Symbol[5] = {1,62,37,37,18}; path(Symbol); } // a
       if (text[i] == 65) { char Symbol[5] = {3,28,36,28,3}; path(Symbol); } // A
       if (text[i] == 98) { char Symbol[5] = {6,9,9,9,126}; path(Symbol); } // b
       if (text[i] == 66) { char Symbol[5] = {6,57,73,73,127}; path(Symbol); } // B
       if (text[i] == 99) { char Symbol[5] = {18,33,33,33,30}; path(Symbol); } // c
       if (text[i] == 67) { char Symbol[5] = {34,65,65,65,62}; path(Symbol); } // C
       if (text[i] == 100) { char Symbol[5] = {126,9,9,9,6}; path(Symbol); } // d
       if (text[i] == 68) { char Symbol[5] = {62,65,65,65,127}; path(Symbol); } // D
       if (text[i] == 101) { char Symbol[5] = {26,37,37,37,30}; path(Symbol); } // e
       if (text[i] == 69) { char Symbol[5] = {65,65,73,73,127}; path(Symbol); } // E
       if (text[i] == 102) { char Symbol[5] = {0,32,36,31,4}; path(Symbol); } // f
       if (text[i] == 70) { char Symbol[5] = {64,64,72,72,127}; path(Symbol); } // F
       if (text[i] == 103) { char Symbol[5] = {62,73,73,74,48}; path(Symbol); } // g
       if (text[i] == 71) { char Symbol[5] = {38,73,73,65,62}; path(Symbol); } // G 
       if (text[i] == 104) { char Symbol[5] = {0,7,8,8,63}; path(Symbol); } // h 
       if (text[i] == 72) { char Symbol[5] = {127,8,8,8,127}; path(Symbol); } // H
       if (text[i] == 105) { char Symbol[5] = {0,0,47,0,0}; path(Symbol); } // i
       if (text[i] == 73) { char Symbol[5] = {0,65,127,65,0}; path(Symbol); } // I
       if (text[i] == 106) { char Symbol[5] = {0,94,1,1,2}; path(Symbol); } // j
       if (text[i] == 74) { char Symbol[5] = {126,1,1,1,6}; path(Symbol); } // J
       if (text[i] == 107) { char Symbol[5] = {0,16,9,6,63}; path(Symbol); } // k
       if (text[i] == 75) { char Symbol[5] = {64,33,18,12,127}; path(Symbol); } // K
       if (text[i] == 108) { char Symbol[5] = {0,1,63,0,0}; path(Symbol); } // l
       //if (text[i] == 76) { char Symbol[5] = {1,1,1,1,127}; path(Symbol); } // L
       if (text[i] == 109) { char Symbol[5] = {15,16,24,16,15}; path(Symbol); } // m
       if (text[i] == 77) { char Symbol[5] = {63,64,56,64,63}; path(Symbol); } // M
       if (text[i] == 110) { char Symbol[5] = {31,32,32,32,63}; path(Symbol); } // n
       if (text[i] == 78) { char Symbol[5] = {127,4,8,16,127}; path(Symbol); } // N
       if (text[i] == 111) { char Symbol[5] = {14,17,17,17,14}; path(Symbol); } // o
       if (text[i] == 79) { char Symbol[5] = {62,65,65,65,62}; path(Symbol); } // O
       if (text[i] == 112) { char Symbol[5] = {0,24,36,36,63}; path(Symbol); } // p
       if (text[i] == 80) { char Symbol[5] = {56,68,68,68,63}; path(Symbol); } // P
       if (text[i] == 113) { char Symbol[5] = {31,36,36,36,24}; path(Symbol); } // q
       if (text[i] == 81) { char Symbol[5] = {61,66,65,65,62}; path(Symbol); } // Q
       if (text[i] == 114) { char Symbol[5] = {0,48,16,32,63}; path(Symbol); } // r
       if (text[i] == 82) { char Symbol[5] = {56,69,70,68,63}; path(Symbol); } // R
       if (text[i] == 115) { char Symbol[5] = {0,18,37,41,18}; path(Symbol); } // s
       //if (text[i] == 83) { char Symbol[5] = {38,73,73,73,50}; path(Symbol); } // S
       if (text[i] == 116) { char Symbol[5] = {0,2,17,62,16}; path(Symbol); } // t
       if (text[i] == 84) { char Symbol[5] = {64,64,127,64,64}; path(Symbol); }// T
       if (text[i] == 117) { char Symbol[5] = {29,2,1,1,30}; path(Symbol); } // u
       if (text[i] == 85) { char Symbol[5] = {126,1,1,1,126}; path(Symbol); } // U
       if (text[i] == 118) { char Symbol[5] = {60,2,1,2,60}; path(Symbol); } // v
       if (text[i] == 86) { char Symbol[5] = {124,2,1,2,124}; path(Symbol); } // V
       if (text[i] == 119) { char Symbol[5] = {30,1,6,1,30}; path(Symbol); } // w
       if (text[i] == 87) { char Symbol[5] = {126,1,6,1,126}; path(Symbol); } // W
       if (text[i] == 120) { char Symbol[5] = {17,10,4,10,17}; path(Symbol); } // x
       if (text[i] == 88) { char Symbol[5] = {99,20,8,20,99}; path(Symbol); } // X
       if (text[i] == 121) { char Symbol[5] = {56,4,6,57,0}; path(Symbol); } // y
       if (text[i] == 89) { char Symbol[5] = {112,8,7,8,112}; path(Symbol); } // Y
       if (text[i] == 122) { char Symbol[5] = {17,25,21,19,17}; path(Symbol); } // z
       if (text[i] == 90) { char Symbol[5] = {97,81,73,69,67}; path(Symbol); } // Z
       if (text[i] == 76) { char Symbol[5] = {24,60,30,60,24}; path(Symbol); } // L
       if (text[i] == 83) { char Symbol[5] = {6,113,1,113,6}; path(Symbol); } // S   
      
      }
    }
  };  
  
};

Jsus matrix;



© Geektimes