{"id":8551,"date":"2021-05-24T12:30:34","date_gmt":"2021-05-24T09:30:34","guid":{"rendered":"https:\/\/roboromania.ro\/?p=8551"},"modified":"2021-05-24T12:30:34","modified_gmt":"2021-05-24T09:30:34","slug":"beating-heart-arduino-max7219-8x8-led-matrix","status":"publish","type":"post","link":"https:\/\/roboromania.ro\/?p=8551","title":{"rendered":"Beating heart Arduino MAX7219 8&#215;8 LED matrix"},"content":{"rendered":"<p>Beating heart Arduino MAX7219 8&#215;8 LED matrix<\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"0\">Acesta este un proiect foarte simplu pentru a afi\u0219a o inim\u0103 care bate cu o plac\u0103 Arduino \u0219i o matrice LED de 8&#215;8 cu driver MAX7219<\/span><\/span><\/p>\n<p><a href=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/05\/Matrix-Arduino-MAX7219.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-8552\" src=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/05\/Matrix-Arduino-MAX7219-225x300.jpg\" alt=\"Matrix Arduino MAX7219\" width=\"225\" height=\"300\" srcset=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/05\/Matrix-Arduino-MAX7219-225x300.jpg 225w, https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/05\/Matrix-Arduino-MAX7219-768x1024.jpg 768w, https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/05\/Matrix-Arduino-MAX7219.jpg 800w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"0\">Cablarea este foarte simpl\u0103 :<\/span> <\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"2\">PIN MAX7219 VCC&gt; <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">Arduino pin <\/span>5V<\/span> <\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"4\">PIN <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">MAX7219<\/span> GND&gt; <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">Arduino pin <\/span>GND<\/span><br \/>\n<\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">PIN MAX7219 DIN&gt; Arduino pin 2<\/span><\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"8\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">PIN MAX7219<\/span> CS&gt; Arduino pin 3<\/span> <\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"10\">PIN <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">MAX7219<\/span> CLOCK&gt; <span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"6\">Arduino pin <\/span>4<\/span><\/span><\/p>\n<p><span class=\"VIiyi\" lang=\"ro\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"ro\" data-language-to-translate-into=\"en\" data-phrase-index=\"0\">Sketch-ul Arduino nu folose\u0219te nicio bibliotec\u0103, deci este bine s\u0103 \u00een\u021belege\u021bi cum s\u0103 lucra\u021bi direct cu cipul MAX7219 prin registre (through registers).<\/span><\/span><\/p>\n<p>Cod :<\/p>\n<p>\/\/&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;&#8211;-<\/p>\n<pre class=\"post-code\">int ANIMDELAY = 100;  \/\/ animation delay, deafault value is 100\r\nint INTENSITYMIN = 0; \/\/ minimum brightness, valid range [0,15]\r\nint INTENSITYMAX = 8; \/\/ maximum brightness, valid range [0,15]\r\n\r\nint DIN_PIN = 2;      \/\/ data in pin\r\nint CS_PIN = 3;       \/\/ load (CS) pin\r\nint CLK_PIN = 4;      \/\/ clock pin\r\n\r\n\/\/ MAX7219 registers\r\nbyte MAXREG_DECODEMODE = 0x09;\r\nbyte MAXREG_INTENSITY  = 0x0a;\r\nbyte MAXREG_SCANLIMIT  = 0x0b;\r\nbyte MAXREG_SHUTDOWN   = 0x0c;\r\nbyte MAXREG_DISPTEST   = 0x0f;\r\n\r\nconst unsigned char heart[] =\r\n{\r\n  B01100110,\r\n  B11111111,\r\n  B11111111,\r\n  B11111111,\r\n  B01111110,\r\n  B00111100,\r\n  B00011000,\r\n  B00000000\r\n};\r\n\r\n\r\n\r\nvoid setup ()\r\n{\r\n  pinMode(DIN_PIN, OUTPUT);\r\n  pinMode(CLK_PIN, OUTPUT);\r\n  pinMode(CS_PIN, OUTPUT);\r\n\r\n  \/\/ initialization of the MAX7219\r\n  setRegistry(MAXREG_SCANLIMIT, 0x07);\r\n  setRegistry(MAXREG_DECODEMODE, 0x00);  \/\/ using an led matrix (not digits)\r\n  setRegistry(MAXREG_SHUTDOWN, 0x01);    \/\/ not in shutdown mode\r\n  setRegistry(MAXREG_DISPTEST, 0x00);    \/\/ no display test\r\n  setRegistry(MAXREG_INTENSITY, 0x0f &amp; INTENSITYMIN);\r\n\r\n  \/\/ draw hearth\r\n  setRegistry(1, heart[0]);\r\n  setRegistry(2, heart[1]);\r\n  setRegistry(3, heart[2]);\r\n  setRegistry(4, heart[3]);\r\n  setRegistry(5, heart[4]);\r\n  setRegistry(6, heart[5]);\r\n  setRegistry(7, heart[6]);\r\n  setRegistry(8, heart[7]);\r\n}\r\n\r\n\r\nvoid loop ()\r\n{\r\n  \/\/ second beat\r\n  setRegistry(MAXREG_INTENSITY, 0x0f &amp; INTENSITYMAX);\r\n  delay(ANIMDELAY);\r\n  \r\n  \/\/ switch off\r\n  setRegistry(MAXREG_INTENSITY, 0x0f &amp; INTENSITYMIN);\r\n  delay(ANIMDELAY);\r\n  \r\n  \/\/ second beat\r\n  setRegistry(MAXREG_INTENSITY, 0x0f &amp; INTENSITYMAX);\r\n  delay(ANIMDELAY);\r\n  \r\n  \/\/ switch off\r\n  setRegistry(MAXREG_INTENSITY, 0x0f &amp; INTENSITYMIN);\r\n  delay(ANIMDELAY*6);\r\n}\r\n\r\n\r\nvoid setRegistry(byte reg, byte value)\r\n{\r\n  digitalWrite(CS_PIN, LOW);\r\n\r\n  putByte(reg);   \/\/ specify register\r\n  putByte(value); \/\/ send data\r\n\r\n  digitalWrite(CS_PIN, LOW);\r\n  digitalWrite(CS_PIN, HIGH);\r\n}\r\n\r\nvoid putByte(byte data)\r\n{\r\n  byte i = 8;\r\n  byte mask;\r\n  while (i &gt; 0)\r\n  {\r\n    mask = 0x01 &lt;&lt; (i - 1);        \/\/ get bitmask\r\n    digitalWrite( CLK_PIN, LOW);   \/\/ tick\r\n    if (data &amp; mask)               \/\/ choose bit\r\n      digitalWrite(DIN_PIN, HIGH); \/\/ send 1\r\n    else\r\n      digitalWrite(DIN_PIN, LOW);  \/\/ send 0\r\n    digitalWrite(CLK_PIN, HIGH);   \/\/ tock\r\n    --i;                           \/\/ move to lesser bit\r\n  }\r\n}\r\n\/\/---------------------------------\r\n\r\n<a href=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/03\/emo-avatar.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8351\" src=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2021\/03\/emo-avatar.gif\" alt=\"emo-avatar\" width=\"113\" height=\"113\" \/><\/a>is work bro...<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Beating heart Arduino MAX7219 8&#215;8 LED matrix Acesta este un proiect foarte simplu pentru a afi\u0219a o inim\u0103 care bate cu o plac\u0103 Arduino \u0219i o matrice LED de 8&#215;8 cu driver MAX7219 Cablarea este foarte simpl\u0103 : PIN MAX7219 VCC&gt; Arduino pin 5V PIN MAX7219 GND&gt; Arduino pin GND PIN MAX7219 DIN&gt; Arduino pin [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[176],"tags":[],"class_list":["post-8551","post","type-post","status-publish","format-standard","hentry","category-tutoriale-arduino"],"_links":{"self":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/8551","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8551"}],"version-history":[{"count":1,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/8551\/revisions"}],"predecessor-version":[{"id":8553,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/8551\/revisions\/8553"}],"wp:attachment":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}