{"id":958,"date":"2021-02-22T17:37:50","date_gmt":"2021-02-22T17:37:50","guid":{"rendered":"http:\/\/www.igfasouza.com\/blog\/?p=958"},"modified":"2021-04-19T22:10:13","modified_gmt":"2021-04-19T21:10:13","slug":"raspberry-pi-helidon-14-segment-display","status":"publish","type":"post","link":"http:\/\/www.igfasouza.com\/blog\/raspberry-pi-helidon-14-segment-display\/","title":{"rendered":"Raspberry Pi Helidon 14 segment display"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry.jpg\" alt=\"\" class=\"alignnone size-full wp-image-959\" width=\"1108\" height=\"399\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry.jpg 1108w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry-300x108.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry-768x277.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry-1024x369.jpg 1024w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon_raspberry-624x225.jpg 624w\" sizes=\"auto, (max-width: 1108px) 100vw, 1108px\" \/><\/p>\n<p><b>How goes the battle?<\/b><br \/>\n<small style=\"color:#9f9f9f\">2021\/02\/22<\/small><\/p>\n<p>This post is to show how I created a Helidon demo with a Raspberry PI. A simple web application to control a 14 segments display. This is another blog about Java on Raspberry PI.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/PXL_20210219_205957688-1024x768.jpg\" alt=\"\" class=\"alignnone size-large wp-image-960\" width=\"625\" height=\"469\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/PXL_20210219_205957688-1024x768.jpg 1024w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/PXL_20210219_205957688-300x225.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/PXL_20210219_205957688-768x576.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/PXL_20210219_205957688-624x468.jpg 624w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/p>\n<p>Originally named J4C (Java for Cloud), Helidon was designed to be simple and fast, and the framework supports two programming models for writing microservices: Helidon SE and Helidon MP. Helidon SE is designed to be a microframework that supports the reactive programming model, it features three core APIs to create a microservice; a web server, configuration, and security. Helidon MP, on the other hand, is an Eclipse MicroProfile runtime that allows the Jakarta EE community to run microservices in a portable way; supports the MicroProfile 1.1 specification for building microservices-based applications.<br \/>\nBut in both cases, a Helidon microservice is a Java SE application that starts a tinny HTTP server from the main method.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-se_mp.png\" alt=\"\" class=\"alignnone size-full wp-image-961\" width=\"467\" height=\"227\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-se_mp.png 467w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-se_mp-300x146.png 300w\" sizes=\"auto, (max-width: 467px) 100vw, 467px\" \/><br \/>\n<small>Helidon architecture<\/small><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-graph.png\" alt=\"\" class=\"alignnone size-full wp-image-962\" width=\"940\" height=\"423\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-graph.png 940w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-graph-300x135.png 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-graph-768x346.png 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidon-graph-624x281.png 624w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><br \/>\n<small>Microservices frameworks categories<\/small><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidonn20.jpg\" alt=\"\" class=\"alignnone size-full wp-image-963\" width=\"786\" height=\"823\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidonn20.jpg 786w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidonn20-287x300.jpg 287w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidonn20-768x804.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/helidonn20-624x653.jpg 624w\" sizes=\"auto, (max-width: 786px) 100vw, 786px\" \/><br \/>\n<small>Helidon 2.0 adds significant improvements for both Helidon SE and Helidon MP programming styles<\/small><\/p>\n<p><b>Fun Facts<\/b><br \/>\nHelidon is a Greek word for swallow, a type of bird that according to Wikipedia has &#8220;a slender, streamlined body and long pointed wings, which allow great maneuverability and very efficient flight&#8221;. Perfect for darting through the clouds.<\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/Xnl95j18hgg\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\" width=\"560\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n<h2>Idea<\/h2>\n<p>A simple Helidon example that shows a 14 segments display and control in real-time a real one with a Raspberry Pi 3 B.<\/p>\n<p>I have the &#8220;<strong>5421AG<\/strong>&#8221; model. 14 segments display &#8211; <a href=\"https:\/\/pdf1.alldatasheet.com\/datasheet-pdf\/view\/683745\/FORYARD\/FYD-5421AX-32.html\" rel=\"noopener\" target=\"_blank\">5421AG<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment.jpg\" alt=\"\" class=\"alignnone size-full wp-image-964\" width=\"910\" height=\"452\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment.jpg 910w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment-300x149.jpg 300w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment-768x381.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment-624x310.jpg 624w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment_pins.jpg\" alt=\"\" class=\"alignnone size-full wp-image-966\" width=\"923\" height=\"976\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment_pins.jpg 923w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment_pins-284x300.jpg 284w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment_pins-768x812.jpg 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/14segment_pins-624x660.jpg 624w\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" \/><\/p>\n<p>The PI4J uses a different GPIO number.<\/p>\n<p style=\"background-color: #bde5f8;color: #00529b;border: 1px solid;border-radius: 2px;margin: 10px 0px;padding: 15px 10px;\"><strong>Note<\/strong>: Pi4J (by default) uses an abstract pin numbering scheme to help insulate software from hardware changes. Pi4J implements the same pin number scheme as the Wiring Pi<\/p>\n<p><a href=\"http:\/\/wiringpi.com\/pins\/\" rel=\"noopener\" target=\"_blank\">http:\/\/wiringpi.com\/pins\/<\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Pi4J_GPIO.png\" alt=\"\" class=\"alignnone size-full wp-image-797\" width=\"500\" height=\"907\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Pi4J_GPIO.png 500w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2020\/09\/Pi4J_GPIO-165x300.png 165w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-17.27.02-388x1024.png\" alt=\"\" class=\"alignnone size-large wp-image-967\" width=\"388\" height=\"1024\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-17.27.02-388x1024.png 388w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-17.27.02-114x300.png 114w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-17.27.02.png 400w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/p>\n<p>PIN 11 -&gt; GPIO 11<br \/>\nPIN16 -&gt; GPIO 25<\/p>\n<h2>Code<\/h2>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/><\/div><\/td><td><div class=\"java codecolorer\"><span class=\"kw1\">static<\/span> Routing createRouting<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\nList<span class=\"sy0\">&lt;<\/span>class<span class=\"sy0\">&lt;?<\/span> <span class=\"kw1\">extends<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span> encoder<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;&quot;<\/span><span class=\"sy0\">&gt;&amp;<\/span>gt<span class=\"sy0\">;<\/span> encoders <span class=\"sy0\">=<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+collections\"><span class=\"kw3\">Collections<\/span><\/a>.<span class=\"me1\">singletonList<\/span><span class=\"br0\">&#40;<\/span>UppercaseEncoder.<span class=\"kw1\">class<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;&lt;\/<\/span>class<span class=\"sy0\">&lt;?&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/><\/div><\/td><td><div class=\"java codecolorer\">&nbsp;<\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"codecolorer-container java blackboard\" style=\"overflow:auto;white-space:nowrap;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/><\/div><\/td><td><div class=\"java codecolorer\">&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> Routing.<span class=\"me1\">builder<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">register<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/rest&quot;<\/span>, component<span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">register<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/websocket&quot;<\/span>,<br \/>\nTyrusSupport.<span class=\"me1\">builder<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">register<\/span><span class=\"br0\">&#40;<\/span><br \/>\nServerEndpointConfig.<span class=\"me1\">Builder<\/span>.<span class=\"me1\">create<\/span><span class=\"br0\">&#40;<\/span>MessageBoardEndpoint.<span class=\"kw1\">class<\/span>, <span class=\"st0\">&quot;\/board&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">encoders<\/span><span class=\"br0\">&#40;<\/span>encoders<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">build<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">build<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">register<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/web&quot;<\/span>, StaticContentSupport.<span class=\"me1\">builder<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;\/WEB&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">build<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n.<span class=\"me1\">build<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Disclaimer \u2013 I use the same CSS that I used in my <a href=\"http:\/\/www.igfasouza.com\/blog\/quarkus-qute-with-raspberry-pi\/\" rel=\"noopener\" target=\"_blank\">Quarkus Qute example<\/a> and I started this demo using this <a href=\"https:\/\/github.com\/oracle\/helidon\/tree\/master\/examples\/webserver\/websocket\" rel=\"noopener\" target=\"_blank\">WebSocket sample<\/a><\/p>\n<p>You can get the full code on my <a href=\"https:\/\/github.com\/igfasouza\/helidon-14segments-display\" rel=\"noopener\" target=\"_blank\">GitHub<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17-204x300.png\" alt=\"\" class=\"alignnone size-medium wp-image-968\" width=\"204\" height=\"300\" srcset=\"http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17-204x300.png 204w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17-768x1131.png 768w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17-695x1024.png 695w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17-624x919.png 624w, http:\/\/www.igfasouza.com\/blog\/wp-content\/uploads\/2021\/02\/Screenshot-2021-02-22-at-13.48.17.png 782w\" sizes=\"auto, (max-width: 204px) 100vw, 204px\" \/><\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/Yc8AvAAa97U\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\" width=\"560\" height=\"315\" frameborder=\"0\"><\/iframe><\/p>\n<p>Links<\/p>\n<p><a href=\"https:\/\/helidon.io\" rel=\"noopener\" target=\"_blank\">https:\/\/helidon.io<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/oracle\/helidon\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/oracle\/helidon<\/a><\/p>\n<p><a href=\"https:\/\/www.youtube.com\/channel\/UChg00-uTTrCMmPsuzUNaZsA\" rel=\"noopener\" target=\"_blank\">https:\/\/www.youtube.com\/channel\/UChg00-uTTrCMmPsuzUNaZsA<\/a><\/p>\n<p><a href=\"https:\/\/medium.com\/helidon\" rel=\"noopener\" target=\"_blank\">https:\/\/medium.com\/helidon<\/a><\/p>\n<p><a href=\"https:\/\/twitter.com\/helidon_project\" rel=\"noopener\" target=\"_blank\">https:\/\/twitter.com\/helidon_project<\/a><\/p>\n<p><a href=\"https:\/\/www.jetbrains.com\/help\/idea\/helidon.html\" rel=\"noopener\" target=\"_blank\">https:\/\/www.jetbrains.com\/help\/idea\/helidon.html<\/a><\/p>\n<p><a href=\"https:\/\/microprofile.io\/\" rel=\"noopener\" target=\"_blank\">https:\/\/microprofile.io\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How goes the battle? 2021\/02\/22 This post is to show how I created a Helidon demo with a Raspberry PI. A simple web application to control a 14 segments display. This is another blog about Java on Raspberry PI. Originally&hellip; <a href=\"http:\/\/www.igfasouza.com\/blog\/raspberry-pi-helidon-14-segment-display\/\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":959,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[17,21,13],"class_list":["post-958","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-java","tag-pi4j","tag-raspberry-pi"],"_links":{"self":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/comments?post=958"}],"version-history":[{"count":9,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/958\/revisions"}],"predecessor-version":[{"id":1127,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/posts\/958\/revisions\/1127"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media\/959"}],"wp:attachment":[{"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/media?parent=958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/categories?post=958"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.igfasouza.com\/blog\/wp-json\/wp\/v2\/tags?post=958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}