{"id":1691,"date":"2019-09-03T08:33:42","date_gmt":"2019-09-03T08:33:42","guid":{"rendered":"http:\/\/www.sabulo.com\/sb\/?p=1691"},"modified":"2020-04-18T08:02:29","modified_gmt":"2020-04-18T08:02:29","slug":"using-7-segment-led-displays-part-2","status":"publish","type":"post","link":"https:\/\/www.sabulo.com\/sb\/excel\/using-7-segment-led-displays-part-2\/","title":{"rendered":"Using 7 Segment LED displays, Part 2"},"content":{"rendered":"\n<p>In the previous post I showed how to build a <a href=\"http:\/\/www.sabulo.com\/sb\/arduino\/using-7-segment-led-displays-part-1\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"single digit display using one 7 segment LED (opens in a new tab)\">single digit display using one 7 segment LED<\/a> unit. That&#8217;s nice but not very useful as such, since single digits can only show limited amounts of data. To go further, you can either add digits and chain them together, as will be seen in Part 3 of this project, or, you can use a four segment LED unit and one shift register.<\/p>\n\n\n\n<p>This time we will use a four segment LED to produce a countdown clock. You will see that this setup is very versatile and you can easily modify it to show the current time, for example, or temperature as in 23\u00b0C or 77\u00b0F, with the third digit providing the degree character and the last digit the temperature scale.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"420\" src=\"https:\/\/i0.wp.com\/www.sabulo.com\/sb\/wp-content\/uploads\/2019\/08\/IMG_20190822_150138.jpg?resize=646%2C420\" alt=\"\" class=\"wp-image-1692\" srcset=\"https:\/\/i0.wp.com\/www.sabulo.com\/sb\/wp-content\/uploads\/2019\/08\/IMG_20190822_150138.jpg?w=646&amp;ssl=1 646w, https:\/\/i0.wp.com\/www.sabulo.com\/sb\/wp-content\/uploads\/2019\/08\/IMG_20190822_150138.jpg?resize=300%2C195&amp;ssl=1 300w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><figcaption>4 digit, 7 segment LED<\/figcaption><\/figure>\n\n\n\n<p>This is the most common four digit, seven segment LED unit. It has 12 pins, not ten like the one digit thing. That&#8217;s because it has been wired so that every digit has its own anode, and the remaining 8 pins correspond to the segments. <\/p>\n\n\n\n<p>The four segment LED works due to the persistence of vision. Not every digit is on all the time, but rather, the four digits are refreshed at 5 millisecond intervals, ie. 200 times per second, that the eye can&#8217;t discern them as individually lit. For this, you need to send Arduino four bytes of data via a shift register as before, to be displayed in quick succession.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Parts and connections<\/h2>\n\n\n\n<p>So, your parts list is the same as before with a breadboard, a 74HC595 shift register, a bunch of male-male jumper wires, and a display as shown above. My application for this little device is a countdown timer, and the code includes a method for taking a value in seconds, then finding out the minutes and seconds, further dividing them into tens of minutes, minutes, tens of seconds and seconds. These four, single digit, values are sent to the shift register as four consecutive bytes. This is the pins list:<\/p>\n\n\n\n<p> <\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><\/td><td>PIN NUMBER<\/td><td>PIN NAME<\/td><td>GOES TO<\/td><\/tr><tr><td>74HC595<\/td><td>1<\/td><td>Q1<\/td><td>LED 5<\/td><\/tr><tr><td>74HC595<\/td><td>2<\/td><td>Q2<\/td><td>LED 10<\/td><\/tr><tr><td>74HC595<\/td><td>3<\/td><td>Q3<\/td><td>LED 1<\/td><\/tr><tr><td>74HC595<\/td><td>4<\/td><td>Q4<\/td><td>LED 2<\/td><\/tr><tr><td>74HC595<\/td><td>5<\/td><td>Q5<\/td><td>LED 4<\/td><\/tr><tr><td>74HC595<\/td><td>6<\/td><td>Q6<\/td><td>LED 7<\/td><\/tr><tr><td>74HC595<\/td><td>7<\/td><td>Q7<\/td><td>LED 11<\/td><\/tr><tr><td>74HC595<\/td><td>8<\/td><td>GND<\/td><td>GND<\/td><\/tr><tr><td>74HC595<\/td><td>9<\/td><td>DATA OUT<\/td><td>NEXT SHIFT REGISTER<\/td><\/tr><tr><td>74HC595<\/td><td>10<\/td><td>MR<\/td><td>5V<\/td><\/tr><tr><td>74HC595<\/td><td>11<\/td><td>SH_CP<\/td><td>ARD Clock Pin<\/td><\/tr><tr><td>74HC595<\/td><td>12<\/td><td>ST_CP<\/td><td>ARD Latch Pin<\/td><\/tr><tr><td>74HC595<\/td><td>13<\/td><td>OE<\/td><td>GND<\/td><\/tr><tr><td>74HC595<\/td><td>14<\/td><td>DS<\/td><td>ARD Data Pin<\/td><\/tr><tr><td>74HC595<\/td><td>15<\/td><td>Q0<\/td><td>LED 3<\/td><\/tr><tr><td>74HC595<\/td><td>16<\/td><td>VCC<\/td><td>5V<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p> <\/p>\n\n\n\n<p>The connections on the 74HC595 are as before, with the difference that you need to supply all four anodes with their own power. This is achieved by connecting the anodes on the LED unit as follows:<\/p>\n\n\n\n<p> <\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><\/td><td>PIN NUMBER<\/td><td>GOES TO&nbsp;<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>1<\/td><td>SHIFT Q3<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>2<\/td><td>SHIFT Q4<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>3<\/td><td>SHIFT Q0<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>4<\/td><td>SHIFT Q5<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>5<\/td><td>SHIFT Q1<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>6<\/td><td>ARD 4<\/td><td>Anode pin<\/td><\/tr><tr><td>LED PIN<\/td><td>7<\/td><td>SHIFT Q6<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>8<\/td><td>ARD 5<\/td><td>Anode pin<\/td><\/tr><tr><td>LED PIN<\/td><td>9<\/td><td>ARD 6<\/td><td>Anode pin<\/td><\/tr><tr><td>LED PIN<\/td><td>10<\/td><td>SHIFT Q2<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>11<\/td><td>SHIFT Q7<\/td><td><\/td><\/tr><tr><td>LED PIN<\/td><td>12<\/td><td>ARD 7<\/td><td>Anode pin<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Logic and coding<\/h2>\n\n\n\n<p>Your application may vary, but the essential thing is to be able to separate each digit into its own byte, so 27 isn&#8217;t 27, but a 2 and a 7. When I made the countdown timer, I did some Excel first to find out the digits in every moment (45 minutes is 2700 seconds):<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>sec<\/td><td>mins<\/td><td>secs<\/td><td>splitmins1<\/td><td>splitmins2<\/td><td>splitsecs1<\/td><td>splitsecs2<\/td><\/tr><tr><td>2700<\/td><td>45<\/td><td>0<\/td><td>4<\/td><td>5<\/td><td>0<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Mins is derived from int(seconds\/60), which drops the remainder.<\/p>\n\n\n\n<p>Secs is the modulo 60 division of Minutes, which gives just the remainder.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>sec<\/td><td>mins<\/td><td>secs<\/td><td>splitmins1<\/td><td>splitmins2<\/td><td>splitsecs1<\/td><td>splitsecs2<\/td><\/tr><tr><td>2700<\/td><td>45<\/td><td>0<\/td><td>4<\/td><td>5<\/td><td>0<\/td><td>0<\/td><\/tr><tr><td>2699<\/td><td>44<\/td><td>59<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>9<\/td><\/tr><tr><td>2698<\/td><td>44<\/td><td>58<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>8<\/td><\/tr><tr><td>2697<\/td><td>44<\/td><td>57<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>7<\/td><\/tr><tr><td>2696<\/td><td>44<\/td><td>56<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>6<\/td><\/tr><tr><td>2695<\/td><td>44<\/td><td>55<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>5<\/td><\/tr><tr><td>2694<\/td><td>44<\/td><td>54<\/td><td>4<\/td><td>4<\/td><td>5<\/td><td>4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>etc.<\/p>\n\n\n\n<p>Splitmins 1 and 2 are again an integer division of minutes, and modulo division of minutes. Splitsecs are the same for seconds. After I got this working in Excel, I did the same thing for Arduino:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">int second = 2700;          \/\/ Define variable for starting time in seconds \nint mins= 0;                \/\/ variable for holding minutes\nint secs = 0;               \/\/ variable for holding seconds\nint splitmins1 = 0;         \/\/ variable for holding first digits of minutes\nint splitmins2 = 0;         \/\/ variable for holding second digits of minutes\nint splitsecs1 = 0;         \/\/ variable for holding first digits of seconds\nint splitsecs2 = 0;         \/\/ variable for holding second digits of seconds\nbyte myArray[] = {0x99, 0x92, 0xc0, 0xc0}; \/\/ an array holding the four digits\ninitially with the numbers 4,5,0,0 in it<\/pre>\n\n\n\n<p>There is also a second array that holds the bytes that form the numbers and letters:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">byte num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};<\/pre>\n\n\n\n<p>These are the values of 0 through F in hexadecimal notation. So, if you want to send the values 1 2 3 4 to the display, you place 0xf9, 0xa4, 0xb0, and 0x99 in myArray. You remember the picking of values from the previous post, where it is handled in more detail.<\/p>\n\n\n\n<p>This is the actual maths:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">second--;                     \/\/ second minus 1\nif (second==0) {              \/\/ handling the time out issue\n  second = 2700;\n}\nmins = int(second\/60);        \/\/ minutes as 45, 44, 43...\nsecs = int(second % 60);      \/\/ seconds of every minute\nsplitmins1 = int(mins \/ 10);  \/\/ first digit of minutes\nsplitmins2 = int(mins % 10);  \/\/ second digit of minutes\nsplitsecs1 = int(secs \/ 10);  \/\/ first digit of seconds\nsplitsecs2 = int(secs % 10);  \/\/ second digit of seconds\nmyArray[0] = num[splitmins1]; \/\/ get first digit hexcode from num array\nmyArray[1] = num[splitmins2]; \/\/ get second digit hexcode from num array\nmyArray[2] = num[splitsecs1]; \/\/ get third digit hexcode from num array\nmyArray[3] = num[splitsecs2]; \/\/ get fourth digit hexcode from num array<\/pre>\n\n\n\n<p>After this it&#8217;s just the issue of sending this out to the shift register, then having it deal out the four digits in quick succcession. The code below is again based on Freenove&#8217;s excellent tutorials, but has been edited to do more than just show 0123.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;FlexiTimer2.h&gt;  \/\/ Contains FlexiTimer2 Library\nint latchPin = 5; \/\/12;          \/\/ Pin connected to ST_CP of 74HC595\uff08Pin12\uff09\nint clockPin = 6;\/\/13;          \/\/ Pin connected to SH_CP of 74HC595\uff08Pin11\uff09\nint dataPin = 7; \/\/11;           \/\/ Pin connected to DS of 74HC595\uff08Pin14\uff09\nint comPin[] = {13, 12, 11, 10};  \/\/{7, 6, 5, 4};\/\/ Common pin (anode) of 4 digit 7-segment display\nint doorPin = 3;            \/\/ pin for monitoring room door being closed\nint second = 2700;          \/\/ Define variable for starting time in seconds\nint mins= 0;                \/\/ variable for holding minutes\nint secs = 0;               \/\/ variable for holding seconds\nint splitmins1 = 0;         \/\/ variable for holding first digits of minutes\nint splitmins2 = 0;         \/\/ variable for holding second digits of minutes\nint splitsecs1 = 0;         \/\/ variable for holding first digits of seconds\nint splitsecs2 = 0;         \/\/ variable for holding second digits of seconds\n\n\/\/ Define the encoding of characters 0-F for the common-anode 7-Segment Display\nbyte num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};\nbyte myArray[] = {0x99, 0x92, 0xc0, 0xc0}; \/\/array for representing led characters, inititally 4500\nvoid setup() {\n  \/\/ set pins to output\n  pinMode(latchPin, OUTPUT);\n  pinMode(clockPin, OUTPUT);\n  pinMode(dataPin, OUTPUT);\n  \/\/pinMode(doorPin, INPUT);\n  for (int i = 0; i &lt; 4; i++) {\n    pinMode(comPin[i], OUTPUT);\n  }\n  digitalWrite(doorPin, HIGH);       \/\/ set door lock monitor pin to high\n  FlexiTimer2::set(1000, timerInt);  \/\/ configure the timer and interrupt function\n  FlexiTimer2::start();              \/\/ start timer\n}\n\nvoid loop() {\n  showArray();\n}\n\nvoid showArray(){\n  for (int i = 0; i &lt; 4; i++) {\n    \/\/ Select a single 7-segment display\n    chooseCommon(i);\n    \/\/ Send data to 74HC595\n    writeData(myArray[i]);\n    delay(5);\n    \/\/ Clear the display content\n    writeData(0xff);\n  }\n}\n\n\/\/ the timer interrupt function of FlexiTimer2 is executed every 1s\n\nvoid timerInt() {\n  \/\/if(digitalRead(doorPin)==LOW){  \/\/ while the switch at pin 3 is closed, this will run\n    second--;                     \/\/ second minus 1\n    if (second==0) {              \/\/ handling the time out issue\n      second = 2700;\n    }\n    mins = int(second\/60);        \/\/ minutes as 45, 44, 43\u2026\n    secs = int(second % 60);      \/\/ seconds of every minute\n    splitmins1 = int(mins \/ 10);  \/\/ first digit of minutes\n    splitmins2 = int(mins % 10);  \/\/ second digit of minutes\n    splitsecs1 = int(secs \/ 10);  \/\/ first digit of seconds\n    splitsecs2 = int(secs % 10);  \/\/ second digit of seconds\n    myArray[0] = num[splitmins1]; \/\/ get first digit hexcode from num array\n    myArray[1] = num[splitmins2]; \/\/ get second digit hexcode from num array\n    myArray[2] = num[splitsecs1]; \/\/ get third digit hexcode from num array\n    myArray[3] = num[splitsecs2]; \/\/ get fourth digit hexcode from num array\n  \/\/}\n  \/\/else {                          \/\/ switch opens, the clock shows the time left at opening\n  \/\/  delay(10);\n  \/\/}\n\n}\n\nvoid chooseCommon(byte com) {\n  \/\/ Close all single 7-segment display\n  for (int i = 0; i &lt; 4; i++) {\n    digitalWrite(comPin[i], LOW);\n  }\n  \/\/ Open the selected single 7-segment display\n  digitalWrite(comPin[com], HIGH);\n}\n\nvoid writeData(int value) {\n  \/\/ Make latchPin output low level\n  digitalWrite(latchPin, LOW);\n  \/\/ Send serial data to 74HC595\n  shiftOut(dataPin, clockPin, LSBFIRST, value);\n  \/\/ Make latchPin output high level, then 74HC595 will update the data to parallel output\n  digitalWrite(latchPin, HIGH);\n}<\/pre>\n\n\n\n<p>This works when you have just one 4 digit, 7 segment LED.  If you want to use more such units, you can connect the shift registers to eah other via the data output of the first register wired to the data input of the next. This will hopefully be covered in the fourth episode of this three-part blog on LEDs, but first I will show you how to convert this small scale countdown timer to a big digit timer. The elements I got are 4&#8243;, 10cm tall, red ones, and it looks rather impressive. They also have to be fed 12V, which is not manageable via 74HC595, but instead you need a chip called <a rel=\"noreferrer noopener\" aria-label=\"TPIC6B595 (opens in a new tab)\" href=\"http:\/\/www.ti.com\/lit\/ds\/symlink\/tpic6b595.pdf\" target=\"_blank\">TPIC6B595<\/a> which can handle the voltage. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final product<\/h2>\n\n\n\n<p>But just to show you how this project turned out, here&#8217;s a little video of it in operation.<\/p>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"4 digit 7 segment LED countdown timer\" width=\"825\" height=\"464\" src=\"https:\/\/www.youtube.com\/embed\/mTSHHpiv9Rg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption>The final countdown.<\/figcaption><\/figure>\n<div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_1691\" class=\"pvc_stats all  \" data-element-id=\"1691\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/www.sabulo.com\/sb\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>In the previous post I showed how to build a single digit display using one 7 segment LED unit. That&#8217;s &hellip; <a href=\"https:\/\/www.sabulo.com\/sb\/excel\/using-7-segment-led-displays-part-2\/\" class=\"more-link\">More <span class=\"screen-reader-text\">Using 7 Segment LED displays, Part 2<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1691\" class=\"pvc_stats all  \" data-element-id=\"1691\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.sabulo.com\/sb\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[80,89,48,9,79,88],"tags":[],"class_list":["post-1691","post","type-post","status-publish","format-standard","hentry","category-7-segment-display","category-74hc595","category-arduino","category-excel","category-led","category-shift-registers"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6vhqE-rh","_links":{"self":[{"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/posts\/1691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/comments?post=1691"}],"version-history":[{"count":8,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/posts\/1691\/revisions"}],"predecessor-version":[{"id":1831,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/posts\/1691\/revisions\/1831"}],"wp:attachment":[{"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/media?parent=1691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/categories?post=1691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sabulo.com\/sb\/wp-json\/wp\/v2\/tags?post=1691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}