{"id":3528,"date":"2023-09-22T22:36:07","date_gmt":"2023-09-22T20:36:07","guid":{"rendered":"https:\/\/www.robinglauser.ch\/blog\/?p=3528"},"modified":"2025-01-09T22:10:52","modified_gmt":"2025-01-09T20:10:52","slug":"building-a-luxafor-clone-in-under-an-hour","status":"publish","type":"post","link":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/","title":{"rendered":"Building a Luxafor Clone in under an hour"},"content":{"rendered":"<p>After having the pleasure of using a <a href=\"https:\/\/amzn.to\/4fMQudn\">Luxafor<\/a> focus light for a few weeks, tragedy struck. My coworker, who is also my former roommate and the person who introduced the idea to our department, told me I had to pass it on to someone else to try out.<\/p>\n<div class=\"alert alert-info\"><b>What is <a href=\"https:\/\/amzn.to\/4fMQudn\">Luxafor<\/a>?<\/b> It&#8217;s a small LED device that attaches to your computer monitor. You can set it to different colors to indicate your availability to coworkers (e.g., red for &#8220;busy&#8221;, green for &#8220;available&#8221;).<\/div>\n<p>Hearing this on Friday, only one thought came to mind for any sane person with too much time on their hands: &#8220;It can&#8217;t be that hard; I&#8217;ll just build my own over the weekend.&#8221;<\/p>\n<p>At 20:02, I sent the following message to my coworker:<\/p>\n<blockquote><p>Luxafor Clone in 3 2 1<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3529\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/animation.gif\" alt=\"\" width=\"640\" height=\"360\" \/><\/p>\n<p>I already had all the things I thought I needed, so I began piling up electronic components on my desk.<\/p>\n<p>After deciding on an <a href=\"https:\/\/amzn.to\/3C6c9zx\">Arduino Nano<\/a> as my microprocessor, I grabbed a few LEDs and looked up which resistor I needed. Luckily, I had written the Ohm value on the packaging of the resistor; otherwise, I would have had to measure it myself.<\/p>\n<p>At 20:28, I sent the following image along with a message to my coworker:<\/p>\n<blockquote><p>How much ohm is that again?<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3530 \" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/photo_2023-09-22_20-28-17-e1695409466500.jpg\" alt=\"\" width=\"578\" height=\"355\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/photo_2023-09-22_20-28-17-e1695409466500.jpg 960w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/photo_2023-09-22_20-28-17-e1695409466500-400x246.jpg 400w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/photo_2023-09-22_20-28-17-e1695409466500-768x472.jpg 768w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\" \/><\/p>\n<p>I was just joking; I tested it again to make sure past Robin hadn&#8217;t messed up or played a joke at my expense.<\/p>\n<p>Inspired by the<a href=\"https:\/\/www.arduino.cc\/en\/Tutorial\/BuiltInExamples\/Fade\"> revolutionary fade example<\/a>, I extended it to four LEDs (red, blue, green, yellow) and connected the circuit. I then had to assure my roommates that I wasn&#8217;t building a bomb and that I knew what I was doing.<\/p>\n<figure id=\"attachment_3531\" aria-describedby=\"caption-attachment-3531\" style=\"width: 2724px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3531 size-full\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507.png\" alt=\"The image depicts an Arduino Uno, which is a different model from the Arduino Nano I used in the project. However, the pin assignments for the RGB LED should still work, as both boards have similar pins.\" width=\"2724\" height=\"1200\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507.png 2724w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507-400x176.png 400w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507-1024x451.png 1024w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507-768x338.png 768w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507-1536x677.png 1536w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame-1-e1695410593507-2048x902.png 2048w\" sizes=\"auto, (max-width: 2724px) 100vw, 2724px\" \/><figcaption id=\"caption-attachment-3531\" class=\"wp-caption-text\">The image depicts an Arduino Uno, which is a different model from the Arduino Nano I used in the project. However, the pin assignments for the RGB LED should still work, as both boards have similar pins.<\/figcaption><\/figure>\n<p><a href=\"https:\/\/www.tinkercad.com\/things\/7dWSkelaL4U-fantastic-wolt-wluff\/editel?sharecode=0wMHIj7wv8QL4QKExafMtm0PTadmth-g0ccmTQbffYg\">https:\/\/www.tinkercad.com\/things\/7dWSkelaL4U-fantastic-wolt-wluff\/editel?sharecode=0wMHIj7wv8QL4QKExafMtm0PTadmth-g0ccmTQbffYg<\/a><\/p>\n<p>Then I uploaded this Arduino code (definitely not co-written by ChatGPT) to the Arduino Nano.<\/p>\n<p><script src=\"https:\/\/emgithub.com\/embed-v2.js?target=https%3A%2F%2Fgithub.com%2Fnahakiole%2Fluxame%2Fblob%2Fmain%2Fluxame.ino&#038;style=default&#038;type=code&#038;showBorder=on&#038;showLineNumbers=on&#038;showFileMeta=on&#038;showFullPath=on&#038;showCopy=on\"><\/script><\/p>\n<p>After that, <del>I<\/del> ChatGPT wrote the following Python code to control the device via a Tkinter GUI:<\/p>\n<p><script src=\"https:\/\/emgithub.com\/embed-v2.js?target=https%3A%2F%2Fgithub.com%2Fnahakiole%2Fluxame%2Fblob%2Fmain%2Fluxame.py&#038;style=default&#038;type=code&#038;showFullPath=on\"><\/script><\/p>\n<p>And that&#8217;s it; it works now. No bugs whatsoever. But don&#8217;t test it too hard.<\/p>\n<p>At 20:53, I sent a final message to my coworker, attaching this video:<\/p>\n<blockquote><p>Done<\/p><\/blockquote>\n<blockquote><p>Needed not even an hour<\/p><\/blockquote>\n<div style=\"width: 464px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3528-1\" width=\"464\" height=\"848\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame.mp4?_=1\" \/><a href=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame.mp4\">https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/luxame.mp4<\/a><\/video><\/div>\n<p>&nbsp;<\/p>\n<p>I&#8217;m looking forward to seeing their faces on Monday and hope I get through the security check at work. If this is my last post, you&#8217;ll know I didn&#8217;t make it.<\/p>\n<p>All the code is available on Github: <a href=\"https:\/\/github.com\/nahakiole\/luxame\">https:\/\/github.com\/nahakiole\/luxame<\/a><\/p>\n<p><strong>Update:\u00a0<\/strong>Using the leftover time of the weekend (Wasn&#8217;t planning on doing anything anyway :D) I improved the design a bit and updated it to use a RGB led):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3568 alignnone\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.58@2x.png\" alt=\"\" width=\"209\" height=\"224\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.58@2x.png 1132w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.58@2x-279x300.png 279w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.58@2x-953x1024.png 953w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.58@2x-768x825.png 768w\" sizes=\"auto, (max-width: 209px) 100vw, 209px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3566 alignleft\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.02@2x.png\" alt=\"\" width=\"184\" height=\"215\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.02@2x.png 834w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.02@2x-257x300.png 257w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.02@2x-768x897.png 768w\" sizes=\"auto, (max-width: 184px) 100vw, 184px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3567 alignleft\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.39@2x.png\" alt=\"\" width=\"184\" height=\"223\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.39@2x.png 1110w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.39@2x-248x300.png 248w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.39@2x-846x1024.png 846w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.54.39@2x-768x930.png 768w\" sizes=\"auto, (max-width: 184px) 100vw, 184px\" \/><\/p>\n<figure id=\"attachment_3569\" aria-describedby=\"caption-attachment-3569\" style=\"width: 476px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3569\" src=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.55.13@2x.png\" alt=\"\" width=\"476\" height=\"476\" srcset=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.55.13@2x.png 932w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.55.13@2x-301x300.png 301w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.55.13@2x-150x150.png 150w, https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/CleanShot-2023-10-15-at-21.55.13@2x-768x766.png 768w\" sizes=\"auto, (max-width: 476px) 100vw, 476px\" \/><figcaption id=\"caption-attachment-3569\" class=\"wp-caption-text\">And here it is placed on top of the monitor in my office. (The text on the box says: &#8220;Why buy it for 30$ when you can spend hours building it.)<\/figcaption><\/figure>\n<div class=\"alert alert-success\">\n<h4>Discussion: Why So Few Open Design Devices?<\/h4>\n<p>Building this <a href=\"https:\/\/amzn.to\/4fMQudn\">Luxafor<\/a> clone got me thinking: why don&#8217;t we see more devices with open hardware and software? There are some examples, but they seem to be the exception rather than the rule. What do you think could be holding back the spread of open design?<\/p>\n<p>Is it:<\/p>\n<ul>\n<li>Regulatory challenges and red tape?<\/li>\n<li>Developers&#8217; concerns about exposing their code to criticism?<\/li>\n<li>Potential security issues from open-sourcing device software?<\/li>\n<li>Fierce competition making companies protective of their IP?<\/li>\n<li>Something else entirely?<\/li>\n<\/ul>\n<p>I&#8217;m curious to hear your thoughts! Let me know in the comments if you have any ideas or insights into why open hardware and software aren&#8217;t more commonplace.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">After having the pleasure of using a Luxafor focus light for a few weeks, tragedy struck. My coworker, who is also my former roommate and the person who introduced the idea to our department, told me I had to pass it on to someone else to try out. What is Luxafor? It&#8217;s a small LED device that attaches to your &#8230; <a class=\"read-more\" href=\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":3561,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[256,45],"tags":[257,258,395],"class_list":["post-3528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-development","tag-arduino","tag-electronics","tag-random"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Building a Luxafor Clone in under an hour - Robin Glauser<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a Luxafor Clone in under an hour - Robin Glauser\" \/>\n<meta property=\"og:description\" content=\"After having the pleasure of using a Luxafor focus light for a few weeks, tragedy struck. My coworker, who is also my former roommate and the person who introduced the idea to our department, told me I had to pass it on to someone else to try out. What is Luxafor? It&#8217;s a small LED device that attaches to your ... Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\" \/>\n<meta property=\"og:site_name\" content=\"Robin Glauser\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-22T20:36:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-09T20:10:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"853\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Robin Glauser\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@robinglauser\" \/>\n<meta name=\"twitter:site\" content=\"@robinglauser\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Robin Glauser\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\"},\"author\":{\"name\":\"Robin Glauser\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19\"},\"headline\":\"Building a Luxafor Clone in under an hour\",\"datePublished\":\"2023-09-22T20:36:07+00:00\",\"dateModified\":\"2025-01-09T20:10:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\"},\"wordCount\":659,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19\"},\"image\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg\",\"keywords\":[\"arduino\",\"electronics\",\"random\"],\"articleSection\":[\"Arduino\",\"Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\",\"url\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\",\"name\":\"Building a Luxafor Clone in under an hour - Robin Glauser\",\"isPartOf\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg\",\"datePublished\":\"2023-09-22T20:36:07+00:00\",\"dateModified\":\"2025-01-09T20:10:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage\",\"url\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg\",\"contentUrl\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg\",\"width\":1280,\"height\":853},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.robinglauser.ch\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a Luxafor Clone in under an hour\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#website\",\"url\":\"https:\/\/www.robinglauser.ch\/blog\/\",\"name\":\"Robin Glauser\",\"description\":\"My Blog about Development, Design and my random thoughts.\",\"publisher\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.robinglauser.ch\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19\",\"name\":\"Robin Glauser\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg\",\"url\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg\",\"contentUrl\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg\",\"width\":800,\"height\":530,\"caption\":\"Robin Glauser\"},\"logo\":{\"@id\":\"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg\"},\"description\":\"I'm a web developer.\",\"sameAs\":[\"https:\/\/www.robinglauser.ch\",\"https:\/\/www.instagram.com\/robinglauser\/\",\"https:\/\/x.com\/robinglauser\"],\"url\":\"https:\/\/www.robinglauser.ch\/blog\/author\/robin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building a Luxafor Clone in under an hour - Robin Glauser","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/","og_locale":"en_US","og_type":"article","og_title":"Building a Luxafor Clone in under an hour - Robin Glauser","og_description":"After having the pleasure of using a Luxafor focus light for a few weeks, tragedy struck. My coworker, who is also my former roommate and the person who introduced the idea to our department, told me I had to pass it on to someone else to try out. What is Luxafor? It&#8217;s a small LED device that attaches to your ... Read More","og_url":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/","og_site_name":"Robin Glauser","article_published_time":"2023-09-22T20:36:07+00:00","article_modified_time":"2025-01-09T20:10:52+00:00","og_image":[{"width":1280,"height":853,"url":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg","type":"image\/jpeg"}],"author":"Robin Glauser","twitter_card":"summary_large_image","twitter_creator":"@robinglauser","twitter_site":"@robinglauser","twitter_misc":{"Written by":"Robin Glauser","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#article","isPartOf":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/"},"author":{"name":"Robin Glauser","@id":"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19"},"headline":"Building a Luxafor Clone in under an hour","datePublished":"2023-09-22T20:36:07+00:00","dateModified":"2025-01-09T20:10:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/"},"wordCount":659,"commentCount":0,"publisher":{"@id":"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19"},"image":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg","keywords":["arduino","electronics","random"],"articleSection":["Arduino","Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/","url":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/","name":"Building a Luxafor Clone in under an hour - Robin Glauser","isPartOf":{"@id":"https:\/\/www.robinglauser.ch\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage"},"image":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage"},"thumbnailUrl":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg","datePublished":"2023-09-22T20:36:07+00:00","dateModified":"2025-01-09T20:10:52+00:00","breadcrumb":{"@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#primaryimage","url":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg","contentUrl":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2023\/09\/robin-glauser-zP7X_B86xOg-unsplash-2-Large.jpeg","width":1280,"height":853},{"@type":"BreadcrumbList","@id":"https:\/\/www.robinglauser.ch\/blog\/2023\/09\/22\/building-a-luxafor-clone-in-under-an-hour\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.robinglauser.ch\/blog\/"},{"@type":"ListItem","position":2,"name":"Building a Luxafor Clone in under an hour"}]},{"@type":"WebSite","@id":"https:\/\/www.robinglauser.ch\/blog\/#website","url":"https:\/\/www.robinglauser.ch\/blog\/","name":"Robin Glauser","description":"My Blog about Development, Design and my random thoughts.","publisher":{"@id":"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.robinglauser.ch\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.robinglauser.ch\/blog\/#\/schema\/person\/e1a94504a6ff5171fa13670932514b19","name":"Robin Glauser","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg","url":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg","contentUrl":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg","width":800,"height":530,"caption":"Robin Glauser"},"logo":{"@id":"https:\/\/www.robinglauser.ch\/blog\/wp-content\/uploads\/2015\/10\/DSC_1244_small.jpg"},"description":"I'm a web developer.","sameAs":["https:\/\/www.robinglauser.ch","https:\/\/www.instagram.com\/robinglauser\/","https:\/\/x.com\/robinglauser"],"url":"https:\/\/www.robinglauser.ch\/blog\/author\/robin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/posts\/3528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/comments?post=3528"}],"version-history":[{"count":19,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/posts\/3528\/revisions"}],"predecessor-version":[{"id":3565,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/posts\/3528\/revisions\/3565"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/media\/3561"}],"wp:attachment":[{"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/media?parent=3528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/categories?post=3528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robinglauser.ch\/blog\/wp-json\/wp\/v2\/tags?post=3528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}