Advertisement
crsandu

Arduino Ceas Animatie

Oct 18th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.89 KB | None | 0 0
  1.  
  2. #include <LiquidCrystal.h>
  3. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  4. volatile int state = 0;
  5. volatile int increm = 0;
  6.  
  7. byte show[8]={
  8.     B00000,
  9.     B00000,
  10.     B00000,
  11.     B00000,
  12.     B00000,
  13.     B00000,
  14.     B00000,
  15. };
  16. byte ceasH[8][8] = {
  17.   {
  18.     B00000,
  19.     B00000,
  20.     B00100,
  21.     B00100,
  22.     B00000,
  23.     B00000,
  24.     B00000,
  25.   },
  26.     {
  27.     B00000,
  28.     B00000,
  29.     B00010,
  30.     B00100,
  31.     B00000,
  32.     B00000,
  33.     B00000,
  34.   },
  35.     {
  36.     B00000,
  37.     B00000,
  38.     B00000,
  39.     B00110,
  40.     B00000,
  41.     B00000,
  42.     B00000,
  43.   },
  44.     {
  45.     B00000,
  46.     B00000,
  47.     B00000,
  48.     B00100,
  49.     B00010,
  50.     B00000,
  51.     B00000,
  52.   },
  53.     {
  54.     B00000,
  55.     B00000,
  56.     B00000,
  57.     B00100,
  58.     B00100,
  59.     B00000,
  60.     B00000,
  61.   },
  62.     {
  63.     B00000,
  64.     B00000,
  65.     B00000,
  66.     B00100,
  67.     B01000,
  68.     B00000,
  69.     B00000,
  70.   },
  71.     {
  72.     B00000,
  73.     B00000,
  74.     B00000,
  75.     B01100,
  76.     B00000,
  77.     B00000,
  78.     B00000,
  79.   },
  80.     {
  81.     B00000,
  82.     B00000,
  83.     B01000,
  84.     B00100,
  85.     B00000,
  86.     B00000,
  87.     B00000,
  88.   },
  89. };
  90.  
  91. byte ceasM[8][8] = {
  92.   {
  93.     B00000,
  94.     B00100,
  95.     B00100,
  96.     B00100,
  97.     B00000,
  98.     B00000,
  99.     B00000,
  100.   },
  101.     {
  102.     B00000,
  103.     B00001,
  104.     B00010,
  105.     B00100,
  106.     B00000,
  107.     B00000,
  108.     B00000,
  109.   },
  110.     {
  111.     B00000,
  112.     B00000,
  113.     B00000,
  114.     B00111,
  115.     B00000,
  116.     B00000,
  117.     B00000,
  118.   },
  119.     {
  120.     B00000,
  121.     B00000,
  122.     B00000,
  123.     B00100,
  124.     B00010,
  125.     B00001,
  126.     B00000,
  127.   },
  128.     {
  129.     B00000,
  130.     B00000,
  131.     B00000,
  132.     B00100,
  133.     B00100,
  134.     B00100,
  135.     B00000,
  136.   },
  137.     {
  138.     B00000,
  139.     B00000,
  140.     B00000,
  141.     B00100,
  142.     B01000,
  143.     B10000,
  144.     B00000,
  145.   },
  146.     {
  147.     B00000,
  148.     B00000,
  149.     B00000,
  150.     B11100,
  151.     B00000,
  152.     B00000,
  153.     B00000,
  154.   },
  155.     {
  156.     B00000,
  157.     B10000,
  158.     B01000,
  159.     B00100,
  160.     B00000,
  161.     B00000,
  162.     B00000,
  163.   },
  164. };
  165.  
  166. ISR(INT0_vect)
  167. {
  168.   //reset
  169.   state = 0;
  170. }
  171. //Rutina pentru tratarea intreruperii atasata la INT0
  172. ISR(INT1_vect)
  173. {
  174.   increm = increm == 1? 0: 1;
  175. }
  176.  
  177. void setup() {
  178.   lcd.begin(16, 2);
  179.  
  180.  
  181. }
  182. // FuncŃia loop ramane nefolosita, puteti să o folositi pentru a extinde funcționalitatea
  183. void loop()
  184. {
  185.   state += increm;
  186.   state = state == 64? 0:state;
  187.   for(int i=0; i<7; i++){
  188.     show[i] = (byte)ceasM[state%8][i] | (byte)ceasH[state/8][i];
  189.   }
  190.  
  191.   pinMode(21 ,INPUT);
  192.   pinMode(20, INPUT);
  193.  
  194.   EIMSK |= (1 << INT0); //activam punctual intreruperea INT0
  195.   EIMSK |= (1 << INT1); //activam punctual intreruperea INT1
  196.  
  197.   EICRA |= (1 << ISC01); //activam intreruperea 0 pentru front descrescător.
  198.   EICRA |= (1 << ISC11); //ca si mai sus, pentru intreruperea 1
  199.   sei(); //activam intreruperile la nivel global
  200.  
  201.  
  202.   lcd.createChar(1, show);
  203.   lcd.setCursor(1, 1);
  204.   lcd.write(1); // cand referiti caractere diferite de „0” nu mai este necesar cast-ul;
  205.   delay(1000);
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement