tag:blogger.com,1999:blog-15235772975088178692024-03-14T05:44:42.042-04:00Wise time with ArduinoLearn. Think. Make.FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.comBlogger290125tag:blogger.com,1999:blog-1523577297508817869.post-84660292381084250572022-09-18T10:14:00.000-04:002022-09-18T10:14:00.180-04:00Photos from the mail<p> From: William</p><p>Re: WiseClock4 with 5mm Sure Electronics displays</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX1d85I1tAtgEwTm0g8EU8QajzlMfQHzOZZbocDrs1XFFBa0cMe4xKSjueRrbzdj8u0Z6xJJRSNcmrk-jKz0nkLnwhiT8aWUrZfmIW5kD-X1KDQKJU7NJP8IC8dMyq18w9idis7PoDahcERFaFiEaFzspFRyOKNTrKuPm2rlSddOFM9AnKpy3XapSE_A/s4032/wiseclock5mm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX1d85I1tAtgEwTm0g8EU8QajzlMfQHzOZZbocDrs1XFFBa0cMe4xKSjueRrbzdj8u0Z6xJJRSNcmrk-jKz0nkLnwhiT8aWUrZfmIW5kD-X1KDQKJU7NJP8IC8dMyq18w9idis7PoDahcERFaFiEaFzspFRyOKNTrKuPm2rlSddOFM9AnKpy3XapSE_A/s320/wiseclock5mm.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XQwHkpyV4htPfxEKFAMpfMtTdSdSE5-QCgxfOBhc8Ab9N9SIcaN9GnOvR7frRM2PCOhilur4bDNMEh4F-Zh86jhkmOI9EBt8YXRZ73T9Bq5_7cmyHU0IIDZHAyuHU3Hic0CvUWBWiOHoiVgUObavs5gCAeNXOosewmHmaQ9YYbwz0qeN4ngfQeR-Xw/s4032/wiseclock5mm_back.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XQwHkpyV4htPfxEKFAMpfMtTdSdSE5-QCgxfOBhc8Ab9N9SIcaN9GnOvR7frRM2PCOhilur4bDNMEh4F-Zh86jhkmOI9EBt8YXRZ73T9Bq5_7cmyHU0IIDZHAyuHU3Hic0CvUWBWiOHoiVgUObavs5gCAeNXOosewmHmaQ9YYbwz0qeN4ngfQeR-Xw/s320/wiseclock5mm_back.jpeg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoAx9LFGtTTj1t9TeNHAbRHfk4HUjkeuNVEB1keeYeefPpD6CdOuWlbLrT0QTDteByqE64K7EMNbJoHkAIETLCuz_mUXOGTD6PUSRuEvfcivCjIKcLqDbYE7OhuCoKeFXChKCsPRKEycf4t6JR3IH9GlY7Md4Y4TS7gsX7HwqJg9RZm5f7dcYTUHrrCg/s4032/wiseclock5mm_front.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoAx9LFGtTTj1t9TeNHAbRHfk4HUjkeuNVEB1keeYeefPpD6CdOuWlbLrT0QTDteByqE64K7EMNbJoHkAIETLCuz_mUXOGTD6PUSRuEvfcivCjIKcLqDbYE7OhuCoKeFXChKCsPRKEycf4t6JR3IH9GlY7Md4Y4TS7gsX7HwqJg9RZm5f7dcYTUHrrCg/s320/wiseclock5mm_front.jpeg" width="320" /></a></div><br /><p>From: Colin</p><p>Re: 6-tube Nixie clock</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVFf7IqEdV3ZxqWmCoiLttHSbRwwN-c66wtfvPvheBma9Mi7gt1jGIcsX6dezoQOiR_7JOszleBNaUo-UftK-foeB9gev1PFLwdMIUDeiuWxjlaHXoQJZlHhCsUZbBqDvl2CrVGq6ysyUz9GJxZjl1gX7rjPTjTHpUNzHe1cgMsyaFv-OZNnbWEaQUg/s4032/colin1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJVFf7IqEdV3ZxqWmCoiLttHSbRwwN-c66wtfvPvheBma9Mi7gt1jGIcsX6dezoQOiR_7JOszleBNaUo-UftK-foeB9gev1PFLwdMIUDeiuWxjlaHXoQJZlHhCsUZbBqDvl2CrVGq6ysyUz9GJxZjl1gX7rjPTjTHpUNzHe1cgMsyaFv-OZNnbWEaQUg/s320/colin1.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb1IaIViNO5IsrPYI_fYS0TViqUVuO9BWMBB4jiBLxJhVyumZTKol0PWMaB8cqBE3Apya11KwafHUFiGTgnfWKQOtivVwrvA22v7eGCcoR7P4HfDYxNtsdH8cHSXe0OrCzGv9hIBOZCmrEPwZNjCj7b-FY-lCqqT7PSqXhD57qkuRqbuawRI9aEpZQyQ/s4032/colin2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="3024" data-original-width="4032" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb1IaIViNO5IsrPYI_fYS0TViqUVuO9BWMBB4jiBLxJhVyumZTKol0PWMaB8cqBE3Apya11KwafHUFiGTgnfWKQOtivVwrvA22v7eGCcoR7P4HfDYxNtsdH8cHSXe0OrCzGv9hIBOZCmrEPwZNjCj7b-FY-lCqqT7PSqXhD57qkuRqbuawRI9aEpZQyQ/s320/colin2.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIUPMJFD6UCfT1w6McjRgjDflqOAP_GGdJQdzjHUVC7wTVdcX5klAurHb8S0lg4mDXxMF77ux8EHDRf8uKkstUl_DI9sghaPEruukVogWp0s1s0wdiptcRLXpqLGmNbBHfVmwpMwDpvsjTjKRpsQNrDFnOi2zWKOHRWgzm1xW8iV9SfDUqGImjpBtpAA/s2116/colin3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1587" data-original-width="2116" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIUPMJFD6UCfT1w6McjRgjDflqOAP_GGdJQdzjHUVC7wTVdcX5klAurHb8S0lg4mDXxMF77ux8EHDRf8uKkstUl_DI9sghaPEruukVogWp0s1s0wdiptcRLXpqLGmNbBHfVmwpMwDpvsjTjKRpsQNrDFnOi2zWKOHRWgzm1xW8iV9SfDUqGImjpBtpAA/s320/colin3.jpg" width="320" /></a></div><br /><p>From: Charles</p><p>Re: GE LED clock</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AwviKVnlgX6cMMCFVCuMSHZ2oSUqEi_f780SRiV_CUNfQ7k1o4ZIgWw0W2jPgVcqiUh_ChKeloWvqZdliog1V8pkXOXZZyoBybNhIKOZyzP5cQzhmi0pmxGWwTiAUAc3gwHbbMYjkiaMqS0joUBVp25qi3E3fYKPcf3PZfyCdNj7gPmRadY_khF0Xg/s1600/GEdisplay.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1071" data-original-width="1600" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AwviKVnlgX6cMMCFVCuMSHZ2oSUqEi_f780SRiV_CUNfQ7k1o4ZIgWw0W2jPgVcqiUh_ChKeloWvqZdliog1V8pkXOXZZyoBybNhIKOZyzP5cQzhmi0pmxGWwTiAUAc3gwHbbMYjkiaMqS0joUBVp25qi3E3fYKPcf3PZfyCdNj7gPmRadY_khF0Xg/s320/GEdisplay.JPG" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKxPRQMz822DdRLld8jxXR0LlpVg5qsq60XhLy8NddNOkukiekcX8_hFYyk4rDeg5yd34sQF_HjJFPiuqnC7psToxLDFBlzZdEsohF6QvCY8P5_Ed3ftZaDstZCQ2sTeGTcjaR5Brc3v-GDbuP8Qsd_OCq9TB9c5e3NjreF7S-fG_jDdVRpiGctIwGUw/s1600/GEclock2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1071" data-original-width="1600" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKxPRQMz822DdRLld8jxXR0LlpVg5qsq60XhLy8NddNOkukiekcX8_hFYyk4rDeg5yd34sQF_HjJFPiuqnC7psToxLDFBlzZdEsohF6QvCY8P5_Ed3ftZaDstZCQ2sTeGTcjaR5Brc3v-GDbuP8Qsd_OCq9TB9c5e3NjreF7S-fG_jDdVRpiGctIwGUw/s320/GEclock2.JPG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjILNVgfOwTlRndAjy4IjwTtOhc9esRxb0DHSSL0eku3DWNq2yAviFQikV-FcqQTA1FXiArDBOuCUterLEwVXHUKw7S2YVIGSlIlc-OvMT0k6O2_e3Smlyxp7AofBF_lAc7xdp9D1WLv2-5kukxkmz2ac9ETg5JWNWMYyqCR8d6DnJkWK3GSeevLlVzmg/s1600/GEclock3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1071" data-original-width="1600" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjILNVgfOwTlRndAjy4IjwTtOhc9esRxb0DHSSL0eku3DWNq2yAviFQikV-FcqQTA1FXiArDBOuCUterLEwVXHUKw7S2YVIGSlIlc-OvMT0k6O2_e3Smlyxp7AofBF_lAc7xdp9D1WLv2-5kukxkmz2ac9ETg5JWNWMYyqCR8d6DnJkWK3GSeevLlVzmg/s320/GEclock3.JPG" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGSnOUo7TmMOtUlhTXeQinC9amGPEwVsvFaggaA071n_4ACfNZMZauzW8oh8gRvxgnOcbSVJ5DFCpdLsLTlVKxx5s_pU3Bxd8gpQlaeJziPblZRQLXORXCLmnFKuRYSOt2jZ8OXrOd1H_0IECbH7Yo-FJOcyU-0FFwVb49d20qi_NmzL_LA9SfzX-4Ig/s1600/GEclock4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1071" data-original-width="1600" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGSnOUo7TmMOtUlhTXeQinC9amGPEwVsvFaggaA071n_4ACfNZMZauzW8oh8gRvxgnOcbSVJ5DFCpdLsLTlVKxx5s_pU3Bxd8gpQlaeJziPblZRQLXORXCLmnFKuRYSOt2jZ8OXrOd1H_0IECbH7Yo-FJOcyU-0FFwVb49d20qi_NmzL_LA9SfzX-4Ig/s320/GEclock4.JPG" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJTosvO36vV7fZqPs1Flx3rqiL4dGg5H7j-z-D3p_F4rGxawGkjR2UHL3cP_1tQYMkzcm6Jg_PDryaO9RPawT8AiNHVc9UkVhBPuqqYSSIxzrObzdGNmQ3j2BcOqjTphLmBtW-wWjUQE_KAFtUFZyfdK6GeWYOw0bVzizR5XYy6H__womUsWLl6lzq1A/s1600/GEdisplay.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJTosvO36vV7fZqPs1Flx3rqiL4dGg5H7j-z-D3p_F4rGxawGkjR2UHL3cP_1tQYMkzcm6Jg_PDryaO9RPawT8AiNHVc9UkVhBPuqqYSSIxzrObzdGNmQ3j2BcOqjTphLmBtW-wWjUQE_KAFtUFZyfdK6GeWYOw0bVzizR5XYy6H__womUsWLl6lzq1A/s1600/GEdisplay.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGHjCHeBz90dBQRsM7Xb7BNiROInpT5COfDkL16lIjjZMfHSZvBBo9FtZ34uXNwzoEMSipX4ABt4VTMHgnHj8jXPFiljZQ43W4a-Yxcemlx60b81Nfc3-1aTY577zUk290Mh4m37lavzAfZhn4gKeWmTluyJn4_bapkqMr_uTybRQkCLRb0OC_R55q6w/s1600/GEclock2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div></div><br /><br /><p><br /></p>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-8624172246222375392021-10-08T00:15:00.000-04:002021-10-08T00:15:26.426-04:00A virtual tour of the computer birthplace<p>Travel is not easy these days. Luckily we have youtube, social <strike>distancing </strike>networks and friends who share photos from their excursions and adventures. Here are some from the famous Bletchley Park, where <a href="https://en.wikipedia.org/wiki/Colossus_computer" target="_blank">Colossus</a> was invented (and de-classified decades later). No wonder few know that this was actually the first computer, created by Tommy Flowers.</p><p>Colossus was recreated more than 50 years later from (human) memory, notes and imagination, blueprints destroyed long ago. It is on display in the National Museum of Computing, a separate entity from Bletchley Park museum (and therefore no photos of Colossus, just yet).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-QcGki_rcD_CeWcPUeE9O8Ppme3W-BDO6ld1pzVFqyRz1MIsazDrJ1xZNqm_Qgsue3Ur3PAXMoly4vO0rrK2slXV4vCVFaQuWax9zNkdwLotp0IBgH7Eeky3MyazqFykEs3z3skFeyF16/s1600/IMG-20210925-WA0048.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-QcGki_rcD_CeWcPUeE9O8Ppme3W-BDO6ld1pzVFqyRz1MIsazDrJ1xZNqm_Qgsue3Ur3PAXMoly4vO0rrK2slXV4vCVFaQuWax9zNkdwLotp0IBgH7Eeky3MyazqFykEs3z3skFeyF16/w400-h300/IMG-20210925-WA0048.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdB6_wyeRdQFmgmPzBNbJbipOJU_MkdkuFdNkOeW-QnFZVftwZPXtAbIMBClioot0XIC_-OQcWIwhFEp4Dm9VPeZ_OeMXSV_U2Voc2u4K5SbkZnOca5vpcoMMfSHCS9yL6Xzps9nqr2JOT/s1600/IMG-20210925-WA0042.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /><img border="0" data-original-height="1600" data-original-width="1200" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdB6_wyeRdQFmgmPzBNbJbipOJU_MkdkuFdNkOeW-QnFZVftwZPXtAbIMBClioot0XIC_-OQcWIwhFEp4Dm9VPeZ_OeMXSV_U2Voc2u4K5SbkZnOca5vpcoMMfSHCS9yL6Xzps9nqr2JOT/w300-h400/IMG-20210925-WA0042.jpg" width="300" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP64K5WzoRnP9lPeLcN2oosgVSLSpymHjd2r9xnlyND4j8Xq_I6I0cCwbp40HtvfIMYOSkzSKeiC2CuhkDdIFHyUMPZv8RdAPH-0kRJk2GIGObvwonkd-NeflWl74FVGiu9AE8PoGppUQh/s1600/IMG-20210925-WA0025.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhP64K5WzoRnP9lPeLcN2oosgVSLSpymHjd2r9xnlyND4j8Xq_I6I0cCwbp40HtvfIMYOSkzSKeiC2CuhkDdIFHyUMPZv8RdAPH-0kRJk2GIGObvwonkd-NeflWl74FVGiu9AE8PoGppUQh/w400-h300/IMG-20210925-WA0025.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkg6GaouoxYnxE3Vf2-Q6dvTc3c0Pmq9Z8W0QhugbukC-VZob-ORJX6Nua2sQFqXvfHmoZJmkJovIQnQEtkTBWyyeAz45IMTjPsjdtMYqVYESPZa_F7-teIk6AataaGNyPybxRhJ0vpNWM/s1600/IMG-20210925-WA0021.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkg6GaouoxYnxE3Vf2-Q6dvTc3c0Pmq9Z8W0QhugbukC-VZob-ORJX6Nua2sQFqXvfHmoZJmkJovIQnQEtkTBWyyeAz45IMTjPsjdtMYqVYESPZa_F7-teIk6AataaGNyPybxRhJ0vpNWM/w400-h300/IMG-20210925-WA0021.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgB3A1dg0hNUliu04KrTFDWBjdslE1ZxUYdaNsgQhDWkJAgoUSQUDt-ThbbXP1bfvYQxxpgN_EvkZA2GWOABSQseA4uGuzPbIms0Mu_0vxwZpQ1PjuJBd2j6MTg7loI-VLSQeTjmubMgBC/s1600/IMG-20210925-WA0013.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgB3A1dg0hNUliu04KrTFDWBjdslE1ZxUYdaNsgQhDWkJAgoUSQUDt-ThbbXP1bfvYQxxpgN_EvkZA2GWOABSQseA4uGuzPbIms0Mu_0vxwZpQ1PjuJBd2j6MTg7loI-VLSQeTjmubMgBC/w400-h300/IMG-20210925-WA0013.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihLWTLIz7oyZ1-w8Sgqo9yFILmU8RWKJyRyuNRF9ptv933ZEtmoM9KyJc-pFkYq_xtfy_kLS0UUm01I6ukdFKcYx5HwyzO7Jpbkv5_G2qY6QnLwvWyNtEv8FZujc2eVmOJX4-Es467C4e-/s1600/IMG-20210925-WA0014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihLWTLIz7oyZ1-w8Sgqo9yFILmU8RWKJyRyuNRF9ptv933ZEtmoM9KyJc-pFkYq_xtfy_kLS0UUm01I6ukdFKcYx5HwyzO7Jpbkv5_G2qY6QnLwvWyNtEv8FZujc2eVmOJX4-Es467C4e-/w400-h300/IMG-20210925-WA0014.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioufvpMeWCWYVBof3NQSnKZKqv5kw94ckQrEyymxt3-oUSZcLt2XUCOEShJM80LB9Yh7lvdsPo5Io1BTHGUdH690QNFGMwRDWylyGyCCqljuR6ydheFdzyat8Bq8PM0lYoDiCi4sfIxyHc/s1600/IMG-20210925-WA0001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioufvpMeWCWYVBof3NQSnKZKqv5kw94ckQrEyymxt3-oUSZcLt2XUCOEShJM80LB9Yh7lvdsPo5Io1BTHGUdH690QNFGMwRDWylyGyCCqljuR6ydheFdzyat8Bq8PM0lYoDiCi4sfIxyHc/w300-h400/IMG-20210925-WA0001.jpg" width="300" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi36YNZiMfAaIIcw65fzEG4Elt4WeeuWN8Fe2jey7jTndnn-LahB1FutF2QCyAUtVyjetx2lrq0QRlaer1Qkbdd3xKOL_e4S0v796dpDRBs6mqKdHygElwyt2sCX07xt-UvgFYa7eOxNg7F/s1600/IMG-20210925-WA0002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi36YNZiMfAaIIcw65fzEG4Elt4WeeuWN8Fe2jey7jTndnn-LahB1FutF2QCyAUtVyjetx2lrq0QRlaer1Qkbdd3xKOL_e4S0v796dpDRBs6mqKdHygElwyt2sCX07xt-UvgFYa7eOxNg7F/w300-h400/IMG-20210925-WA0002.jpg" width="300" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRCqsiFvzdpbhRzPfxF28x3zQ5OY9a6eFMBEK8YO3-3w3zLRGJT3OxTdpD9lDMrx8Zjkrh7NBYsi_AMwKb_XRre36KRtSuVCvn8hlWfdOgofAhymWIPK4kY4SaxEPGjWdKmj3n_T1v30H6/s1600/IMG-20210925-WA0005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRCqsiFvzdpbhRzPfxF28x3zQ5OY9a6eFMBEK8YO3-3w3zLRGJT3OxTdpD9lDMrx8Zjkrh7NBYsi_AMwKb_XRre36KRtSuVCvn8hlWfdOgofAhymWIPK4kY4SaxEPGjWdKmj3n_T1v30H6/w400-h300/IMG-20210925-WA0005.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6eRFpIw-ghb8jurKKO9ED-xeojKGQyASDeOIyePluTUVZ64fSlSPVvpeIbxCxrTN3gT62_JHHWKRbAYvR5UYa_X8KzRr4qCvsELWlj5M1lNi_40x0p4R8dSL2Qme7Iv3rcif8XZYE7GD/s1600/IMG-20210925-WA0008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS6eRFpIw-ghb8jurKKO9ED-xeojKGQyASDeOIyePluTUVZ64fSlSPVvpeIbxCxrTN3gT62_JHHWKRbAYvR5UYa_X8KzRr4qCvsELWlj5M1lNi_40x0p4R8dSL2Qme7Iv3rcif8XZYE7GD/w400-h300/IMG-20210925-WA0008.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCtJ4iDK-UvT5F3a2oORM6GwvEfc20yT7OrAaHj2Se2MATJGA97GDD31eu8qsIg0-v7rqw8ARDfC1uWC5YCocbMZuZPDqk1agiui8_vKC1AnufPILReGzJi9Mm01SIwqdrbrgBhbcfG-Jn/s1600/IMG-20210925-WA0010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCtJ4iDK-UvT5F3a2oORM6GwvEfc20yT7OrAaHj2Se2MATJGA97GDD31eu8qsIg0-v7rqw8ARDfC1uWC5YCocbMZuZPDqk1agiui8_vKC1AnufPILReGzJi9Mm01SIwqdrbrgBhbcfG-Jn/w400-h300/IMG-20210925-WA0010.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfstOWYky2mJvdkz6Q5BQziQPI8nvrXL7VcExSSxOgrxTcB3kgXM1wJ5fRtK5Upmwa6t4J0bH8UTewwQ7U4dY-QBLEzv-igojxsxY9xYXoXfYGJAw16ozdFL5FyYYDN1G0yXUaCRvmbuCZ/s1600/IMG-20210925-WA0049.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfstOWYky2mJvdkz6Q5BQziQPI8nvrXL7VcExSSxOgrxTcB3kgXM1wJ5fRtK5Upmwa6t4J0bH8UTewwQ7U4dY-QBLEzv-igojxsxY9xYXoXfYGJAw16ozdFL5FyYYDN1G0yXUaCRvmbuCZ/w400-h300/IMG-20210925-WA0049.jpg" width="400" /></a></div><div><br /></div><br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-5938922836022235072021-06-03T20:31:00.007-04:002021-06-03T22:34:25.571-04:00Assembling the Pro Mini OLED clock shield kit<p>Customers complained about the lack of documentation on the <b><a href="https://www.tindie.com/products/florinc/oled-clock-shield-kit-for-promini/" target="_blank">Pro Mini OLED clock kit</a></b>.</p><p>I listened and I agree. Even though the silkscreen should provide the necessary directions for soldering the parts on the shield itself, adding the Pro Mini board and the OLED display are still ambiguous, especially because there are multiple options.</p><p>Here is a quick, but hopefully adequate, step-by-step guide on one way to assemble this clock kit.</p><p><b>1.</b> Make sure you source the correct Pro Mini board, that looks similar to the one in the photos below. It features an ATmega328 clocked at 16MHz.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJLLpqWxKJmtZ1T6fHJNDnA54ujJxg_oz-648yN08mR4YB8Dkxjy03AzLNyK73EzbaU5pdoGPE30RJq6DjZcYy3G_muV2Ga3Hto2NRkqjwbgasXhEbtGPW4KC-eeWko6B6wzCBJV8A7WSd/s629/ProMiniTop.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="471" data-original-width="629" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJLLpqWxKJmtZ1T6fHJNDnA54ujJxg_oz-648yN08mR4YB8Dkxjy03AzLNyK73EzbaU5pdoGPE30RJq6DjZcYy3G_muV2Ga3Hto2NRkqjwbgasXhEbtGPW4KC-eeWko6B6wzCBJV8A7WSd/s320/ProMiniTop.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Note that SCL and SDA (A5, A4 respectively) are broken out. Also, the FTDI connects directly to the side of the Pro Mini board.<div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF403xHe-eFJH3RPUY63C9iynQ9JEzzzDIhtIzG6kv0Wjpa_6E381RzddqsCyAMEhwusC0LbbHeZ1vcBrXtmRL7zIk-oTqzm6MHVUoNsU404QmA8kfnkeS1os7l6WZtu4ApiGpkxfmZTBQ/s500/ProMiniBack.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="404" data-original-width="500" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF403xHe-eFJH3RPUY63C9iynQ9JEzzzDIhtIzG6kv0Wjpa_6E381RzddqsCyAMEhwusC0LbbHeZ1vcBrXtmRL7zIk-oTqzm6MHVUoNsU404QmA8kfnkeS1os7l6WZtu4ApiGpkxfmZTBQ/s320/ProMiniBack.jpg" width="320" /></a></div><div><br /></div><div><b>2.</b> Program the board itself with the <a href="https://drive.google.com/file/d/0B01cjIbSk11NZ0lIYlYxWWloTjQ/view?usp=sharing" target="_blank">OLED Clock sketch</a>. In Tools/Board, select "Arduino Duemilanove w/ ATmega328". Upload using the FTDI adapter. This step is important because you want to make sure your Pro Mini works before you mount/solder it.</div><div><br /></div><div><b>3.</b> Make sure you source the correct I2C 128x64 OLED display, like the one shown below.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ5p_remGaSMb3azyc_fn_T0SBBk6ZLG4NKUOIU_JGAI23m48ViFecJFT6e3DZ8NG77pSw_JQUO_Fwj0Mo9PWhOyjzYVE0DDfANernJWIQGWEKS4U4Cb0FAEo3Ifz3RirM7XEpEb0teFwM/s1002/oled.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1002" data-original-width="1002" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ5p_remGaSMb3azyc_fn_T0SBBk6ZLG4NKUOIU_JGAI23m48ViFecJFT6e3DZ8NG77pSw_JQUO_Fwj0Mo9PWhOyjzYVE0DDfANernJWIQGWEKS4U4Cb0FAEo3Ifz3RirM7XEpEb0teFwM/s320/oled.jpg" /></a></div><br /><div>The pins at the top must be in the order (left to right) VCC-GND-SCL-SDA or VCC-GND-SDA-SCL.</div><div><br /></div><div><i>In case your display has a different arrangement of the pins, e.g. GND-VCC-SCL-SDA, you will need to swap the leftmost two pins, by rewiring the traces (cut, then reconnect) on the shield's PCB (not on the display, which remains untouched), as explained in <b>Step 6</b>.</i></div><div><br /></div><div><b>4.</b> Solder the DS1307, paying attention to the correct orientation (notch up), then the 2 resistors and the crystal.</div><p><b>5.</b> Solder the 2 jumper bridges according to the OLED display you are going to use.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-HYKzhBL2px4usHzDTnFbweZ_CpttCFZb-DkeWDKK9dzk38GPJvQ-sCDXLIgqrhemlXEzplZod5SIeHgoFi0fuiyd5xkDisMPQafHD4IvCxmfQnoDvY1zxciX2klMdZbuC_lJo7a0Smz8/s713/i.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="583" data-original-width="713" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-HYKzhBL2px4usHzDTnFbweZ_CpttCFZb-DkeWDKK9dzk38GPJvQ-sCDXLIgqrhemlXEzplZod5SIeHgoFi0fuiyd5xkDisMPQafHD4IvCxmfQnoDvY1zxciX2klMdZbuC_lJo7a0Smz8/s320/i.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: left;">If your OLED has pin 3 and 4 configured as SCL and SDA respectively, then solder the right bridge of the left jumper and the left bridge of the right jumper (see the photo below).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrPyl6FsT4L4LfuAIOraErXaPMpGc0aROdw0F25MTigtXoX3MQix-YnvTKbMWqAYfpyD8JASU4HDRZ8AF-8yu_GbNR9QKJxU898teyTUiYJSL-_dhXIHoNXUrBNjuX4BnxisnzxZ9vYS8y/s2048/step1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrPyl6FsT4L4LfuAIOraErXaPMpGc0aROdw0F25MTigtXoX3MQix-YnvTKbMWqAYfpyD8JASU4HDRZ8AF-8yu_GbNR9QKJxU898teyTUiYJSL-_dhXIHoNXUrBNjuX4BnxisnzxZ9vYS8y/s320/step1.JPG" width="320" /></a></div><div><br /></div><div><b>6. Only if necessary</b></div>Remember, the Pro Mini OLED shield was designed for I2C OLED displays that have pin 1 as VCC and pin 2 as GND. If that is not the case (as in the photo below),</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxG8oiNefoN9htmJEqwEMZBArUD6Qxq5UxAyIHNH4qNkiz-YlDvFIqCbdyLObBxamR-2VS5mrCaW8YAg3zjkvvWeoy7ADVnQe7eySgT4tv3jGOp5rQjALaA8GaZ4_MUN6kE5raLto7WPJI/s634/gndVcc.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="626" data-original-width="634" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxG8oiNefoN9htmJEqwEMZBArUD6Qxq5UxAyIHNH4qNkiz-YlDvFIqCbdyLObBxamR-2VS5mrCaW8YAg3zjkvvWeoy7ADVnQe7eySgT4tv3jGOp5rQjALaA8GaZ4_MUN6kE5raLto7WPJI/s320/gndVcc.JPG" width="320" /></a></div><br /><div>those first 2 pins must be rewired, as shown (after the traces had been cut and pins isolated).</div><div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCFZ6fwkPOVEHZu2IPny_NVez2vVxlRVydJCw2OLtfiwtu9Usl1T0xTP20arVf05_HcUdku9mim8zhWTLw5G-9XbhePmHBPyr64ezjk0JCj-czqXVh_ggaXQ8e5c7UaocjWuckNMlXBmOE/s2048/reroute.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCFZ6fwkPOVEHZu2IPny_NVez2vVxlRVydJCw2OLtfiwtu9Usl1T0xTP20arVf05_HcUdku9mim8zhWTLw5G-9XbhePmHBPyr64ezjk0JCj-czqXVh_ggaXQ8e5c7UaocjWuckNMlXBmOE/s320/reroute.JPG" width="320" /></a></div><br /><div><b>7.</b> Solder the Pro Mini board on top and close to the OLED shield, using machined male pins (included in the kit). Only the relevant pins, highlighted in the photo below, need to be soldered.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUTGaH1ideYDWFiiVt0yMXPmHzJixMICuUW3DQEz4xOl0k6gaIXZhICbvfNHWrHjxkxVtDaKdNaBM2iZ2wFniEXzNzj0dsw7v_XswccN_SPuuAr6PvhNSbobxuHXGWj3zzvvUq0x5OLZvz/s2048/prominiontop.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUTGaH1ideYDWFiiVt0yMXPmHzJixMICuUW3DQEz4xOl0k6gaIXZhICbvfNHWrHjxkxVtDaKdNaBM2iZ2wFniEXzNzj0dsw7v_XswccN_SPuuAr6PvhNSbobxuHXGWj3zzvvUq0x5OLZvz/s320/prominiontop.JPG" width="320" /></a></div><br /><div>Pay attention, since this is a hard-to-reverse move. Fixing a mistake here involves de-soldering. Also, the parts underneath cannot be (easily) accessed anymore.</div><div><br /></div><div><b>8.</b> Solder the 4-pin female header, the 2 buttons and the battery holder, then insert the CR1225 battery, with the correct polarity (+ on top).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49LjOk9QpvvMRNQM7CVhZmyRkWsFmiKZk2C7DVcJ9uRArVHhjEp_apaptrtVNgDxuB_JkkweQVXfJs_Se2wYeT31bkLJS8xFis6yWuNdhm0XGfz4OImyFMniTCrox9hxaq4bN9E9pVtpr/s2048/step+7.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg49LjOk9QpvvMRNQM7CVhZmyRkWsFmiKZk2C7DVcJ9uRArVHhjEp_apaptrtVNgDxuB_JkkweQVXfJs_Se2wYeT31bkLJS8xFis6yWuNdhm0XGfz4OImyFMniTCrox9hxaq4bN9E9pVtpr/s320/step+7.JPG" width="320" /></a></div><br /><div><b>9.</b> Insert the OLED display.</div><div><br /></div><div><b>10.</b> Power the clock through the FTDI breakout (observe the correct orientation) or by directly wiring VCC and GND to a 5V or battery source.</div><div>Any of the <a href="http://timewitharduino.blogspot.com/2020/07/arduino-oled-display-shield.html" target="_blank">5 clock faces</a> can be selected by pushing simultaneously the 2 buttons.</div><div>Pressing each button individually will increment either the hours or the minutes.</div><div><br /></div><div><br /></div><div> </div></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-7462741924680647722021-04-03T18:08:00.014-04:002021-04-04T14:19:15.683-04:00Great 8 character fluorescent (VFD) display <p> In the process of expanding the family of <a href="http://timewitharduino.blogspot.com/2021/01/more-wifichron-variants.html" target="_blank">supported displays</a> for the <b><a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WiFiChron</a></b> clock, I found this <a href="https://www.aliexpress.com/item/1005001498957894.html?spm=a2g0s.9042311.0.0.106b4c4dfE0VCS" target="_blank">amazing VFD m</a>odule on aliexpress:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaomHILzVM7olUiLVKVvpOls-cY5Eaahk8MNscvqA0PKF3Aah8JSQJhnO7BgS_2x1fDC-8BQ5ZO_oU1UIm0LnJSWleumhyphenhyphenOfHXldw9Dr_4cc7h5Dkax5zGCl03ypmuv0hrSfHUKFRrNUJ1/s2048/VFD-8.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaomHILzVM7olUiLVKVvpOls-cY5Eaahk8MNscvqA0PKF3Aah8JSQJhnO7BgS_2x1fDC-8BQ5ZO_oU1UIm0LnJSWleumhyphenhyphenOfHXldw9Dr_4cc7h5Dkax5zGCl03ypmuv0hrSfHUKFRrNUJ1/w400-h300/VFD-8.JPG" width="400" /></a></div><p>It has an SPI interface, it is powered by 5V, character set is defined and stored internally.</p><p>A quick search produced <a href="https://blog.csdn.net/sxhexin/article/details/107284089" target="_blank">a sketch</a> and documentation for the driver, <a href="http://www.ic72.com/pdf_file/p/427310.pdf" target="_blank">PT6302</a>.</p><p>According to the PCB silkscreen, the VFD module is powered by 5V, but the signals are 3V3. (The 30V required by the VFD glass itself is made by the on-board switching mode power supply, so no need to worry about generating high voltage externally.) An ESP32 board would be the perfect candidate to control this display. Luckily, the found sketch was also written for ESP32, so all I had to do was compile and upload using Arduino IDE 1.8.13. The only problem was that my IDE installation did not show ESP32 boards anymore, even though <a href="http://timewitharduino.blogspot.com/2020/06/sure-32x16-display-ht1632-driven-by.html" target="_blank">I used it once</a> previously. Therefore, I had to re-visit the whole setup process once again. This time I am documenting it, to save on any future effort. So here are the steps:</p><p></p><ul style="text-align: left;"><li>install Arduino IDE (1.8.13, in my case) from Windows store, placed here:</li></ul><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqiwCG6LYwExuoaC4SYdxVmXNh1akxJctgYBmMA5vVfgUnvt1xz_wdGrbp10ib1UyKTqdoZ8svl3j4kkPVy2pdbKEiWArfj2TmvIKKmDyBXBUcHbhXD6K1ipJTumTDxPtjSNl2KESirLT/s355/arduinoFolder.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="339" data-original-width="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqiwCG6LYwExuoaC4SYdxVmXNh1akxJctgYBmMA5vVfgUnvt1xz_wdGrbp10ib1UyKTqdoZ8svl3j4kkPVy2pdbKEiWArfj2TmvIKKmDyBXBUcHbhXD6K1ipJTumTDxPtjSNl2KESirLT/s320/arduinoFolder.JPG" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>add the ESP32/expressif package URL for the Boards Manager, <a href="https://dronebotworkshop.com/esp32-intro/" target="_blank">as nicely explained here</a>; essentially, select menu <i>File -> Preferences</i>, then add line</li></ul></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: courier;">https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json</span></div><div class="separator" style="clear: both; text-align: left;">to input box "<i>Additional Boards Manager URLs</i>".</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3L-GQtQB9OFf3LUXU71lNwDA4SMCEPY_YmgKDBY_6Cj8WCKSflhPJwakQHKTTm9Li1MT0qnYJmCF9yreWQQ8Q-goLoiElfGlpnn3Io1dpmUhJWfwg76R7zHfYzC_W2Aqm6QOxcuQOfrHb/s919/arduinoESP32.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="834" data-original-width="919" height="363" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3L-GQtQB9OFf3LUXU71lNwDA4SMCEPY_YmgKDBY_6Cj8WCKSflhPJwakQHKTTm9Li1MT0qnYJmCF9yreWQQ8Q-goLoiElfGlpnn3Io1dpmUhJWfwg76R7zHfYzC_W2Aqm6QOxcuQOfrHb/w400-h363/arduinoESP32.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>install the set of ESP32 boards in "Boards Manager"; menu <i>Tools -> Boards Manager</i>:</li></ul></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSM8srDAlLGkn1FCSQ-CIsNm6NfEXUijE1LarO7FSpL8O0HSGsmxsa_Y5H4FtZ9IATTzW4obJOFTp8XagDkesBvPiWorweswxPCyjW7rZovOZeDlVHJV0PPWbzSuKWW_NC__RwHIWwR2K_/s855/arduinoBoardManager.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="688" data-original-width="855" height="321" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSM8srDAlLGkn1FCSQ-CIsNm6NfEXUijE1LarO7FSpL8O0HSGsmxsa_Y5H4FtZ9IATTzW4obJOFTp8XagDkesBvPiWorweswxPCyjW7rZovOZeDlVHJV0PPWbzSuKWW_NC__RwHIWwR2K_/w400-h321/arduinoBoardManager.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>select the proper board for the ESP32-WROOM dev kit that I used; menu <i>Tools -> Boards Manager -> ESP32 Arduino -> Node32s</i>;</li></ul></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnAmx3Ki0nfxqpnD_S4rNsszpKHCUkrA6UYtlVDDrQefd8KFtsPCdfSejEp_JIKNNrr1FcNPPu3y6qiKUiOTfL6SzgIUcSCFlRR8-_5BP3v4NOjiIfhXPr53x32x1IKRjNJYbMeXla47Xb/s948/arduinoBoard.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="948" data-original-width="942" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnAmx3Ki0nfxqpnD_S4rNsszpKHCUkrA6UYtlVDDrQefd8KFtsPCdfSejEp_JIKNNrr1FcNPPu3y6qiKUiOTfL6SzgIUcSCFlRR8-_5BP3v4NOjiIfhXPr53x32x1IKRjNJYbMeXla47Xb/w398-h400/arduinoBoard.JPG" width="398" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>open the sketch, then modify the SPI pins (I used DIN=33, CLK=12, CS=13, RST=27, all on the same side of the ESP32 dev module); got compilation error "Library not found" for both NTPClient and TimeLib;</li></ul></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw4_z9NuHYdHhTPIyZt2uMJKq1IDBwKebehnktXhpUqQ0ttRMqSk8EtuJyMbYBlaFachUIHC5haFiL4loRv34b32fvx54GHZoiyOpo2jjBzcxkFqXuly5-cuu8_vAtNzpZFZ2DLY7QMOJ6/s556/arduinoIncludes.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="197" data-original-width="556" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw4_z9NuHYdHhTPIyZt2uMJKq1IDBwKebehnktXhpUqQ0ttRMqSk8EtuJyMbYBlaFachUIHC5haFiL4loRv34b32fvx54GHZoiyOpo2jjBzcxkFqXuly5-cuu8_vAtNzpZFZ2DLY7QMOJ6/w400-h141/arduinoIncludes.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><ul style="text-align: left;"><li>install the missing libraries, through menu <i>Tools -> Manage Libraries...</i></li></ul></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji7mAo8klSFSLCOh2bTPIqj-DYNHLk2ODxX9iKdvL8ZRUIoziD29R18R1F528lLu1xPgZtI3rZgu-PvXcmVaskrC47w4Ba6C78EUm9ZukvmWe9HyT1yAXRtIG7ThvInjjvHhMim3mGPEZC/s850/arduinoLibrary.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="687" data-original-width="850" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji7mAo8klSFSLCOh2bTPIqj-DYNHLk2ODxX9iKdvL8ZRUIoziD29R18R1F528lLu1xPgZtI3rZgu-PvXcmVaskrC47w4Ba6C78EUm9ZukvmWe9HyT1yAXRtIG7ThvInjjvHhMim3mGPEZC/w400-h324/arduinoLibrary.JPG" width="400" /></a></div><div>The 2 libraries have been installed here</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8xOP8YQldArLkYFI1GCJQXaEvtpsyXlBQoteP9RmTo48vhuAdeVnU8ZHaNdkSGziQzEpYyocKPHElRjfges1018AYbhzhtkOtwsxS_KbMVVhM6dftGg1NShWMw1oHoO6WdwUSbkqLux09/s823/arduinoLibFolder.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="149" data-original-width="823" height="73" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8xOP8YQldArLkYFI1GCJQXaEvtpsyXlBQoteP9RmTo48vhuAdeVnU8ZHaNdkSGziQzEpYyocKPHElRjfges1018AYbhzhtkOtwsxS_KbMVVhM6dftGg1NShWMw1oHoO6WdwUSbkqLux09/w400-h73/arduinoLibFolder.JPG" width="400" /></a></div><div>at the location specified in <i>File -> Preferences</i>:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSHGo5r2HHdpUu9mHQEQkhhbyT7fBJChPKEztR4zfN1Qq-Gq5S_rVIo9dwGs-ovq7YIq-XOU1LenEKcSxV6gCMCZGidfXsoV4pbAdJeKTwU65hMvE3Rem6CBZUdts5yREBC1iJNmiHV8fr/s831/arduinoLibLocation.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="670" data-original-width="831" height="323" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSHGo5r2HHdpUu9mHQEQkhhbyT7fBJChPKEztR4zfN1Qq-Gq5S_rVIo9dwGs-ovq7YIq-XOU1LenEKcSxV6gCMCZGidfXsoV4pbAdJeKTwU65hMvE3Rem6CBZUdts5yREBC1iJNmiHV8fr/w400-h323/arduinoLibLocation.JPG" width="400" /></a></div><div><ul style="text-align: left;"><li>compile, then upload successfully.</li></ul></div><div class="separator" style="clear: both; text-align: left;">Surprisingly easy, straightforward and without glitches, this must have been the easiest ever first-time interfacing with a device.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Compared to the HDSP-2534 LED display, the characters in the VFD module are about 50% bigger, and much brighter, making it readable from a greater distance. The current consumption is in the range 100-200mA, versus about 20mA taken by the HDSP display.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCXYeCtVOvI3G_tJ0cOLGg5vO1qXK43CoBNXMOETuqvbS3qzPLCMYjypQ_CSQXkwU9sllnhij7rLScD4tT8gqA0febBNO-lzzpNiJf6TJgj63JJrtXwYYrPVT5lQIPyGCVM4-dst2XpvEZ/s2048/VFD-LED.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCXYeCtVOvI3G_tJ0cOLGg5vO1qXK43CoBNXMOETuqvbS3qzPLCMYjypQ_CSQXkwU9sllnhij7rLScD4tT8gqA0febBNO-lzzpNiJf6TJgj63JJrtXwYYrPVT5lQIPyGCVM4-dst2XpvEZ/w400-h300/VFD-LED.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: left;">Also, at just about US$13, this (yet unnamed, or maybe Futaba?, see photo below) VFD display makes a great functional alternative for the more expensive HDSP/Avago/Siemens/Osram 8-character LED displays.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuJiFnrsttI-HvfY5BhtQaBUrqCpaMbcnhNK90RH_MNeusQTTyzk4iSBrS_pOdNihBF19h89rHmcPahjhxY6aUjXs2i-U_z3wOCLx63w4nAres5XumqEO4q47IbnypiD1qH9yai9nSlrE3/s2048/VFD-8-back.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuJiFnrsttI-HvfY5BhtQaBUrqCpaMbcnhNK90RH_MNeusQTTyzk4iSBrS_pOdNihBF19h89rHmcPahjhxY6aUjXs2i-U_z3wOCLx63w4nAres5XumqEO4q47IbnypiD1qH9yai9nSlrE3/w400-h300/VFD-8-back.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">For the record, this was my setup:</div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRzbOWFgh6qvBjwx61K2uaP-597ExC5LnM54gl7kWQ2DtI3pGjaOv4SY_bL-rtSLDQYuRDLre-eEjSRX9eZHgZt1ApXDc2O21eBz5a2LdMXjusa1cuHYz7pRShK6DyWQnlw8GDTguCDlk/s2048/setup1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSRzbOWFgh6qvBjwx61K2uaP-597ExC5LnM54gl7kWQ2DtI3pGjaOv4SY_bL-rtSLDQYuRDLre-eEjSRX9eZHgZt1ApXDc2O21eBz5a2LdMXjusa1cuHYz7pRShK6DyWQnlw8GDTguCDlk/w400-h300/setup1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZS_TaQU1mPsXLF2vx_bee4PU7dUC-C6e7PDpszSzG18Q1fiEHy3kX_vFvAN1Oal7NdcMdJXE3KvjsOMSVs5fHTp9U2V01ATw2aLR_lYs_FpAS_pLJlcUpidsf2IslF8Cpu9oPyXGkEDl5/s2048/setup2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZS_TaQU1mPsXLF2vx_bee4PU7dUC-C6e7PDpszSzG18Q1fiEHy3kX_vFvAN1Oal7NdcMdJXE3KvjsOMSVs5fHTp9U2V01ATw2aLR_lYs_FpAS_pLJlcUpidsf2IslF8Cpu9oPyXGkEDl5/w400-h300/setup2.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: left;">And the (modified, barebone) sketch:</div><div class="separator" style="clear: both; text-align: left;"><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: #555555; font-family: Menlo, Monaco, Consolas, Courier New, monospace;">#include <WiFi.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <TimeLib.h>
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "cn.ntp.org.cn", 8*3600, 60000);
const char *ssid = "<wifinet>";
const char *password = "<password>";
uint8_t din = 33; // DA
uint8_t clk = 12; //23; // CK
uint8_t cs = 13; //19; // CS
uint8_t Reset = 27; //22; // RS
char *str_time = "00:00:00";
String format_time = "00:00:00";
void write_6302(unsigned char w_data)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
digitalWrite(clk, LOW);
if ( (w_data & 0x01) == 0x01)
{
digitalWrite(din, HIGH);
}
else
{
digitalWrite(din, LOW);
}
w_data >>= 1;
digitalWrite(clk, HIGH);
}
}
void VFD_cmd(unsigned char command)
{
digitalWrite(cs, LOW);
write_6302(command);
digitalWrite(cs, HIGH);
delayMicroseconds(5);
}
void S1201_show(void)
{
digitalWrite(cs, LOW);
write_6302(0xe8);
digitalWrite(cs, HIGH);
}
void VFD_init()
{
// set number of characters for display;
digitalWrite(cs, LOW);
write_6302(0xe0);
delayMicroseconds(5);
write_6302(0x07); // 8 chars;
digitalWrite(cs, HIGH);
delayMicroseconds(5);
// set brightness;
digitalWrite(cs, LOW);
write_6302(0xe4);
delayMicroseconds(5);
write_6302(0x33); // level 255 (max);
digitalWrite(cs, HIGH);
delayMicroseconds(5);
}
void S1201_WriteOneChar(unsigned char x, unsigned char chr)
{
digitalWrite(cs, LOW);
write_6302(0x20 + x);
write_6302(chr + 0x30);
digitalWrite(cs, HIGH);
S1201_show();
}
void S1201_WriteStr(unsigned char x, char *str)
{
digitalWrite(cs, LOW);
write_6302(0x20 + x);
while (*str)
{
write_6302(*str); // ascii
str++;
}
digitalWrite(cs, HIGH);
S1201_show();
}
void setup()
{
WiFi.begin(ssid, password);
Serial.begin(115200);
Serial.print("Connecting.");
while ( WiFi.status() != WL_CONNECTED ) {
delay(500);
Serial.print(".");
}
Serial.println("connected");
timeClient.begin();
pinMode(clk, OUTPUT);
pinMode(din, OUTPUT);
pinMode(cs, OUTPUT);
pinMode(Reset, OUTPUT);
digitalWrite(Reset, LOW);
delayMicroseconds(5);
digitalWrite(Reset, HIGH);
VFD_init();
}
void loop()
{
timeClient.update();
format_time = timeClient.getFormattedTime();
char *str_time = &format_time[0];
S1201_WriteStr(0, str_time);
Serial.println(timeClient.getFormattedTime());
delay(1000);
}</span><span style="color: #333333; font-family: Consolas, monospace; font-size: 13px;">
</span></pre><div><br /></div></div><div class="separator" style="clear: both; text-align: left;">Next step should be researching the PT6302 command set, finding out how to adjust brightness and others.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-19065635882251818282021-03-07T16:15:00.013-05:002021-03-07T16:32:37.451-05:00Biggest WiFiChron display so far<p>In the world of 16-segment displays, <a href="https://openkolibri.com/seg/16/" target="_blank">Klais-16</a> is the biggest I have seen, at about 8cm (3") character height. Multiple displays can be daisy-chained and controlled through serial communication (1 pin, TX). It is <a href="https://github.com/openKolibri/klais-16" target="_blank">open source</a> and available to buy on <a href="https://www.tindie.com/products/openkolibri/klais-16-mdnt-16-segment-display/" target="_blank">Tindie</a> at the very reasonable price of US$15 a piece.</p><p>The biggest challenge was mechanical, particularly, finding a way to mount the 8 individual displays. Let me explain. I received the displays as ready-to-use (assembled, programmed and tested) products. I did not expected to dis-assemble them (not even partially) in order to mount them. The two mounting methods described in the documentation (using 15mm and 20mm profiles, respectively) ask for just that, basically to cut the original plastic rivets and, eventually, to replace them with (your own) M3 screws when fixing them to the rails. (I actually started going along with either described method until I realized I did not want to open them up). The easiest solution I found in the end was to use <a href="https://www.amazon.ca/gp/product/B000I1QH94/ref=ppx_yo_dt_b_asin_title_o01_s00" target="_blank">1/2" x 1/2" L-profile</a>, as shown below. For this, I only cut the middle rivets and used the holes to screw each individual display to the rails.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfGdLZKbdbuEgnFO6Wrmo2qN9_vAL3gEpq0fU879Firgt44AR2pOBLIOXUiNFlLQKrLDknPOt_TB1-u_7gq3Vkd8COMJFASGTf6lOMdc3__FlARlJq2AQgSUFDp0bpMWtDp8zcaUPRXOXH/s2048/klais1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfGdLZKbdbuEgnFO6Wrmo2qN9_vAL3gEpq0fU879Firgt44AR2pOBLIOXUiNFlLQKrLDknPOt_TB1-u_7gq3Vkd8COMJFASGTf6lOMdc3__FlARlJq2AQgSUFDp0bpMWtDp8zcaUPRXOXH/w400-h300/klais1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDfOplwbqrtchmWLyGS6OXhAOIDstuuTkGgfO84Rj6I26mKfZTngNgtkF6WDtaHQtYZSdfIQ7gRoa7nShQxPW5QvCT4T63ZxgYsXZguc8HVAVd1zrHMRwSUEqhLB4SZLK9-7qOBGIhHqmM/s2048/klais2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDfOplwbqrtchmWLyGS6OXhAOIDstuuTkGgfO84Rj6I26mKfZTngNgtkF6WDtaHQtYZSdfIQ7gRoa7nShQxPW5QvCT4T63ZxgYsXZguc8HVAVd1zrHMRwSUEqhLB4SZLK9-7qOBGIhHqmM/w400-h300/klais2.JPG" width="400" /></a></div><p>The <a href="http://timewitharduino.blogspot.com/2019/04/wifichron-support-for-16-segment-led.html" target="_blank">software support</a> consists in adding one class, DisplaySoftSerial.cpp, shown below.</p><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: #555555; font-family: Menlo, Monaco, Consolas, Courier New, monospace;">#include <Arduino.h>
#include <SoftwareSerial.h>
#include "DisplaySoftSerial.h"
SoftwareSerial ss(7, 2); // RX not used; TX=2;
//******************************************************************
//
void Display_t::setup()
{
ss.begin(19200);
}
//******************************************************************
// draw the 8 characters on the screen;
//
void Display_t::writeDisplay(char* displayBuffer)
{
char reverseBuffer[9] = {0};
for (byte i=0; i<9; i++)
{
reverseBuffer[i] = (displayBuffer[7-i]);
}
ss.write(reverseBuffer);
}
//*******************************************************************
// brightness level is number between 0 and 7, 0 being the brightest;
//
void Display_t::setBrightness(uint8_t brightness)
{
// cannot do;
}
//*******************************************************************
//
void Display_t::reset()
{
}
</span>
</pre><div><br /></div><div>The Klais-16 display's baud rate can be selected in the range 4800 to 115200, through solder jumpers. The default (no soldering) is 115200. I set it to 19200 because:</div><div><ul style="text-align: left;"><li>SoftwareSerial library cannot handle 115200</li><li>only one solder bridge is required</li></ul></div><div>As you can see from the code above, the brightness cannot be adjusted (or at least I am not aware). Maybe future versions will implement this feature.</div><div><br /></div><div>The <b><a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WiFiChron</a></b> with the 8 Klais-16 displays consumes an average of 700mA (at 5V). The brightness is not amazing, probably because some of the light is absorbed by the top translucent PCB.</div><div>I think it can make a great clock for interiors (schools, hallways etc.), visible from at least 10 meters away.</div><div><br /></div><div><br /></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-47054825084542252782021-02-19T18:29:00.011-05:002021-02-19T19:19:54.188-05:00Single digit clock - method and apparatus<p>I recently found, at the bottom of a drawer, my forgotten <a href="http://timewitharduino.blogspot.com/2014/05/single-digit-numitron-tube-clock.html" target="_blank">numitron single-tube clock</a>. It has a LiPo battery which still lights up the filaments, but no RTC to actually show time. It has a single button, which activates the display (numitron tube) when pressed. Indeed, some digits flash on, but inconsistently. And, as a clock, one would want to be able to also set the time, which is definitely not possible in this current version.</p><p>The required revision consists in:</p><p></p><ul style="text-align: left;"><li>adding RTC</li><li>adding a second button</li><li>updating the software (by adding the ability to set the time through buttons)</li></ul><p></p><p>The method I devised for setting up the time follows this state-machine diagram,</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU7mjmXTSrwbvHuM6QsUjh94On7NJ10BfUhtKNYVtTtAeWbHtxMdyoSinqt59XpG5B9MZenU0zGpEqOzUmzISIJ6qRLgZcEADHf-1cQDATjS21L-o-wqoRbuKmKP0eHOudKW12ZtczO4rC/s1303/state_diagram.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="600" data-original-width="1303" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU7mjmXTSrwbvHuM6QsUjh94On7NJ10BfUhtKNYVtTtAeWbHtxMdyoSinqt59XpG5B9MZenU0zGpEqOzUmzISIJ6qRLgZcEADHf-1cQDATjS21L-o-wqoRbuKmKP0eHOudKW12ZtczO4rC/w400-h184/state_diagram.JPG" width="400" /></a></div><p>where "Set time" state is part of this bigger picture:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvMbF873DHoWu_yUJSPeQwkeBYbD-knD6gZftpg7LN0LZltF2An2FIR1L56HaNLREkOHhEwPglZMf1GDyJepVkUm9A3K2T3z2z6CpfFv8a7LUDz52meSLF5SWowk2T_MhuzBtFWPMSGAfD/s821/single_diagram.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="689" data-original-width="821" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvMbF873DHoWu_yUJSPeQwkeBYbD-knD6gZftpg7LN0LZltF2An2FIR1L56HaNLREkOHhEwPglZMf1GDyJepVkUm9A3K2T3z2z6CpfFv8a7LUDz52meSLF5SWowk2T_MhuzBtFWPMSGAfD/w400-h336/single_diagram.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div>The single digit clock has 2 buttons: "Activate", which shows the time in a sequence of 3 or 4 digits, formatted as "Hh-Mm" or "h-Mm", and "Set", which starts the process of setting up the time. This is where most of the effort was put, since the actual displaying of time is really trivial.<br /><p>The whole source code file is proudly presented below (as answer to the lots of questions in the above mentioned <a href="http://timewitharduino.blogspot.com/2014/05/single-digit-numitron-tube-clock.html" target="_blank">old post</a>).<br /></p><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: #555555; font-family: Menlo, Monaco, Consolas, Courier New, monospace;">/*************************************************************************
* Sketch for direct driving 7-segment numitron IV-9
*
* Segments are defined as follows:
*
* A
* ---
* B | | C
* --- D
* E | | F
* ---
* G
*
* Decimal point/comma is segment H.
* Common pin is wired to Vcc (would be nice to wire it to D11/MOSI
* instead, which is also PWM (for brightness)).
* To light up a segment, just connect it to GND.
*
* To display a digit, ground these Arduino pins:
* 0: 6, 7, 8, 10, 11, 13
* 1: 7, 8
* 2: 6, 8, 10, 11, 12
* 3: 6, 7, 8, 11, 12
* 4: 7, 8, 12, 13
* 5: 6, 7, 11, 12, 13
* 6: 6, 7, 10, 11, 12, 13
* 7: 6, 7, 8
* 8: 6, 7, 8, 10, 11, 12, 13
* 9: 6, 7, 8, 11, 12, 13
*
*************************************************************************/
#include <Arduino.h>
#include <Wire.h>
#include "DS1307.h"
#define _DEBUG_
// arduino pins connected to tube terminals;
// chosen based on the natural positioning of the Numitron tube on Pro Mini board;
#define segA 6 // tube pin 5
#define segB 13 // tube pin 6
#define segC 8 // tube pin 3
#define segD 12 // tube pin 7
#define segE 10 // tube pin 9
#define segF 7 // tube pin 4
#define segG 11 // tube pin 8
#define segH 9 // tube pin 2
// button to initiate the setting up of the time;
#define PIN_BUTTON_SET_TIME 4 // D4
// button to activate the display or to increment the time digit;
#define PIN_BUTTON_ACTIVATE 17 // A3
byte segmentPin[8] = {segA, segB, segC, segD, segE, segF, segG};
byte digits[10][7] =
{
// A B C D E F G
{0, 0, 0, 1, 0, 0, 0}, // 0
{1, 1, 0, 1, 1, 0, 1}, // 1
{0, 1, 0, 0, 0, 1, 0}, // 2
{0, 1, 0, 0, 1, 0, 0}, // 3
{1, 0, 0, 0, 1, 0, 1}, // 4
{0, 0, 1, 0, 1, 0, 0}, // 5
{0, 0, 1, 0, 0, 0, 0}, // 6
{0, 1, 0, 1, 1, 0, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
byte state[4][7] =
{
// A B C D E F G
{1, 0, 0, 0, 0, 0, 1}, // H
{1, 0, 1, 0, 0, 0, 1}, // h
{0, 0, 0, 1, 0, 0, 1}, // M
{1, 1, 1, 0, 0, 0, 1}, // m
};
volatile boolean wasTimeEverSet = false;
volatile boolean showingTime = false;
volatile boolean settingTime = false;
byte crtIndex = 0; // 0..3, index in array timeDigits;
byte timeDigits[4] = {0, 1, 2, 3};
int hour = 0;
int minute = 0;
int second = 0;
byte crtValue = 0; // used when setting the time, one digit at a time (for HHMM);
short crtState = -1; // used when setting the time;
boolean newState = false;
void setup()
{
#ifdef _DEBUG_
Serial.begin(9600);
Serial.println("in setup");
#endif
// each of display's 7 segment is connected to an output;
for (byte i=0; i<7; i++)
{
pinMode(segmentPin[i], OUTPUT);
}
// buttons to activate tube and for setting up the time;
pinMode(PIN_BUTTON_ACTIVATE, INPUT_PULLUP);
pinMode(PIN_BUTTON_SET_TIME, INPUT_PULLUP);
blankDisplay();
}
void loop()
{
if (digitalRead(PIN_BUTTON_ACTIVATE) == LOW)
{
#ifdef _DEBUG_
Serial.print("settingTime=");
Serial.println(settingTime);
#endif
delay(200); // debouncing;
if (settingTime)
{
newState = false;
crtValue++;
if (crtValue > 9)
crtValue = 0;
displayValue(crtValue);
#ifdef _DEBUG_
Serial.print ("crtValue=");
Serial.println(crtValue);
#endif
}
else
{
getTimeFromRTC();
splitTime();
// show time as (h)h-mm;
showingTime = true;
}
}
if (digitalRead(PIN_BUTTON_SET_TIME) == LOW)
{
delay(200); // debouncing;
#ifdef _DEBUG_
Serial.print("crtState=");
Serial.println(crtState);
#endif
if (crtState == -1)
{
// user is initiating setting up the time;
settingTime = true;
}
if (settingTime)
{
newState = true;
crtState++;
}
#ifdef _DEBUG_
Serial.print("settingTime=");
Serial.println(settingTime);
#endif
}
if (showingTime)
{
#ifdef _DEBUG_
Serial.print ("show time, digit ");
Serial.println(crtIndex);
#endif
if (crtIndex == 0 && timeDigits[0] == 0)
{
// do not show the leading 0;
}
else
{
if (crtIndex == 2)
{
// show the dash between hours and minutes;
displayDash();
// hold it for a second;
delay(1000);
}
// make the digit flash (otherwise, if 2 consecutive digits are the same, you won't see a difference);
displayDigit(crtIndex);
// hold the digit for a second;
delay(1000);
}
crtIndex++;
if (crtIndex > 3)
{
showingTime = false; // time will show again when button is pressed;
crtIndex = 0;
blankDisplay();
}
}
if (settingTime)
{
if (newState)
{
newState = false;
// need to save the crtValue;
if (crtState > 0)
{
#ifdef _DEBUG_
Serial.print("set value ");
Serial.print(crtValue);
Serial.print(" at index ");
Serial.println(crtState-1);
#endif
timeDigits[crtState-1] = crtValue;
}
if (crtState > 3)
{
settingTime = false;
crtState = -1;
blankDisplay();
#ifdef _DEBUG_
Serial.print("saving time: ");
Serial.print(10 * timeDigits[0] + timeDigits[1]);
Serial.print(":");
Serial.println(10 * timeDigits[2] + timeDigits[3]);
Serial.print("settingTime=");
Serial.println(settingTime);
#endif
// time is set only after all 4 digits (HhMm) were input, that is, after state "m" is left;
setTime(10 * timeDigits[0] + timeDigits[1], 10 * timeDigits[2] + timeDigits[3], 0);
}
else
{
displayCrtState(); // one of the 4: H, h, M, m
// hold it for a bit;
delay(100);
// start setting the value from 0;
crtValue = 0;
}
}
}
}
void displayDigit(byte index)
{
blankDisplay();
delay(100);
byte digit = timeDigits[index];
// turn on the necessary segments of the digit;
for (byte i=0; i<7; i++)
{
digitalWrite(segmentPin[i], digits[digit][i]);
}
}
void displayValue(byte crtValue)
{
blankDisplay();
delay(100);
// turn on the necessary segments;
for (byte i=0; i<7; i++)
{
digitalWrite(segmentPin[i], digits[crtValue][i]);
}
}
void blankDisplay()
{
// turn off all 7 segments;
for (byte i=0; i<7; i++)
{
digitalWrite(segmentPin[i], 1);
}
}
void displayDash()
{
blankDisplay();
delay(100);
digitalWrite(segD, 0);
}
void displayCrtState()
{
#ifdef _DEBUG_
Serial.print ("crt state is ");
Serial.println(crtState);
#endif
blankDisplay();
delay(100);
// turn on the necessary segments of the state/letter;
for (byte i=0; i<7; i++)
{
digitalWrite(segmentPin[i], state[crtState][i]);
}
}
//**********************************************************************************
// Read the entire RTC buffer
//
void getTimeFromRTC()
{
int rtc[7];
RTC_DS1307.get(rtc, true);
// check to avoid glitches;
if (rtc[DS1307_MIN] < 60 && rtc[DS1307_HR] < 24 && rtc[DS1307_SEC] < 60)
{
second = rtc[DS1307_SEC];
minute = rtc[DS1307_MIN];
hour = rtc[DS1307_HR];
}
/*
// check to avoid glitches;
if (rtc[DS1307_YR] <= 2050 && rtc[DS1307_MTH] <= 12 && rtc[DS1307_DATE] <= 31)
{
day = rtc[DS1307_DATE];
month = rtc[DS1307_MTH];
year = rtc[DS1307_YR];
}
*/
// The RTC may have a dead battery or may have never been initialized
// If so, the RTC doesn't run until it is set.
// Here we check once to see if it is running and start it if not.
if (!wasTimeEverSet) {
wasTimeEverSet = true;
if (hour == 0 && minute == 0 && second == 0)
{
// set an arbitrary time to get the RTC going;
setTime(10,23,45);
}
}
#ifdef _DEBUG_
Serial.print("Time is ");
Serial.print(rtc[DS1307_HR]);
Serial.print(":");
Serial.print(rtc[DS1307_MIN]);
Serial.print(":");
Serial.println(rtc[DS1307_SEC]);
#endif
}
//**********************************************************************************
//
void setTime(int hh, int mm, int ss)
{
RTC_DS1307.stop();
RTC_DS1307.set(DS1307_SEC, ss);
RTC_DS1307.set(DS1307_MIN, mm);
RTC_DS1307.set(DS1307_HR, hh);
RTC_DS1307.start();
}
void splitTime()
{
timeDigits[0] = hour / 10;
timeDigits[1] = hour % 10;
timeDigits[2] = minute/10;
timeDigits[3] = minute%10;
}</span><span style="color: #333333; font-family: Consolas, monospace; font-size: 13px;">
</span></pre><div><br /></div><div>The single digit numitron clock is the simplest possible clock, in terms of the number of components included. The numitron tube is connected directly to the processor's outputs, the common electrode being wired to Vcc. I noticed that the 3.7V LiPo battery is not reliably capable to light up the filaments. USB's 5V gives the tube a stable functionality.</div><div><br /></div><div>Below are some photos.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8sECualvJmWfknNDq8Okcp2xqw774YbqfUVxKDboP8pQu25HKFpT2Z70Gl7eOqOgqjj-wDWh1h4lUpxA-mVRcXqJlLLqq9hhXXaRSnU9TLMXOtK7dgkAKmcGElwxThNHVT3QvYCcz0uja/s2048/numi1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8sECualvJmWfknNDq8Okcp2xqw774YbqfUVxKDboP8pQu25HKFpT2Z70Gl7eOqOgqjj-wDWh1h4lUpxA-mVRcXqJlLLqq9hhXXaRSnU9TLMXOtK7dgkAKmcGElwxThNHVT3QvYCcz0uja/w400-h300/numi1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRTzO6IR2fK-8E-Hc5xKGeGbwVrj7EMHyLG0F29uJCuz7rt_Xk1wlKldI5ScdHnSmIaBZy5xkNAk3vvZUZFwEl5JoCbH04Sem3w_Wjab1yENTK-0swNN0lbbMO4jO77J8GSMl8IqBZfgIP/s2048/numi2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRTzO6IR2fK-8E-Hc5xKGeGbwVrj7EMHyLG0F29uJCuz7rt_Xk1wlKldI5ScdHnSmIaBZy5xkNAk3vvZUZFwEl5JoCbH04Sem3w_Wjab1yENTK-0swNN0lbbMO4jO77J8GSMl8IqBZfgIP/w400-h300/numi2.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEges6lPm-RtG4Xx2LwQonTqwRFvYO57XcyZMsDTOYs__2GuKdhYbfNNvqi8o5AGh4KPc9UNBwguOHrR8eZIco8zIwcuZwHxTseWnnVssVxDQ4xb9qy3qFxgEzCPebFYjWPn49C_fbHKT14c/s2048/numi3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEges6lPm-RtG4Xx2LwQonTqwRFvYO57XcyZMsDTOYs__2GuKdhYbfNNvqi8o5AGh4KPc9UNBwguOHrR8eZIco8zIwcuZwHxTseWnnVssVxDQ4xb9qy3qFxgEzCPebFYjWPn49C_fbHKT14c/w400-h300/numi3.JPG" width="400" /></a></div><br /><div>I was actually able to design the improvised RTC "shield" for ProMini shown in the above photo. Ordered from oshpark and <a href="https://oshpark.com/shared_projects/g2qw7hZ1" target="_blank">shared here</a>:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYah9ZCNQGyICm8536Dt6OWpmgvmD1xt0_Zr6wx5CCcnY_qK2_m81K3VwFrlCExYusf7hmcs_ZkMl26CoAFeLOCPVAS2UpA-swyb_GKjT3wNxWv8FqYC8-2RnoxKQyZ57KmbMCgOc499j/s642/RTC.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="642" data-original-width="379" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYah9ZCNQGyICm8536Dt6OWpmgvmD1xt0_Zr6wx5CCcnY_qK2_m81K3VwFrlCExYusf7hmcs_ZkMl26CoAFeLOCPVAS2UpA-swyb_GKjT3wNxWv8FqYC8-2RnoxKQyZ57KmbMCgOc499j/w236-h400/RTC.png" width="236" /></a></div><br /><div>The "second" simplest single digit clock would be the one using a 7-segment LED display. It is the "second" simplest just because it requires 7 more current-limiting resistors. Otherwise, if the wiring (numitron tube and 7-segment display) is similar, the above code works with no changes (tried and proven).</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUaDl8WprS_-UzY8gBk9HLM67X7Xjbpmr2jVrju_e2fZSLwUNPTUVsN3oEY0_Fe1pyqBqZurs50_ndhhDsFHAdM5r9LnFKIQRZ1-5CaU_HPid0uLtlfKfm4hW_0D0rQVEtoEzo38shp10p/s2048/7seg1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUaDl8WprS_-UzY8gBk9HLM67X7Xjbpmr2jVrju_e2fZSLwUNPTUVsN3oEY0_Fe1pyqBqZurs50_ndhhDsFHAdM5r9LnFKIQRZ1-5CaU_HPid0uLtlfKfm4hW_0D0rQVEtoEzo38shp10p/w400-h300/7seg1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJa644mifkPHLYBL7NxzgOA2ovJSCsTb9DTEyy1Hbmwdsn_e4cP3KD3L5y8WaDw2u2xZlAcqmWgWnfia3KKXCM4HJH2jqE6MZnB8b0ypq6Ypd6DPQRC41z-Py33lwf3DktnjGpYa5Y67Et/s2048/7seg2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJa644mifkPHLYBL7NxzgOA2ovJSCsTb9DTEyy1Hbmwdsn_e4cP3KD3L5y8WaDw2u2xZlAcqmWgWnfia3KKXCM4HJH2jqE6MZnB8b0ypq6Ypd6DPQRC41z-Py33lwf3DktnjGpYa5Y67Et/w400-h300/7seg2.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilNtZ0_QFz5fnco3Mtlc8mBvOXTGiPZ2zQP9qi_Olz4iLGuE5GfoC4GKAiL8JgmumVi4LHmqbjVMg9HSXCWyneJtgGUXSDdj-WvWi1OoQ2lKGTwOVQNNXR1t69w43-t6MebMGs6KACGNA6/s2048/7seg3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilNtZ0_QFz5fnco3Mtlc8mBvOXTGiPZ2zQP9qi_Olz4iLGuE5GfoC4GKAiL8JgmumVi4LHmqbjVMg9HSXCWyneJtgGUXSDdj-WvWi1OoQ2lKGTwOVQNNXR1t69w43-t6MebMGs6KACGNA6/w400-h300/7seg3.JPG" width="400" /></a></div><br /><div>Shown above is another ProMini-based prototype of a single digit clock, without the RTC shield. I expect this single digit 7-segment clock to work with the LiPo battery shield (unlike the single numitron clock). Note that the display is common anode, with the anode wired to Vcc and each cathode connected to processor's outputs. The segment is lit when the output is grounded (set to digital 0), similar to the numitron's driving.</div><div><br /></div><div><br /></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com15tag:blogger.com,1999:blog-1523577297508817869.post-80728940788430091192021-02-07T10:23:00.007-05:002021-02-07T13:18:24.632-05:00Enclosure ideas for WiFiChron and other clocks<p>It turns out that most electronics, even prototypes, can be easily enclosed with Lego. And that means no screws, no glue, no fasteners, zero tools, just the bricks and some imagination.</p><p>This is the <a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" style="font-weight: bold;" target="_blank">HDSP clock</a> variant with 1" displays driven by HT16K33 (<a href="http://timewitharduino.blogspot.com/2019/04/wifichron-support-for-16-segment-led.html" target="_blank">introduced here</a>). The board was cut and filed (0.5mm on each side) to fit snug between the walls (<a href="http://timewitharduino.blogspot.com/2021/01/more-wifichron-variants.html" target="_blank">see this</a>).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn3mFRnJDc3BlXAqqSko0S5VqGukQRCb7ZHd9GcePtOO104-z2gfcF2MDOHWJZ2WOdZqRw3L9JRDMyulK2kY-xFpGvF19uMkt0XefcMaVygbPb3Br57W1ILWGnbbJGZyEJxL7e1CIWOBa5/s2048/hdsp_big1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn3mFRnJDc3BlXAqqSko0S5VqGukQRCb7ZHd9GcePtOO104-z2gfcF2MDOHWJZ2WOdZqRw3L9JRDMyulK2kY-xFpGvF19uMkt0XefcMaVygbPb3Br57W1ILWGnbbJGZyEJxL7e1CIWOBa5/w400-h300/hdsp_big1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd4Mib28KNBDbMrRvkRlJja6Gv-s0rjnk3SITJQH-Ls6RIgQkzAGYJKKr2p9bnWR48cNeYpJhtrSqASKN60wG0ur0o9yyqI7WUQVdoVntaf1CJZjG_zZIF9lpfvMxzNxZCtdI_5gQou1B-/s2048/hdsp_big2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd4Mib28KNBDbMrRvkRlJja6Gv-s0rjnk3SITJQH-Ls6RIgQkzAGYJKKr2p9bnWR48cNeYpJhtrSqASKN60wG0ur0o9yyqI7WUQVdoVntaf1CJZjG_zZIF9lpfvMxzNxZCtdI_5gQou1B-/w400-h300/hdsp_big2.JPG" width="400" /></a></div><p>Next is a <a href="http://timewitharduino.blogspot.com/2020/08/alternative-displays-for-hdsp-or.html" target="_blank"><b>HDSP clock</b> variant</a> with two <a href="https://www.adafruit.com/product/2157" target="_blank">Adafruit Quad Alphanumeric displays</a>.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV793JI4RFwNPfbXhV5mZMBl09wG6cjwVXDGjFHWNyW7KIOSOxJ7ZVXvXxI41oI3mA76OomhMIK8F028L66lwuHaofoAOwcuGkcl9BCXZMpRzuq8VK9zT8kEOlZSqKyxS7bRwfeIUi8yrj/s2048/hdsp_ada1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV793JI4RFwNPfbXhV5mZMBl09wG6cjwVXDGjFHWNyW7KIOSOxJ7ZVXvXxI41oI3mA76OomhMIK8F028L66lwuHaofoAOwcuGkcl9BCXZMpRzuq8VK9zT8kEOlZSqKyxS7bRwfeIUi8yrj/w400-h300/hdsp_ada1.JPG" width="400" /></a></div><div><br /></div><div>Similarly, the PCB was cut and filed a bit. The assembly fits solidly between the bricks (no movement when shaken). As in the previous build, the exposed PCB is kind-of-required to allow access to the two buttons (set hours, set minutes).</div><p>Both of the above can be mounted on a Lego wall (as found in schools) or they can desk-stand on their own.</p><p>Here is an example of a Lego-encapsulated <b><a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WifiChron</a></b>.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaH7UFjJ4MRFvpieGN66ufr9T4ZZ2CLhTzQM9JGoGQ-_JUjdo8Jizi5hNkJwf_jrQmrfHXGPj4u8dx2V5JkmoPgeo7JKJayei7XcQQqrefQCW8ejSMsEbX8kQKCqFMk652_S7xgaGd-h_c/s2048/wifichron_lego1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaH7UFjJ4MRFvpieGN66ufr9T4ZZ2CLhTzQM9JGoGQ-_JUjdo8Jizi5hNkJwf_jrQmrfHXGPj4u8dx2V5JkmoPgeo7JKJayei7XcQQqrefQCW8ejSMsEbX8kQKCqFMk652_S7xgaGd-h_c/w400-h300/wifichron_lego1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe6UusyN8UxbvnDB2SsY30RBkYkwOn9fafLUOmjGgyIRCblWPfn967gFb204iqhKJV9ARgVjmG_9NJKuO16XKzoLErECjn5L0dY1Nhu_O-YO0wGn3UU-d00lxI5LeXtk0uWFo-o4FNm_eG/s2048/wifichron_lego_back.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe6UusyN8UxbvnDB2SsY30RBkYkwOn9fafLUOmjGgyIRCblWPfn967gFb204iqhKJV9ARgVjmG_9NJKuO16XKzoLErECjn5L0dY1Nhu_O-YO0wGn3UU-d00lxI5LeXtk0uWFo-o4FNm_eG/w400-h300/wifichron_lego_back.JPG" width="400" /></a></div><p>The PCB was also filed about 0.5mm on each side to fit between the lateral brick walls. It did not have to be fastened in any other way. The ESP8266 module fits inside nicely. The 3 buttons and the USB mini B connector are all easily accessible from the back.</p><p>Below is the Lego version of the <a href="http://timewitharduino.blogspot.com/search?q=axiris" target="_blank">Axiris clock</a>.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8oT4th9tl3PpGIU6bjcCFOLWPgbx-DmHLVkMfIeN-rtkOXqAOmZpFIIW6oRwfm6Q-0P6eTpqAn13TcI0SDmb74li3MKZg2jlt6pkuwmKkGVDjZkM0hAcQ-Sq20EboTkdCtTEK3JBhEMTj/s2048/axiris_lego.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8oT4th9tl3PpGIU6bjcCFOLWPgbx-DmHLVkMfIeN-rtkOXqAOmZpFIIW6oRwfm6Q-0P6eTpqAn13TcI0SDmb74li3MKZg2jlt6pkuwmKkGVDjZkM0hAcQ-Sq20EboTkdCtTEK3JBhEMTj/w400-h300/axiris_lego.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh00SyelniHAgzJCVefLi7ILck-i5KZZX6djC6HnwBTAPirYa4-g9YywGVBQdypZYT1xWHbXwyYGXCSmo2xFJd3VwIYow6K95b1XEBATisLYnsB4jfXtJg04vLBn3GLMW5k1Frl0QWHpjj1/s2048/axiris_lego2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh00SyelniHAgzJCVefLi7ILck-i5KZZX6djC6HnwBTAPirYa4-g9YywGVBQdypZYT1xWHbXwyYGXCSmo2xFJd3VwIYow6K95b1XEBATisLYnsB4jfXtJg04vLBn3GLMW5k1Frl0QWHpjj1/w400-h300/axiris_lego2.JPG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Since it does not have any buttons, the time is set through Bluetooth (command "SET TIME=hh:mm", sent from Terminal app while BT paired).</div><div class="separator" style="clear: both; text-align: center;"><p style="text-align: left;">And finally, a couple of OLED clocks, both running the same software on similar hardware: <a href="http://timewitharduino.blogspot.com/2014/08/promini-clock-shield-with-oled-display.html" target="_blank">pro-mini + OLED shield</a> and <a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank"><b>wsduino</b></a> + <a href="http://timewitharduino.blogspot.com/2020/07/arduino-oled-display-shield.html" target="_blank">2.42" OLED shield</a>, respectively.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZgdhAW7B4vB0zCGHgZ1ip9r0splCIqCFtTT3PvJf-iCmy590FcVpxMO43mklPIyAhCLlAORl6OJumIw06YBE5NdGVx8os-5KW7mMiZpl63Oowzw62Ne6Z2Dk_q9BPXEgq4xCp-yd-ZmTK/s2048/oled_lego1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZgdhAW7B4vB0zCGHgZ1ip9r0splCIqCFtTT3PvJf-iCmy590FcVpxMO43mklPIyAhCLlAORl6OJumIw06YBE5NdGVx8os-5KW7mMiZpl63Oowzw62Ne6Z2Dk_q9BPXEgq4xCp-yd-ZmTK/w400-h300/oled_lego1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAfsMkYjJqBPvoVVRfJSXdCosMLVWMDczUCXOTRRrVJSYy92OYJ_u8eMfR6SLgtI04wKbG9rtfGMIYy6bqUaiGatBXJPRtWCk0pWiricFT796VPpXiMgl1v2a3AKqxaA54SARxHeilzmh9/s2048/oled_lego2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAfsMkYjJqBPvoVVRfJSXdCosMLVWMDczUCXOTRRrVJSYy92OYJ_u8eMfR6SLgtI04wKbG9rtfGMIYy6bqUaiGatBXJPRtWCk0pWiricFT796VPpXiMgl1v2a3AKqxaA54SARxHeilzmh9/w400-h300/oled_lego2.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIt_1czBEV86mhIkRi8QmAVxF-2ENpQcQymfkjjKg2Hi_HBwoFSBXPg3M02jImtnp8s4yIKnDtb-02N3kP5LLF2eSkPqO_hyphenhyphenOrCOuF-_ruPADAnd3NhXuWQwcaE9z7Ovxa_sZCAiqMivAu/s2048/oled_lego3.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIt_1czBEV86mhIkRi8QmAVxF-2ENpQcQymfkjjKg2Hi_HBwoFSBXPg3M02jImtnp8s4yIKnDtb-02N3kP5LLF2eSkPqO_hyphenhyphenOrCOuF-_ruPADAnd3NhXuWQwcaE9z7Ovxa_sZCAiqMivAu/w400-h300/oled_lego3.JPG" width="400" /></a></div><p style="text-align: left;">Note that this is the prototype version, using a LiPo battery with charger (similar to the one <a href="http://timewitharduino.blogspot.com/2014/04/micro-clock-with-7-segment-bubble.html" target="_blank">shown here</a>).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAbpAo1JuX6YQbKjguI5vqUBgouAhVCgIrzXpZ6m5O3JAQUkPjYMPbbUZotTs_1oVcBvwjNqrzo6eT4MttWvdSJ8I8yWfe3oW-Siq9eYl5hRGWlsJKVT_jPchHHJGjNEKxyq1QlnzeSuVh/s2048/oled_big1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAbpAo1JuX6YQbKjguI5vqUBgouAhVCgIrzXpZ6m5O3JAQUkPjYMPbbUZotTs_1oVcBvwjNqrzo6eT4MttWvdSJ8I8yWfe3oW-Siq9eYl5hRGWlsJKVT_jPchHHJGjNEKxyq1QlnzeSuVh/w400-h300/oled_big1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6B2dlV_yusHx_epcQCEkz5L7vJrpgYsQvQehykfX5t7mHkx3jBhGA-wpgmFK2piSvQvsSxCTheHLB8J8qgpaYJMb9HYtWHHQctHxYpD1p_EBAFORzItkZUwj_cb9E0VmWFvrC8BVjSSjo/s2048/oled_big2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6B2dlV_yusHx_epcQCEkz5L7vJrpgYsQvQehykfX5t7mHkx3jBhGA-wpgmFK2piSvQvsSxCTheHLB8J8qgpaYJMb9HYtWHHQctHxYpD1p_EBAFORzItkZUwj_cb9E0VmWFvrC8BVjSSjo/w400-h300/oled_big2.JPG" width="400" /></a></div><p style="text-align: left;">Again, all the above enclosures feel solid: nothing moves or rattles when upside down or even shaken. I did not try dropping them though :)</p></div>And lastly, the <b>WiFiChron</b> with Adafruit quad 0.56" displays from the <a href="http://timewitharduino.blogspot.com/2021/01/more-wifichron-variants.html" target="_blank">previous post</a>, sandwiched between scrap plexiglass plates:<div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUwoIv7bfjTd-LPeeNXdrfvvWmvnemljPf3GJPf_QFvx1eCelkJgZv37D2DvnxLtAKC-Hk9IosZPHCbsXf7S1wLXNE4hSTOZineJWBGfCs8PsxDtB-HbCqD-UKrQGMsFczX5lnoPOVmyQI/s2048/wifichron_ada.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUwoIv7bfjTd-LPeeNXdrfvvWmvnemljPf3GJPf_QFvx1eCelkJgZv37D2DvnxLtAKC-Hk9IosZPHCbsXf7S1wLXNE4hSTOZineJWBGfCs8PsxDtB-HbCqD-UKrQGMsFczX5lnoPOVmyQI/w400-h300/wifichron_ada.JPG" width="400" /></a></div><br /><div><br /><div><br /></div></div></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-77108768912377281012021-01-17T16:33:00.004-05:002021-02-07T11:06:39.888-05:00More WiFiChron variants<p>This post shows two <b><a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WiFiChron</a></b> mods, that look more like finished projects rather than <a href="http://timewitharduino.blogspot.com/2020/08/alternative-displays-for-hdsp-or.html" target="_blank">just experiments</a>.</p><p>First one uses the <b>WiFiChron</b> board connected on I2C to two <a href="https://www.adafruit.com/product/1911" target="_blank">Adafruit Quad Alphanumeric Displays</a> (I2C addresses 0x70 and 0x71). <a href="https://drive.google.com/file/d/1nf35UCTSP7IAQOyM9_TWRN2AlPoidIXO/view?usp=sharing" target="_blank">The WiFiChron software</a> has similar adaptation as the one for <a href="https://drive.google.com/file/d/1JCbSXiSvquGsu-cRAnj00A6wkj9H3P04/view?usp=sharing" target="_blank">HDSP clock</a> (see <a href="http://timewitharduino.blogspot.com/2020/08/alternative-displays-for-hdsp-or.html" target="_blank">this post</a> for details).</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOYOlpXMkfahXv_hHpVvLeOsAkughLQwbb4E2oQbwkxBTYlJTc4Zo_OK5S8ZECgcymp_g3r4DBxEOdfDf1KTXXFqM7ieG6tgc-nh_7oRHa1gxwdPVfGa3K7DtG20HNC-Ho3zqOxHp0jvA9/s2048/wifichronAda1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOYOlpXMkfahXv_hHpVvLeOsAkughLQwbb4E2oQbwkxBTYlJTc4Zo_OK5S8ZECgcymp_g3r4DBxEOdfDf1KTXXFqM7ieG6tgc-nh_7oRHa1gxwdPVfGa3K7DtG20HNC-Ho3zqOxHp0jvA9/w400-h300/wifichronAda1.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT0wQuDq4qOD6wjacx4ur4WQr7WbZUi4LLg1uO0LrlDuhFIY7EGKkBsyn5QnqIu_ath0VMHbxxyF_qxyWGwXY4COy9TOtBARX6X4BnQGntKt4B_bbS9xeN-0kVBRvLkxLoVFq9x8MohoD-/s2048/WifichronAda2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT0wQuDq4qOD6wjacx4ur4WQr7WbZUi4LLg1uO0LrlDuhFIY7EGKkBsyn5QnqIu_ath0VMHbxxyF_qxyWGwXY4COy9TOtBARX6X4BnQGntKt4B_bbS9xeN-0kVBRvLkxLoVFq9x8MohoD-/w400-h300/WifichronAda2.JPG" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBl-zsO0SYg5dNYiRZLa3K60Hy07ElIK9hCtdFEkogDGfJ-PCTmhuJBdYIj7yZqWxoUB-aBGY770rAN6keeKaYrn_AEQPluQjIxduQ9Ohyphenhyphenf4tiJft5vA2xcmBSyTca0dpZwDFHvj_vN7SU/s2048/wifichronAda3.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBl-zsO0SYg5dNYiRZLa3K60Hy07ElIK9hCtdFEkogDGfJ-PCTmhuJBdYIj7yZqWxoUB-aBGY770rAN6keeKaYrn_AEQPluQjIxduQ9Ohyphenhyphenf4tiJft5vA2xcmBSyTca0dpZwDFHvj_vN7SU/w400-h300/wifichronAda3.JPG" width="400" /></a></div><div><br /></div>Did I mention that two plexiglass plates are still waiting to be cut and screwed in the standoffs?<div><p>This (poor) video shows it in action.</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/12oleN9f4ak" width="320" youtube-src-id="12oleN9f4ak"></iframe></div><p>The interesting thing about the Chinese clones (of the Adafruit displays) I had in hand is that each module has one (2 digit) display red and the other orange. Initially I thought it's a manufacturing error, but after checking, it seems that this is intended (for reasons I do not understand).</p><p>The second one is an "HDSP clock" with a 8-character display with 16-segment LED modules, <a href="http://timewitharduino.blogspot.com/2019/04/wifichron-support-for-16-segment-led.html" target="_blank">introduced here</a>, cased in a LEGO enclosure.</p><p>After cutting the top of board off (since there is no HDSP-2534) and a little filing of all sides, the PCB fit perfectly between the LEGO bricks.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitUkB28up6Ks0tSNpvdnLQM80bEn4X7qjDRufVB_ifFNPeU2UhEJMkG8gmoz6WvPbP7062n3g3AcTc00YmG0GtkCh0esZHe1c_LAfLARURT4waCDK-30QgdRUe6qKow_dYId8nCroVPJQV/s2048/hdspLego1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitUkB28up6Ks0tSNpvdnLQM80bEn4X7qjDRufVB_ifFNPeU2UhEJMkG8gmoz6WvPbP7062n3g3AcTc00YmG0GtkCh0esZHe1c_LAfLARURT4waCDK-30QgdRUe6qKow_dYId8nCroVPJQV/s320/hdspLego1.JPG" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcBx21OBlIA8R1D_xrDE847qhctica7qOTdF7VAZdDTX3pbRathxSYoNx6tBurjAkhUGzNGJNRr0GmnE8xYZvDxOUZ-RDtAvHCNaG50mOfa-yeSZYD4WNE8iNBBkNEHyk2VKb6jekv4FfW/s2048/hdspLego2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcBx21OBlIA8R1D_xrDE847qhctica7qOTdF7VAZdDTX3pbRathxSYoNx6tBurjAkhUGzNGJNRr0GmnE8xYZvDxOUZ-RDtAvHCNaG50mOfa-yeSZYD4WNE8iNBBkNEHyk2VKb6jekv4FfW/s320/hdspLego2.JPG" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AICwuow8IUnMuMa2VhZhyH1ENnmwaVDJhZHDIZ3iODS2lK_y75MHNiKDHFPKfWtAx2jpoPHvMfdxzQu3Gyaqf2V6Je_MaoZ5YYg0kpGsVsDSp4ksTjv7CmSsIIb8YBTGv6wceQOb11J7/s2048/hdspCut.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3AICwuow8IUnMuMa2VhZhyH1ENnmwaVDJhZHDIZ3iODS2lK_y75MHNiKDHFPKfWtAx2jpoPHvMfdxzQu3Gyaqf2V6Je_MaoZ5YYg0kpGsVsDSp4ksTjv7CmSsIIb8YBTGv6wceQOb11J7/s320/hdspCut.JPG" width="320" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sTR2NKukwNp94sQwoumO2y6wVSCje9Nrxno3Xjxl5l9ZapG7BddIcVVf940SkmL52oxAxus7pzw9VlWPXCcr26wahKOlkRvCEEnpmZ2hpbKl9xVlJYuyGz2nv9jh0o3L1Hx-d8l_HXIn/s2048/hdspLego.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sTR2NKukwNp94sQwoumO2y6wVSCje9Nrxno3Xjxl5l9ZapG7BddIcVVf940SkmL52oxAxus7pzw9VlWPXCcr26wahKOlkRvCEEnpmZ2hpbKl9xVlJYuyGz2nv9jh0o3L1Hx-d8l_HXIn/s320/hdspLego.JPG" width="320" /></a></div><p>For this display, the line that has to be enabled (un-commented) in DAL.h is:</p><p><span style="background-color: white; color: #333333; font-family: Georgia, serif; font-size: 13px;">#define DISPLAY_HT16K33</span></p><p><br /></p></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com1tag:blogger.com,1999:blog-1523577297508817869.post-16777633105441836762020-08-14T20:53:00.010-04:002020-08-15T10:19:27.730-04:00Alternative displays for HDSP or WiFiChron clocksSo you would like to build your own <a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">HDSP clock</a> or <a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WiFiChron clock</a> but you find the HDSP-2534 display too small or too expensive. Why not just replace it with a bigger 8-character display, like the <a href="http://timewitharduino.blogspot.com/2019/04/wifichron-support-for-16-segment-led.html" target="_blank">1-inch 8 x 16-segment</a> or two cascaded <a href="https://www.adafruit.com/product/2160" target="_blank">Adafruit 0.54" 4 x 14-segment backpacks</a>? We have you covered, in <a href="https://drive.google.com/file/d/1JCbSXiSvquGsu-cRAnj00A6wkj9H3P04/view?usp=sharing" target="_blank">software</a>. Both these displays are now supported, as extension classes of the <a href="http://timewitharduino.blogspot.com/2018/08/display-abstraction-layer.html" target="_blank">DAL (Display Abstraction Layer</a>), together with the <a href="http://timewitharduino.blogspot.com/2020/07/arduino-oled-display-shield.html" target="_blank">128x64 I2C OLED</a> and the HT1632-based 32x8 LED matrix display (used to be from Sure Electronics). Support could be further extended to <a href="http://timewitharduino.blogspot.com/2014/04/the-simplest-lcd-arduino-clock.html" target="_blank">LCD displays</a> (think big font on 40x4), <a href="http://timewitharduino.blogspot.com/2015/07/experimenting-with-max6955.html" target="_blank">MAX6955</a> with 8 x 16 segment etc., basically anything that can show 8 alphanumeric characters (numbers only, like regular Nixie tubes, would not suffice).<div><br /><div>Below are some examples.</div><div><br /></div><div>Two Adafruit 4-character backpacks are connected on I2C, addresses 0x70 (default) and 0x71, handled by class DisplayAda14seg, which in turn uses the Adafruit_LEDBackpack library.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKQ5jsO62k9ifp1qr9NYNhgj3joRocoo8GX_WAGAiJ-BJzsdbaWAQeXDxs5IzLYyBOQ40YMZMR_nLMfjsNayXzUe-m6jVTuIKYED0i8-s67ZqbwMiKrVzvYIkcrPBT3CC5mLavSV1u2dHy/s2048/ada14seg.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKQ5jsO62k9ifp1qr9NYNhgj3joRocoo8GX_WAGAiJ-BJzsdbaWAQeXDxs5IzLYyBOQ40YMZMR_nLMfjsNayXzUe-m6jVTuIKYED0i8-s67ZqbwMiKrVzvYIkcrPBT3CC5mLavSV1u2dHy/w410-h307/ada14seg.JPG" width="410" /></a></div><div><br /></div><div>To enable this display, uncomment the line (in DAL.h, comment out the rest):</div><div><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="font-family: courier; font-size: small;"><span style="color: black; white-space: normal;">#define DISPLAY_ADA_14SEG /</span><span style="color: black; white-space: normal;">/ 2 x Adafruit 4x14seg displays;</span></span></pre></div><div><br /></div></div><div>Functionality for the 8x32 (or 16x32) LED matrix display is implemented in class DisplayHT1632, which is based on code recycled from <b><a href="http://timewitharduino.blogspot.com/2011/12/buy-complete-wise-clock-4-kit-includes.html" target="_blank">Wise Clock 4</a></b>. To enable this display, simply uncomment the line (in DAL.h, comment out the others):</div><div><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><code class="http" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: #555555; padding: 0px;"><span style="font-family: courier; font-size: small;">#define DISPLAY_HT1632<span style="color: black;"> <span> </span></span><span style="color: black; white-space: normal;">// Sure 8x32 LED matrix controlled by HT1632;</span></span></code></pre></div><div><br /></div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGs-tp58XXuswB3zmXv6QNkpezTDKoVcNu_9lFGDHGhgJDiNa1Omr7IdqJc-nlzf0Eh5Jp82EuRKhgN9G1N7vTeH2dA1tTJ5opPf5E_-lacXcMB6Yv0NBdwJVS28ZQqlKsnLedv5FwDE2g/s2048/ht1632_1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGs-tp58XXuswB3zmXv6QNkpezTDKoVcNu_9lFGDHGhgJDiNa1Omr7IdqJc-nlzf0Eh5Jp82EuRKhgN9G1N7vTeH2dA1tTJ5opPf5E_-lacXcMB6Yv0NBdwJVS28ZQqlKsnLedv5FwDE2g/w410-h307/ht1632_1.JPG" width="410" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirnqZddKpUe4MnoMHW495yoPyTJCKiOBqs8q7Bydn2AJSQpgwawJsE-YoXnIQIH_5WJhd9GNPfnNJYHV4veYOIZaW5mVaWBuroG2lE9k07wWGJ1m5IHjN6VhpyqRYY8Vnvjpp-bUkw9a5B/s2048/ht1632-2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirnqZddKpUe4MnoMHW495yoPyTJCKiOBqs8q7Bydn2AJSQpgwawJsE-YoXnIQIH_5WJhd9GNPfnNJYHV4veYOIZaW5mVaWBuroG2lE9k07wWGJ1m5IHjN6VhpyqRYY8Vnvjpp-bUkw9a5B/w410-h307/ht1632-2.JPG" width="410" /></a></div><div><br /><div>To accommodate the 8 characters on a 32-pixel line, fontTiny had to be used (each character is 4 pixels wide).</div><div><br /></div><div>Note the connections for the HT1632 display (in DisplayHT1632.cpp):</div><div><div>#define HT1632_DATA<span style="white-space: pre;"> </span>4<span style="white-space: pre;"> </span>// Data pin (pin 7 of display connector)</div><div>#define HT1632_CS<span style="white-space: pre;"> <span> <span> </span></span></span>3<span style="white-space: pre;"><span> <span> </span></span></span>// Chip Select (pin 1 of display connnector)</div><div>#define HT1632_WRCLK<span style="white-space: pre;"> </span>2<span style="white-space: pre;"> </span>// Write clock pin (pin 5 of display connector)</div><div>#define HT1632_CLK<span style="white-space: pre;"> </span>5<span style="white-space: pre;"> </span>// clock pin (pin 2 of display connector)</div></div><div><br /></div><div>Other possible definitions in DAL.h are:</div><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="font-size: small;"><span face="" style="color: #555555; font-family: menlo, monaco, consolas, "courier new", monospace;">//****************************************************************************************
// Define the display you wish to use here.
// Comment out the ones not used.
//#define DISPLAY_HDSP2534 // original HDSP-2534 display in HDSP clock;
//#define DISPLAY_HUB08 // TODO: 8x32 LED matrix display with cascading shift registers (?)
//#define DISPLAY_DL1414 // 2 x DL1414; tested June 23, 2018 (http://timewitharduino.blogspot.com/2018/06/wifichron-adapter-for-dl-1414-displays.html)
//#define DISPLAY_HT16K33 // my 8x16-segment driven by HK16K33, tested Jul 26, 2020;
//#define DISPLAY_OLED // I2C OLED; tested
#define DISPLAY_HT1632 // Sure 8x32 LED matrix controlled by HT1632; tested Aug 14, 2020;
//#define DISPLAY_MAX6955 // TODO: 8x16 segment driven by MAX6955
//#define DISPLAY_LCD1602 // TODO: classic LCD 16x2 (or better 40x4, with big font);
//#define DISPLAY_ADA_14SEG // 2 x Adafruit 4x14seg displays, wired on 0x70 and 0x71 I2C addresses; tested Jul 26, 2020;
// show time on the 60-pixel Adafruit Neopixel ring;
//#define _ADD_NEOPIXEL_
//****************************************************************************************</span><span face="" style="color: #333333; font-family: consolas, monospace;">
</span></span></pre></div><div><br /></div><div>And so on.</div><div><br /><div><br /></div></div></div></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com1tag:blogger.com,1999:blog-1523577297508817869.post-81192275308073853452020-07-31T21:11:00.004-04:002020-07-31T21:34:42.013-04:00HDSP clock fully through-hole revision 3<div>The only SMD component in the <b><a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">HDSP clock</a></b> was the USB miniB connector. To make the kit <a href="http://timewitharduino.blogspot.com/2020/04/review-of-some-electronics-kits-for-kids.html" target="_blank">completely beginner-friendly</a>, this connector was replaced by either of its two (right angle or straight) through hole equivalents. Other changes (from <a href="http://timewitharduino.blogspot.com/2020/04/hdsp-clock-revision-2.html" target="_blank">revision 2</a>) are:</div><div><ul style="text-align: left;"><li>fixed the two smaller pads for DS1307</li><li>some re-routing (which reduced the number of vias to 5)</li></ul></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvodgVs7Z2qRF_Ui258_8Uf2whJxSXYTNj8y-eXMg3JmkDNlYf_3uoTlJBPPjIWqM1jisXYPK4nra7KJ4kV9aPKfoQAFRIq1jSDabAPzzdJp9gXeU2qcvpnCbb1lFrbvr7f1qDmsyijYdD/s1232/top.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1232" data-original-width="970" height="512" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvodgVs7Z2qRF_Ui258_8Uf2whJxSXYTNj8y-eXMg3JmkDNlYf_3uoTlJBPPjIWqM1jisXYPK4nra7KJ4kV9aPKfoQAFRIq1jSDabAPzzdJp9gXeU2qcvpnCbb1lFrbvr7f1qDmsyijYdD/w403-h512/top.png" width="403" /></a></div><div><br /></div><div>The TH right angle USB connector is to be mounted on the top, as shown below.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49Pwt3LSXgBvyQiWNuC90WNn1y2ULVhtNvTsa0Xd33ROkfS35Jp0DsU7WyHG3hL_xfeJeMqjlp4IpeslAaSRNnRCgQu4EgI3JtEvpgdgBAkKf_JGpbXh7yHfu9aswahwl2xn7y0EcMYea/s2048/top.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49Pwt3LSXgBvyQiWNuC90WNn1y2ULVhtNvTsa0Xd33ROkfS35Jp0DsU7WyHG3hL_xfeJeMqjlp4IpeslAaSRNnRCgQu4EgI3JtEvpgdgBAkKf_JGpbXh7yHfu9aswahwl2xn7y0EcMYea/w410-h307/top.JPG" width="410" /></a></div><div><br /></div><div>The straight USB connector can only be mounted on the bottom side of the PCB, as shown below.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJGDcswYqEUd2FY7_jrUR9rrfo1TqBbN50sDAeKIr6aHJtlB_ZJK9DaqY8GRpTN7mYZmcFU8HKGCv7hDkZYjxRq6qzZNxo-qRB150tIBYm81BxbSRy7fsXrGPkU8PL5Uglp5dWAO2Ns1p/s2048/bottom.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeJGDcswYqEUd2FY7_jrUR9rrfo1TqBbN50sDAeKIr6aHJtlB_ZJK9DaqY8GRpTN7mYZmcFU8HKGCv7hDkZYjxRq6qzZNxo-qRB150tIBYm81BxbSRy7fsXrGPkU8PL5Uglp5dWAO2Ns1p/w410-h307/bottom.JPG" width="410" /></a></div><div><br /></div><div>This latter configuration allows the clock to be used without any additional enclosure, with just two standoffs holding it in a vertical position, like this:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0plYHqR5sYE-_1dVd4FWjImK-tI8wKXruqGA_7Zami2_ICB73U75KSg1BjIW1UGHT530jE-jpZjl2bGwCm5f5jdUdybclG2dlGXtR1MyA7wlULHR4L8NalhYsDT5c1kJyQnrXT3wKXa1b/s2048/standing.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0plYHqR5sYE-_1dVd4FWjImK-tI8wKXruqGA_7Zami2_ICB73U75KSg1BjIW1UGHT530jE-jpZjl2bGwCm5f5jdUdybclG2dlGXtR1MyA7wlULHR4L8NalhYsDT5c1kJyQnrXT3wKXa1b/w410-h307/standing.JPG" width="410" /></a></div><div><br /></div><div>Assembly instructions for the <b>HDSP clock</b> kit can be found <a href="http://timewitharduino.blogspot.com/2020/04/hdsp-clock-revision-2.html" target="_blank">here</a>, with the only difference being the last step, where the miniB USB connector is soldered.</div><div><br /></div><div><br /></div><div><br /></div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com3tag:blogger.com,1999:blog-1523577297508817869.post-6558292119613773472020-07-20T14:41:00.001-04:002020-07-20T15:20:02.018-04:00Arduino OLED display shieldThe 2.4" I2C OLED display I had sitting idle is too big for the "<a href="http://timewitharduino.blogspot.com/2014/08/promini-clock-shield-with-oled-display.html" target="_blank">Promini OLED Clock shield</a>", yet a perfect candidate for a regular Arduino shield. This is how it looks soldered on a prototype shield with two buttons on top, attached to <a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank">wsduino</a> running the <a href="http://timewitharduino.blogspot.com/2014/10/oled-clock-with-pacman-mode.html" target="_blank">OLED Clock sketch</a> (each of the 5 faces shown):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDJkGY8KxvYaPGU0DHMeMTf6AQIHY2ERnDd7q271FKVaunPmgaII_S9kYncemQL1-v7TtHvKwOHZS7_UgJHJnSABbDV_pIK_nv64EcSzSVRKgfI27kjOiNluta3_nHnccxM5KkcZCrsWCO/s1600/analog.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDJkGY8KxvYaPGU0DHMeMTf6AQIHY2ERnDd7q271FKVaunPmgaII_S9kYncemQL1-v7TtHvKwOHZS7_UgJHJnSABbDV_pIK_nv64EcSzSVRKgfI27kjOiNluta3_nHnccxM5KkcZCrsWCO/s320/analog.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglOOzPU80tMTDBpKPqU_xCYdRGSLiGokdkNa5GqX_AiJOVYyl6_uuXA7CIXxdPL_ozL2XEaYrW1Y_S-h6SHloiOpIS8WyvEMJFk8RzfMc74CMzkC5k6mpBGvz_f9BX_Y6ePBU2rAEBzCco/s1600/digital.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglOOzPU80tMTDBpKPqU_xCYdRGSLiGokdkNa5GqX_AiJOVYyl6_uuXA7CIXxdPL_ozL2XEaYrW1Y_S-h6SHloiOpIS8WyvEMJFk8RzfMc74CMzkC5k6mpBGvz_f9BX_Y6ePBU2rAEBzCco/s320/digital.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlilmVARYAsaAszeriYqGLkpqxo4Mp9-B4iHmezt4BhV63XJpuiyBKkM1N1Sh8BCty9UQSfL7ow7bnuEtn3MB0SQwZNdIu7_Y4Tyc25yBAKXehxAcezyvrd9-LLogaKcg3UOPOOxzCaFqG/s1600/pacman.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlilmVARYAsaAszeriYqGLkpqxo4Mp9-B4iHmezt4BhV63XJpuiyBKkM1N1Sh8BCty9UQSfL7ow7bnuEtn3MB0SQwZNdIu7_Y4Tyc25yBAKXehxAcezyvrd9-LLogaKcg3UOPOOxzCaFqG/s320/pacman.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbWylpyhY2uHHz8rkmw7qLNGo3SKIANKcXyGCxsAskU4Z4W4zCSgYO4pa5Keg2hrGf9MGkEZQxRNMTbUF42W5zz9pKrbMrg-zOWAOkQTUeKpoWkm1GurjifVmor3_XW3Zd6JqWT72HhWHz/s1600/pong.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbWylpyhY2uHHz8rkmw7qLNGo3SKIANKcXyGCxsAskU4Z4W4zCSgYO4pa5Keg2hrGf9MGkEZQxRNMTbUF42W5zz9pKrbMrg-zOWAOkQTUeKpoWkm1GurjifVmor3_XW3Zd6JqWT72HhWHz/s320/pong.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGk7aiDU_xaitXjm6wM8PIok8-h5IYGz6a2pt6XmMO3aLu-Nb70XNFW_8eYx6ivGCs9-4LqEDTrUmlfNOqbGOOaTN3P_0h7TPxT5b9inQZ2y52JTnTfxWSqVmiuHlNfbkU7Wd4t6BOceIb/s1600/qr.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGk7aiDU_xaitXjm6wM8PIok8-h5IYGz6a2pt6XmMO3aLu-Nb70XNFW_8eYx6ivGCs9-4LqEDTrUmlfNOqbGOOaTN3P_0h7TPxT5b9inQZ2y52JTnTfxWSqVmiuHlNfbkU7Wd4t6BOceIb/s320/qr.JPG" width="320" /></a></div>
<br />
The current sketch uses U8glib library and takes about 27k of ATmega328's 31k program memory. It could be enhanced by adding alarm (buzzer, relay etc.), since most of the digital pins are available (only D3 and D9 are used for the 2 buttons). Adding <a href="http://timewitharduino.blogspot.com/2015/03/wifichron-with-software-support-for.html" target="_blank">NTP time sync</a> (with an ESP8266 module) could also be done, but one/some of the faces will need to be dropped because of memory constraints. All these are exercises/homework for the inquiring minds :)<br />
<br />
Note: My nice beveled 2.42" OLED does not seem to be so ubiquitous.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CWy9LykQBhaClxeaFB-mEhCQeamVknOJH-PaK7-4_9QSgtQLYbbvbaqL3n4ov4sTXnv9sBnzlNJ5k1zVYzGqN1otwdIhC7JyJ1wIcaA3n6_EEWrn3uCMcuk4vO5wDhQReP98w78VxNij/s1600/oledBack.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4CWy9LykQBhaClxeaFB-mEhCQeamVknOJH-PaK7-4_9QSgtQLYbbvbaqL3n4ov4sTXnv9sBnzlNJ5k1zVYzGqN1otwdIhC7JyJ1wIcaA3n6_EEWrn3uCMcuk4vO5wDhQReP98w78VxNij/s320/oledBack.JPG" width="320" /></a></div>
<br />
A quick search on ebay for similar 2.42" OLED displays returns a different style, already mounted on a larger PCB:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFU2U78vuOiMFdAaOqD9AHhIbSCdC7bMEtooOhSuAqIMsi5pQxiZF61g5exGvYP9caX_t4iGIhAZNaBRtQ4JBxi6tEz3XrIl8QTo1qV9l2hyphenhyphenRSXQhqUfZuZKInTGJNyRtBvhekLfjZXYL3/s1600/242oled.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1000" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFU2U78vuOiMFdAaOqD9AHhIbSCdC7bMEtooOhSuAqIMsi5pQxiZF61g5exGvYP9caX_t4iGIhAZNaBRtQ4JBxi6tEz3XrIl8QTo1qV9l2hyphenhyphenRSXQhqUfZuZKInTGJNyRtBvhekLfjZXYL3/s320/242oled.jpg" width="320" /></a></div>
<br />
This may fit on the Arduino protoshield, but it may look bulky.<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com2tag:blogger.com,1999:blog-1523577297508817869.post-83686837941899458982020-06-19T13:48:00.005-04:002021-01-16T22:15:51.970-05:00HDSP clock with SCD5583 displayHere is another interesting "intelligent" LED matrix display, whose name actually makes some sense (unlike HDSP-2354, among many others): <b><a href="https://www.mouser.ca/datasheet/2/311/00034138_0-1196371.pdf" target="_blank">SCD5583A</a></b>. I reckon it means: "<b>S</b>erial <b>C</b>haracter <b>D</b>isplay with <b>5</b>x<b>5</b>x<b>8</b> dot matrix". 3 is the code for green (0 for red, 1 for yellow).<br />
This display is now obsolete (replaced by touch screens in avionics, the industry for which it was designed), but it is still available on ebay for a reasonable price (except for incredibly high shipping cost).<br />
<br />
Compared to other intelligent displays like the above-mentioned HDSP-2534 employed by the <b><a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">HDSP clock</a></b> (hence the bland unimaginative name), <b>SCD558X</b> does not have an internally-defined font and requires the user to provide one. This makes it a little more complicated to use, but also allows for more flexibility, making it truly international (non-English character set). Even more, each pixel can be addressed individually, like a graphical 5x40 LED matrix.<br />
The fact that is serial means fewer pins are required for interfacing (3 control pins in this case) and less driving circuitry (no need for the external shift register).<br />
<br />
The photo below shows the display connected to an Arduino and running the HDSP sketch adapted for <b>SCD5833</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0S882zBSzkOT5ALDLXmAqhlkuhizXFVq66XsjjjfjMGpOEBRkap3BR9y7YX0ga0t1CR-VtrizTEE_6okMIxRpLLZqVuxgRP4_1k-xFtc4tvDWJUfFjibrvM5-Ja7dts3X0XQrxIr6wypL/s1600/SCD5583.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0S882zBSzkOT5ALDLXmAqhlkuhizXFVq66XsjjjfjMGpOEBRkap3BR9y7YX0ga0t1CR-VtrizTEE_6okMIxRpLLZqVuxgRP4_1k-xFtc4tvDWJUfFjibrvM5-Ja7dts3X0XQrxIr6wypL/s400/SCD5583.JPG" width="400" /></a></div>
<br />
Practically, the HDSP sketch uses only one function to write to display, aptly called "writeDisplay()", that needs to be re-written. The support for <b>SCD5583</b> is provided by the class SCD5583, shown below (header + cpp files, compiled with Arduino IDE 1.8.13).<br />
<br /><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#ifndef _SCD5583_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#define _SCD5583_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#include </span><arduino .h="" style="color: black; font-family: "Times New Roman"; white-space: normal;"> "Arduino.h"</arduino><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">class SCD5583</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> public:</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> SCD5583(byte loadPin, byte dataPin, byte clkPin);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void clearMatrix();</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void setBrightness(byte b);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void writeLine(char text[9]);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> private:</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void _sendData(byte data);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void _getCharDefinition(byte* rows, char c);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> void _selectIndex(byte position);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> byte _loadPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> byte _dataPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> byte _clkPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">};</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#endif // _SCD5583_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /></pre></div><div>-----------------------------------------------</div><div><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#include "SCD5583.h"</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#include "font5x5.h"</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#define MAX_CHARS 8 // set to 10 for SCD5510X (10 digits) or to 4 for SCD554X (4 digits);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#define NUM_ROWS 5</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">SCD5583::SCD5583(byte loadPin, byte dataPin, byte clkPin)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> pinMode(loadPin, OUTPUT);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> pinMode(dataPin, OUTPUT);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> pinMode(clkPin, OUTPUT);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _loadPin = loadPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _dataPin = dataPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _clkPin = clkPin;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> clearMatrix();</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">// setBrightness(0);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::clearMatrix()</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _sendData(B11000000);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::setBrightness(byte b)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> if (b > 0 && b < 7)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _sendData(B11110000 + b);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::_selectIndex(byte position)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _sendData(B10100000 + position);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::_sendData(byte data)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> byte mask = 1;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_loadPin, LOW);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_clkPin, LOW);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> for (byte i = 0; i < 8; i++)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_dataPin, mask & data? HIGH : LOW);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_clkPin, HIGH);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">// delay(10);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_clkPin, LOW);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> mask = mask*2;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> digitalWrite(_loadPin, HIGH);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::_getCharDefinition(byte* rows, char c)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> for (byte i = 0; i < NUM_ROWS; i++)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> rows[i] = font5x5[((c- 0x20) * NUM_ROWS) + i];</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void SCD5583::writeLine(char* text)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> byte rows[NUM_ROWS];</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> for (int i = 0; i < MAX_CHARS; i++)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _selectIndex(i);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _getCharDefinition(rows, text[i]);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> for (int r = 0; r < NUM_ROWS; r++)</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> _sendData(rows[r]);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /></pre></div></div><div><br />
As mentioned previously, the font must be provided too (content of file "font5x5.h" shown below):<br />
<br /><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#ifndef _FONT5X5_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#define _FONT5X5_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">// ascii characters 0x41-0x7a (32-127);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">static unsigned char font5x5[] =</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x20, 0x40, 0x60, 0x80, // space</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x24, 0x44, 0x60, 0x84, // !</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0A, 0x2A, 0x40, 0x60, 0x80, // "</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0A, 0x3F, 0x4A, 0x7F, 0x8A, // #</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0F, 0x34, 0x4E, 0x65, 0x9E, // $</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x19, 0x3A, 0x44, 0x6B, 0x93, // %</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x08, 0x34, 0x4D, 0x72, 0x8D, // &</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x24, 0x40, 0x60, 0x80, // '</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x02, 0x24, 0x44, 0x64, 0x82, // (</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x08, 0x24, 0x44, 0x64, 0x88, // )</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x15, 0x2E, 0x5F, 0x6E, 0x95, // *</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x24, 0x5F, 0x64, 0x84, // +</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x20, 0x40, 0x64, 0x84, // ,</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x20, 0x4E, 0x60, 0x80, // -</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x20, 0x40, 0x60, 0x84, // .</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x01, 0x22, 0x44, 0x68, 0x90, // /</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x33, 0x55, 0x79, 0x8E, // 0</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x2C, 0x44, 0x64, 0x8E, // 1</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x21, 0x46, 0x68, 0x9F, // 2</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x21, 0x4E, 0x61, 0x9E, // 3</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x06, 0x2A, 0x5F, 0x62, 0x82, // 4</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x30, 0x5E, 0x61, 0x9E, // 5</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x06, 0x28, 0x5E, 0x71, 0x8E, // 6</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x22, 0x44, 0x68, 0x88, // 7</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x31, 0x4E, 0x71, 0x8E, // 8</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x31, 0x4F, 0x62, 0x8C, // 9</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x24, 0x40, 0x64, 0x80, // :</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x24, 0x40, 0x6C, 0x80, // ;</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x02, 0x24, 0x48, 0x64, 0x82, // <</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x3F, 0x40, 0x7F, 0x80, // =</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x08, 0x24, 0x42, 0x64, 0x88, // ></span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x31, 0x42, 0x64, 0x84, // ?</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x35, 0x57, 0x70, 0x8E, // @</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x2A, 0x5F, 0x71, 0x91, // A</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x29, 0x4E, 0x69, 0x9E, // B</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0F, 0x30, 0x50, 0x70, 0x8F, // C</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x29, 0x49, 0x69, 0x9E, // D</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x30, 0x5E, 0x70, 0x9F, // E</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x30, 0x5E, 0x70, 0x90, // F</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0F, 0x30, 0x53, 0x71, 0x8F, // G</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x31, 0x5F, 0x71, 0x91, // H</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x24, 0x44, 0x64, 0x8E, // I</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x01, 0x21, 0x41, 0x71, 0x8E, // J</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x13, 0x34, 0x58, 0x74, 0x93, // K</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x10, 0x30, 0x50, 0x70, 0x9F, // L</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x3B, 0x55, 0x71, 0x91, // M</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x39, 0x55, 0x73, 0x91, // N</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0E, 0x31, 0x51, 0x71, 0x8E, // O</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x31, 0x5E, 0x70, 0x90, // P</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0C, 0x32, 0x56, 0x72, 0x8D, // Q</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1E, 0x31, 0x5E, 0x74, 0x92, // R</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0F, 0x30, 0x4E, 0x61, 0x9E, // S</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x24, 0x44, 0x64, 0x84, // T</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x31, 0x51, 0x71, 0x8E, // U</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x31, 0x51, 0x6A, 0x84, // V</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x31, 0x55, 0x7B, 0x91, // W</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x2A, 0x44, 0x6A, 0x91, // X</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x11, 0x2A, 0x44, 0x64, 0x84, // Y</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1F, 0x22, 0x44, 0x68, 0x9F, // Z</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x07, 0x24, 0x44, 0x64, 0x87, // [</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x10, 0x28, 0x44, 0x62, 0x81, // \</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x1C, 0x24, 0x44, 0x64, 0x9C, // ]</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x2A, 0x51, 0x60, 0x80, // ^</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x20, 0x40, 0x60, 0x9F, // _</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0A, 0x2A, 0x40, 0x60, 0x80, // '</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2E, 0x52, 0x72, 0x8D, // a</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x10, 0x30, 0x5E, 0x71, 0x9E, // b</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2F, 0x50, 0x70, 0x8F, // c</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x01, 0x21, 0x4F, 0x71, 0x8F, // d</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2E, 0x5F, 0x70, 0x8E, // e</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x2A, 0x48, 0x7C, 0x88, // f</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2F, 0x50, 0x73, 0x8F, // g</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x10, 0x30, 0x56, 0x79, 0x91, // h</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x20, 0x4C, 0x64, 0x8E, // i</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x26, 0x42, 0x72, 0x8C, // j</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x10, 0x30, 0x56, 0x78, 0x96, // k</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0C, 0x24, 0x44, 0x64, 0x8E, // l</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2A, 0x55, 0x71, 0x91, // m</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x36, 0x59, 0x71, 0x91, // n</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2E, 0x51, 0x71, 0x8E, // o</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x3E, 0x51, 0x7E, 0x90, // p</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x2F, 0x51, 0x6F, 0x81, // q</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x33, 0x54, 0x78, 0x90, // r</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x23, 0x44, 0x62, 0x8C, // s</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x08, 0x3C, 0x48, 0x6A, 0x84, // t</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x32, 0x52, 0x72, 0x8D, // u</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x31, 0x51, 0x6A, 0x84, // v</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x31, 0x55, 0x7B, 0x91, // w</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x32, 0x4C, 0x6C, 0x92, // x</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x31, 0x4A, 0x64, 0x98, // y</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x3E, 0x44, 0x68, 0x9E, // z</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x06, 0x24, 0x48, 0x64, 0x86, // {</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x04, 0x24, 0x44, 0x64, 0x84, // |</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x0C, 0x24, 0x42, 0x64, 0x8C, // }</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> 0x00, 0x27, 0x5C, 0x60, 0x80, // ~</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">};</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">#endif // _FONT5X5_H_</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /></pre></div><br />
And finally, the changes in HDSP.ino are:<br />
<br />
1. add the following line at the top:<br /><div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;">#include "SCD5583.h"</span><br style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;" /><br style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;" /><span style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;">// SCD5583 pins: LOAD to D4, DATA to D5, SDCLK to D3;</span><br style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;" /><span style="background-color: white; font-family: Georgia, serif; font-size: 13px; white-space: normal;">SCD5583 scd(4,5,3);</span></pre></div>
<div>
2. replace the function writeDisplay() written for HDSP-2534, with the following:</div>
<div><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="color: black; font-family: "Times New Roman"; white-space: normal;">void writeDisplay()</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">{</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;"> scd.writeLine(displayBuffer);</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /><span style="color: black; font-family: "Times New Roman"; white-space: normal;">}</span><br style="color: black; font-family: "Times New Roman"; white-space: normal;" /></pre></div><div><br /></div>
<div>
Hardware-wise, some re-wiring is required on the HDSP board, starting with the removal of the 595 shift register. Then, D3, D4 and D5 (ATmega328 pins 5, 6, 11) must be connected respectively to SDCLK, LOAD and DATA pins (1, 2, 27) of the SCD5583 display.</div>
<div>
<br /></div>
<div>
And there you have it, a working <b>HDSP clock</b> with <b>SCD5583</b> display.</div>
<div>
<br /></div>
<div>
It is worth mentioning that the measured current drawn was between 10mA (lowest brightness) and 20mA (highest), and that it works similarly well when powered by 3V3.<br />
<br />
<br /></div>
</div>FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com5tag:blogger.com,1999:blog-1523577297508817869.post-68489693752123683522020-06-03T14:29:00.003-04:002021-01-16T22:25:01.222-05:00Sure 32x16 bicolor display (HT1632) driven by ESP32I was recently awoken from the Netflix-infused lethargy by an email from LukeW, who needed help with running the <b><a href="http://timewitharduino.blogspot.com/2016/03/a-recap-of-wise-clock-4-features.html" target="_blank">Wise Clock 4</a></b> on <a href="https://www.espressif.com/en/products/socs/esp32/overview" target="_blank">ESP32</a>. What a great idea that is!<br />
<br />
I had an epiphany when I realized what a powerful platform ESP32 is: unbelievable price (about $10 on amazon), serious hardware (memory, speed, WiFi, BT, BLE, multiple USARTs etc.), amazing software support (Arduino IDE, libraries, examples etc.).<br />
<br />
The latest Arduino IDE I had was version 1.6.7 (2017). Trying to install the support package for ESP32, I got a security error along the lines:<br />
<pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; font-family: Consolas, monospace; font-size: 13px; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><code class="http" style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: #555555; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: inherit; padding: 0px;"><span class="attribute" style="box-sizing: border-box;">javax.net.ssl.SSLHandshakeException</span>: <span class="string" style="box-sizing: border-box; color: #880000;">sun.security.validator.ValidatorException: PKIX path building failed:</span>
<span class="attribute" style="box-sizing: border-box;">sun.security.provider.certpath.SunCertPathBuilderException</span>: <span class="string" style="box-sizing: border-box; color: #880000;">unable to find valid certification path to requested target.</span></code></pre>
<br />
It works fine when downloading it through the browser (<a focus-row-control="" focus-type="url" href="https://dl.espressif.com/dl/esptool-2.6.1-windows.zip" id="url" style="background-color: white; display: inline; font-family: Roboto, "Segoe UI", Tahoma, sans-serif; font-size: 13px; margin-top: 6px; max-width: 100%; min-height: 0px; overflow: hidden; text-decoration-line: none; text-overflow: ellipsis; white-space: nowrap;" tabindex="0" target="_blank">https://dl.espressif.com/dl/esptool-2.6.1-windows.zip</a>), meaning that the server certificate that esspressif is using is not recognized by the JVM run by Arduino (folder "java" in the arduino directory). Identifying and adding the certificate to the JVM's keystore is time consuming, so I decided that it is just easier to upgrade to the latest Arduino IDE (currently 1.8.12), installed this time (a first for me) from Microsoft store. Even though the process is seamless, I have no idea <a href="https://forum.arduino.cc/index.php?topic=482871.0" target="_blank">where this software was placed</a> (definitely not where I wanted it). I also learned the new way (where have I been for so long?) to include and manage libraries (through the "Add .ZIP library" menu item).<br />
<br />
Using the <a href="https://www.espressif.com/en/products/devkits" target="_blank">ESP32 devkit</a> is as easy as the first Arduino (Duemilanove). The only thing one needs is a solderless breadboard, which I was lucky to have one around, since I don't remember ever using one before. An interesting fact is that the ESP32 board, inserted in the breadboard I have, leaves room for connecting wires only on one side.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhypRsIGr1MpLEmkFCLtsWn38oH5ldmzZwl-Wz869Q7xv53JNlws5642XnW2G_CRSrck5POr16jGYHEOWcV7DD7PnzfxDePgCxBxcYaMllgJfpJfGdgdLFE-Ox55p8UQ91NpGXAVyyyLTxB/s1600/brdbrd.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhypRsIGr1MpLEmkFCLtsWn38oH5ldmzZwl-Wz869Q7xv53JNlws5642XnW2G_CRSrck5POr16jGYHEOWcV7DD7PnzfxDePgCxBxcYaMllgJfpJfGdgdLFE-Ox55p8UQ91NpGXAVyyyLTxB/s400/brdbrd.JPG" width="400" /></a></div>
<br />
Next step was to connect the Sure 32x16 displays (two, daisy chained). I used these pins:<br /><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="font-family: courier; font-size: x-small;"><span style="color: black; white-space: normal;">// pins used to connect to ESP32;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">#define HT1632_DATA</span><span style="color: black;"> </span><span style="color: black; white-space: normal;"> 12</span><span style="color: black;"> </span><span style="color: black; white-space: normal;">// Data pin (pin 7 of display connector)</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">#define HT1632_CS</span><span style="color: black;"> </span><span style="color: black; white-space: normal;"> 14</span><span style="color: black;"> </span><span style="color: black; white-space: normal;">// Chip Select (pin 1 of display connector)</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">#define HT1632_WRCLK 13</span><span style="color: black;"> </span><span style="color: black; white-space: normal;">// Write clock pin (pin 5 of display connector)</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">#define HT1632_CLK</span><span style="color: black;"> </span><span style="color: black; white-space: normal;"> 27</span><span style="color: black;"> </span><span style="color: black; white-space: normal;">// clock pin (pin 2 of display connector)</span><br style="color: black; white-space: normal;" /></span></pre><div><br /></div>
<div>
With only the pin changes, the HT1632 files used in <b>Wise Clock 4</b> software work perfectly fine with ESP32. They can be <a href="https://drive.google.com/file/d/1DcchhDUE8y5M1wJRImuDnYe_Qk1DklKa/view?usp=sharing" target="_blank">found here</a>, called from a test sketch that uses 2 displays (#define NUM_DISPLAYS 2 in file MyHT1632.h).</div>
<div>
<br /></div>
<div>
SD card should be next, using the ESP32 support libraries.<br />
With ESP32, the sky is the limit: hopefully no more program memory limitations, no need for third party libraries (e.g. Sanguino), better support for sound, easier access to WiFi, support for extra peripherals etc. Wow!</div>
<div>
<br /></div>
It did not take long to test the SD card, using this wiring:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hxKLonWpS8DnfWCiuUFrb6BjmlZehPWbEkiA4CKNl6DKAHzyZFoMY9IMwBXdp2-EqwWD35oD93y0Mwn1CEafUdq9FUjKXlPAlC6mlP-myhx1OdnG2mC5ZqjJo7leOd9mEFggL11nDjAs/s1600/sdConnect.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="601" data-original-width="1071" height="223" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1hxKLonWpS8DnfWCiuUFrb6BjmlZehPWbEkiA4CKNl6DKAHzyZFoMY9IMwBXdp2-EqwWD35oD93y0Mwn1CEafUdq9FUjKXlPAlC6mlP-myhx1OdnG2mC5ZqjJo7leOd9mEFggL11nDjAs/s400/sdConnect.JPG" width="400" /></a></div>
which looks like this on the breadboard:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9YoQW5uuDIVjbUhcFQjQBa7bBb-YK2KTIdecg4xy7CS3R0Uygv4pISPdoHBThm1XhiaP0X8BS9ylo6D1FP7U3XpunlsdrgUnHqcdx6l00JgLWXGU2nOk7RZ2odxSOI0hk4yaCp_qp9VT/s1600/sdCard.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN9YoQW5uuDIVjbUhcFQjQBa7bBb-YK2KTIdecg4xy7CS3R0Uygv4pISPdoHBThm1XhiaP0X8BS9ylo6D1FP7U3XpunlsdrgUnHqcdx6l00JgLWXGU2nOk7RZ2odxSOI0hk4yaCp_qp9VT/s400/sdCard.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Running SD_Test.ino sketch example coming with ESP32 libraries on a Wise Clock 4 SD card, this is what serial monitor shows:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKaaDdLt9b5hNmZK85-yY46BUazw6XG3Jd8H6FErBolmebN59AxUq7tr5jyQbhTVb14K6KnoGMSEUmg3fXqMM3RlsO-8_OEYzImi7WI_HkSwA1RtIjL42TRlbCeWpcKOwFiLWYnDSAfVgT/s1600/sdCat.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1111" data-original-width="635" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKaaDdLt9b5hNmZK85-yY46BUazw6XG3Jd8H6FErBolmebN59AxUq7tr5jyQbhTVb14K6KnoGMSEUmg3fXqMM3RlsO-8_OEYzImi7WI_HkSwA1RtIjL42TRlbCeWpcKOwFiLWYnDSAfVgT/s640/sdCat.JPG" width="364" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Incredible, with no sweat at all, just out of the box. Wow again!<br />
<br />
Another small step: modified the SD_Test.ino to read the content of the file, line by line:<br /><pre class="programlisting" style="background-color: #fbfbfb; border-radius: 4px; border: 1px solid rgb(239, 239, 239); box-sizing: border-box; color: #333333; line-height: 1.42857; margin-bottom: 10px; margin-top: 10px; overflow-wrap: normal; overflow: auto; padding: 10px; word-break: break-all;"><span style="font-family: courier; font-size: x-small;"><span style="color: black; white-space: normal;">void setup()</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">{</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.begin(115200);</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> if(!SD.begin()){</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.println("Card Mount Failed");</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> return;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> }</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> uint8_t cardType = SD.cardType();</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> if(cardType == CARD_NONE){</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.println("No SD card attached");</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> return;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> }</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> openFile(SD, "/quot1.txt");</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">}</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">void openFile(fs::FS &fs, const char * path)</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">{</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.printf("Reading file: %s\n", path);</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> file = fs.open(path);</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> if(!file){</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.println("Failed to open file for reading");</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> return;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> }</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">}</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">char lineBuf[500] = {0};</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">void readLine()</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">{</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> int i = 0;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> lineBuf[0] = 0;</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> while (file.available())</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> {</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> char c = (char) file.read();</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> lineBuf[i++] = c;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> if (c == '\n') break;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> }</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> lineBuf[i] = 0;</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">}</span><br style="color: black; white-space: normal;" /><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">void loop()</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">{</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> readLine();</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> Serial.write(lineBuf);</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;"> delay(1000);</span><br style="color: black; white-space: normal;" /><span style="color: black; white-space: normal;">}</span><br style="color: black; white-space: normal;" /></span></pre><div><br /></div>And the output, in serial monitor:<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ51LGxL9-Dx-x1qEUBEJO0TMu97rAcQohmuFebHsDXW6Ed6dVXjVSYCEF_TKwp_WFF9TOsflkcDVWZ6ODsIsHCHiJwtX03pLOuvMb5GIppjykVLZ3ho2fJ85aGV8IRUHTBG-573gwKi77/s1600/fileContent.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="726" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJ51LGxL9-Dx-x1qEUBEJO0TMu97rAcQohmuFebHsDXW6Ed6dVXjVSYCEF_TKwp_WFF9TOsflkcDVWZ6ODsIsHCHiJwtX03pLOuvMb5GIppjykVLZ3ho2fJ85aGV8IRUHTBG-573gwKi77/w400-h206/fileContent.JPG" width="400" /></a></div>
<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-83995324597086361942020-05-09T15:53:00.000-04:002020-05-09T15:59:31.129-04:00wsduino revision 2Honestly, I think the hacking required to add buttons for hours and minutes to the <a href="http://timewitharduino.blogspot.com/2019/03/debugging-in-17-nixie-clock-aka-rothko.html" target="_blank">Rothko clock</a> is messy. But if you want an easy, quick and intuitive way to set the time, there is no alternative for buttons; remote control (IR, XBee, BT) would require extra devices, GPS or NTP would need settings. Since the <a href="http://timewitharduino.blogspot.com/2020/03/rothko-clock-nixie-shield-with-6-in-17.html" target="_blank">Nixie shield</a> board is already overcrowded, the logical place for the buttons would be on <b><a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank">wsduino</a></b>. And this is the main reason I had to redesign it.<br />
I opted for two right-angle tactile switches placed on the right side of the board, above and below the XBee module. These switches, connected to A0 and A1, are intended mostly for clock functionality, optional for other applications. They could also be replaced by wired external (panel-mounted, not on-board) buttons, when an enclosure is used.<br />
<br />
This is how the new <b>wsduino</b> board looks.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK_5h2Yvd1NDo9Tz70CwsZqI-K5rfISrjpYC8eoGvfdoNyQrQUPvODvCqSf-YQi5KkFkDqG3zMPSlOPT7T0StWm2hvwmwKqy_L-1WNZDcoshwBJ6SBM5bcuKtJptM1o8FgyL0kws3niXtu/s1600/wsduino2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1073" data-original-width="1468" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK_5h2Yvd1NDo9Tz70CwsZqI-K5rfISrjpYC8eoGvfdoNyQrQUPvODvCqSf-YQi5KkFkDqG3zMPSlOPT7T0StWm2hvwmwKqy_L-1WNZDcoshwBJ6SBM5bcuKtJptM1o8FgyL0kws3niXtu/s320/wsduino2.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrK_7TaU-w1EXD59eTZm2f-eEZB9-kSr_xN0nS0Nnu9C1JAOto3PpkVc6TAnXU2fQMhkLgVF-zYzqx-w0hSY_feprJEFI2Ws7o7L2iZXux41D2Q9wbhw2x0Typd2bPj3q4yEsL-JfBelZq/s1600/wsduino2_back.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1073" data-original-width="1468" height="233" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrK_7TaU-w1EXD59eTZm2f-eEZB9-kSr_xN0nS0Nnu9C1JAOto3PpkVc6TAnXU2fQMhkLgVF-zYzqx-w0hSY_feprJEFI2Ws7o7L2iZXux41D2Q9wbhw2x0Typd2bPj3q4yEsL-JfBelZq/s320/wsduino2_back.png" width="320" /></a></div>
<br />
Other improvements are:<br />
<ul>
<li>moved the 3V3 regulator for better heat dissipation (it was on the opposite side of 7805);</li>
<li>moved the electrolytic capacitors around, to allow for easier removal of the processor from the socket;</li>
<li>moved the 1Hz output to a pin between the banks of analog and power pins;</li>
<li>removed the SDA and SCL from the top bank of digital pins (they were redundant anyway, plus makes more room for the screw and nut);</li>
</ul>
<br />
The switch that fits <b>wsduino</b> is number 24 in the chart below (used by sellers on ebay):<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaUHiJf9U2dW5nzoqTExNwqMLjJo9P93dieQGDHvotH7V-kD-wmE-p7BucS8cKUw291jOVOvkEy70E-9kFy8i_6vTAquOhAs4BkagabUjYbDL17s9KKvz2Y3TeCPtbSf3AVKWAYxUczlYr/s1600/allbuttons.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1000" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaUHiJf9U2dW5nzoqTExNwqMLjJo9P93dieQGDHvotH7V-kD-wmE-p7BucS8cKUw291jOVOvkEy70E-9kFy8i_6vTAquOhAs4BkagabUjYbDL17s9KKvz2Y3TeCPtbSf3AVKWAYxUczlYr/s320/allbuttons.jpg" width="320" /></a></div>
<br />
To recap, <a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" style="font-weight: bold;" target="_blank">wsduino</a> is the arduino-compatible board with DS3231 RTC and XBee support. To build a clock, just add a display shield like the <a href="http://timewitharduino.blogspot.com/2015/08/introducing-6-character-alphanumeric.html" target="_blank">6-character LED display</a>, the <a href="http://timewitharduino.blogspot.com/2016/03/gps-synchronized-mondrian-clock.html" target="_blank">bicolor LED matrix shield</a> ("Mondrian clock") or the <a href="http://timewitharduino.blogspot.com/2020/03/rothko-clock-nixie-shield-with-6-in-17.html" target="_blank">6-tube Nixie shield</a> ("Rothko clock").<br />
<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-64491741001685481132020-04-14T18:36:00.003-04:002020-07-31T21:35:30.172-04:00Electronics kits for kids<a href="http://timewitharduino.blogspot.com/2020/03/teaching-electronics-to-kids.html" target="_blank">Continuing</a> on the topic of "<a href="http://timewitharduino.blogspot.com/2020/02/introduction-to-practical-electronics.html" target="_blank">Introduction to Practical Electronics</a>" course, today we are going to look at some of the electronics (soldering) kits available and suitable for the purpose.<br />
<br />
<b>What makes a good beginner electronics kit?</b><br />
<ul>
<li>easy through-hole soldering</li>
<li>includes a variety of components</li>
<li>reasonably priced (this is relative; what may be expensive for me may be cheap for you)</li>
<li>standalone and all-inclusive: does not require extra parts/components/modules sourced from third parties and does not require loading software;</li>
<li>interesting (as opposed to boring) functionality: flashes LEDs, displays something on a screen, makes some sounds etc.</li>
<li>relative simplicity of the circuit, so it can be easy to understand and debug if necessary</li>
<li>aesthetics of the board (shape, colour, component placement etc.)</li>
<li>preferably open source</li>
<li>powered by low voltage (battery, USB, power adapter)</li>
<li>digital electronics rather than analog (easier to debug, if necessary)</li>
<li>practical utility: use it for a utilitarian purpose rather than forget about it once built</li>
<li>expandability: can be either integrated as part of a bigger project, or its capabilities and functionality can be extended by adding modules or parts</li>
<li>provides extra learning (besides soldering) by displaying information: wave forms, frequencies, binary/hex number representation, musical notes, proverbs etc.</li>
<li>satisfaction guaranteed once assembled and working :)</li>
</ul>
Here is a list, in no particular order, of beginner kits I found to match some of the above criteria.<br />
<br />
1. <a href="https://www.amazon.ca/Elenco-Two-IC-Radio-Kit/dp/B0041O4MFK/ref=sr_1_2?keywords=Elenco+AM+Radio+kit&qid=1586122250&sr=8-2" target="_blank">Elenco AM Radio kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigmggtKvwS18gZHrx_qJ4fPGdV0ZY3UI6Cq9B4WIvJKWZQaLWBKRz0En4A9W1P-2K-DbaMV1kMXRlXjSvKazoFo8FUIliozMvyRhij_sZNov0aL_mOa6C3aJf-oP7gbDDBX59DJ_00pvoR/s1600/elenco-radio.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="315" data-original-width="499" height="202" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigmggtKvwS18gZHrx_qJ4fPGdV0ZY3UI6Cq9B4WIvJKWZQaLWBKRz0En4A9W1P-2K-DbaMV1kMXRlXjSvKazoFo8FUIliozMvyRhij_sZNov0aL_mOa6C3aJf-oP7gbDDBX59DJ_00pvoR/s320/elenco-radio.JPG" width="320" /></a></div>
<br />
2. Chinese Radio kits: <a href="https://www.amazon.ca/Artshu-Radio-CF210SP-Electronic-Assemble/dp/B075FR788C/ref=sr_1_4?keywords=Radio+kit&qid=1586122298&sr=8-4" target="_blank">A</a>, <a href="https://www.amazon.ca/Radio-DIY-Electronic-Learning-Suite/dp/B01M046II3/ref=sr_1_15?keywords=Radio+kit&qid=1586122365&sr=8-15" target="_blank">B</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeiHUeJHk-EyouqTr0eRAoy9jmx-jDbNBOxd776N_b077nxjjrY3yBrSA16XAtjzxeFRvX2uysUZj8oI6JKZVrlKi5Z6XJpSXUJLrTC-wxfcrRv7XB5-EU1tiJWmJLbD6jVdVAwYVWI2G7/s1600/chinese-radio-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="400" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeiHUeJHk-EyouqTr0eRAoy9jmx-jDbNBOxd776N_b077nxjjrY3yBrSA16XAtjzxeFRvX2uysUZj8oI6JKZVrlKi5Z6XJpSXUJLrTC-wxfcrRv7XB5-EU1tiJWmJLbD6jVdVAwYVWI2G7/s320/chinese-radio-1.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirEnQMEyOFlY9w-H3IuAuEoZ5r4f197bHkjL4HGPTCPotjZEPSnkzP6OxkbrE1N0RTmr6xU9Uz9Tjj2LYTX-F6e3SucS5-FztxTEPf88gXAmfwzfAqG3FuMbTgg4ERFgn9RqbwVGZNw_N8/s1600/chinese-radio-2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="369" data-original-width="489" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirEnQMEyOFlY9w-H3IuAuEoZ5r4f197bHkjL4HGPTCPotjZEPSnkzP6OxkbrE1N0RTmr6xU9Uz9Tjj2LYTX-F6e3SucS5-FztxTEPf88gXAmfwzfAqG3FuMbTgg4ERFgn9RqbwVGZNw_N8/s320/chinese-radio-2.JPG" width="320" /></a></div>
<br />
3. <a href="https://www.amazon.ca/Gikfun-Electronic-Soldering-Practice-AT89C2051/dp/B07PRSFJ4B/ref=sr_1_5?keywords=6+digit+led+clock+kit&qid=1586123135&sr=8-5" target="_blank">6-digit LED Clock kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB2F_yu8apdHqE6LatReQxz-SNPU-At94UYWDb6OU2lZHl1joZAEGFMMfu_Au3pxTzxLGaSPKVRl1w6GU5y4zpd7Utd3vmuzt-qlaQn3ICxGJ6lMoMrj8hiKH-J37BuFRE1OLGa7OF1wQ3/s1600/6-digit-clock.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="305" data-original-width="594" height="205" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB2F_yu8apdHqE6LatReQxz-SNPU-At94UYWDb6OU2lZHl1joZAEGFMMfu_Au3pxTzxLGaSPKVRl1w6GU5y4zpd7Utd3vmuzt-qlaQn3ICxGJ6lMoMrj8hiKH-J37BuFRE1OLGa7OF1wQ3/s400/6-digit-clock.JPG" width="400" /></a></div>
<br />
4. <a href="https://www.amazon.ca/KeeYees-Soldering-Practice-Learning-Electronics/dp/B07WHYM7Q1/ref=sr_1_21?keywords=4+digit+led+clock+kit&qid=1586123238&sr=8-21" target="_blank">4-digit LED Alarm Clock kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ksEp1iVGLz29QitPAZc6bPjrh6GlGFsYosWMdUIPr0AUqVfwChDfaa4AtgERB7HDoLwTeclJzVoC_K8eQ9njybV9aP2MBKXEd9VSnb6-LOtvNooWw4-kWHJY4DbPnOtyy7Cl4OU9_rRW/s1600/4-digit-alarm-clock.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1200" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1ksEp1iVGLz29QitPAZc6bPjrh6GlGFsYosWMdUIPr0AUqVfwChDfaa4AtgERB7HDoLwTeclJzVoC_K8eQ9njybV9aP2MBKXEd9VSnb6-LOtvNooWw4-kWHJY4DbPnOtyy7Cl4OU9_rRW/s320/4-digit-alarm-clock.jpg" width="320" /></a></div>
<br />
5. <a href="https://www.amazon.ca/KKmoon-4-Digit-Digital-Temperature-Transparent/dp/B07KLPYNL6/ref=sr_1_8?keywords=6+digit+led+clock+kit&qid=1586123165&sr=8-8" target="_blank">4-digit LED Talking Clock kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFPmymbiD7mbjVi1rvLT7egP1wqLhG8JrFnBdMfLFjINTggu3gCzGNw42XpM8Uk2jtCdFifmMm4Ep9CaAFTLl6JMmv4_u4GjdKgVPOCKAXYBgXadWvEsxbPOrikewtIgWXlmeZo6WMWOON/s1600/4-digit-talking-clock-2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="980" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFPmymbiD7mbjVi1rvLT7egP1wqLhG8JrFnBdMfLFjINTggu3gCzGNw42XpM8Uk2jtCdFifmMm4Ep9CaAFTLl6JMmv4_u4GjdKgVPOCKAXYBgXadWvEsxbPOrikewtIgWXlmeZo6WMWOON/s320/4-digit-talking-clock-2.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWbdI93zRyqYqYZE9u1V_5jNhwSuCH8I6jCIeUn4qD2kYq2haQsyDI1UZHBIJxxNcY46kYvpxcfbXEL3EeKyQygjWyknwxk_sax2ZN9hQmKy082d4JyK7XTTBI91LLAbyZvV6kLDkZd8Jm/s1600/4-digit-talking-clock.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="431" data-original-width="612" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWbdI93zRyqYqYZE9u1V_5jNhwSuCH8I6jCIeUn4qD2kYq2haQsyDI1UZHBIJxxNcY46kYvpxcfbXEL3EeKyQygjWyknwxk_sax2ZN9hQmKy082d4JyK7XTTBI91LLAbyZvV6kLDkZd8Jm/s320/4-digit-talking-clock.JPG" width="320" /></a></div>
<br />
6. <a href="https://www.amazon.ca/Elenco-Practical-Soldering-Project-Kit/dp/B0002LUAL6/ref=sxbs_sxwds-stvp?cv_ct_cx=4+digit+led+clock+kit&keywords=4+digit+led+clock+kit&pd_rd_i=B0002LUAL6&pd_rd_r=0ef7bff2-e6ff-4294-9aa5-7420b23b1c03&pd_rd_w=uOzBC&pd_rd_wg=nOJnQ&pf_rd_p=c1ccdf22-71be-4217-ab77-7e2e2e0fa774&pf_rd_r=XPN7ZE6DRJ1QSBGS8FRN&psc=1&qid=1586123238&sr=1-2-dd5817a1-1ba7-46c2-8996-f96e7b0f409c" target="_blank">Elenco two-tone European Siren kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1MMDYblNg8eQnZZqhUtR6NblrJVDQr6-ARQO1UJI0Q7hQHqHuu_dfp8ON-rCMQ_kTGzdeGRubTNUCcnaHz0uZVNPZPg9ebXvAv4kUPQzkt4mAcRse2gf6WyIRQFsvFDHniqqY4P8CeY8/s1600/elenco-siren.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1500" data-original-width="1483" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid1MMDYblNg8eQnZZqhUtR6NblrJVDQr6-ARQO1UJI0Q7hQHqHuu_dfp8ON-rCMQ_kTGzdeGRubTNUCcnaHz0uZVNPZPg9ebXvAv4kUPQzkt4mAcRse2gf6WyIRQFsvFDHniqqY4P8CeY8/s320/elenco-siren.jpg" width="316" /></a></div>
<br />
7. <a href="https://www.amazon.ca/Electronic-Computer-Machine-RacingDot-Electronica/dp/B07VYJ5D2P/ref=sr_1_1?keywords=Retro+Classic+Game+%28Tetris%2C+Snake+soldering+kit&qid=1586123503&sr=8-1" target="_blank">Retro Classic Game (Tetris, Snake etc.) kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ-6DpsVY53tPgEUAJz42CI3bThoHftOw2cxiiArbNqkfuO2-ct4N3anVO-CRE7m_z829YFWSm71CwpX8sP4Cg17_BtPTIMyrE513ObupDqyb1i96s9GfuiuhPAxp5UYF9yTTHChIdAYhv/s1600/game.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="575" data-original-width="438" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ-6DpsVY53tPgEUAJz42CI3bThoHftOw2cxiiArbNqkfuO2-ct4N3anVO-CRE7m_z829YFWSm71CwpX8sP4Cg17_BtPTIMyrE513ObupDqyb1i96s9GfuiuhPAxp5UYF9yTTHChIdAYhv/s320/game.JPG" width="243" /></a></div>
<br />
8. <a href="https://www.amazon.ca/Hidream%C2%AE3D-Christmas-Yellow-Circuit-Electronic/dp/B074FRWYFL/ref=sr_1_8?keywords=3d+christmas+tree+flashing+led+kit&qid=1586123540&sr=8-8" target="_blank">3D Christmas Tree Flashing LEDs kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAAU2IpuE7qyE82fEukwMVF7tmC4pqjOj2CAs_Y_65Qkoeiq09lLwKqElRhyphenhyphenYnGDe9S_67u1rTj4UKm5e6qswCcmxC5kaPnAlTGprzD_-bA1VIy-JI241rdyhoSsNOQND-gA0-kVUmwJbu/s1600/christmas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1500" data-original-width="1500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAAU2IpuE7qyE82fEukwMVF7tmC4pqjOj2CAs_Y_65Qkoeiq09lLwKqElRhyphenhyphenYnGDe9S_67u1rTj4UKm5e6qswCcmxC5kaPnAlTGprzD_-bA1VIy-JI241rdyhoSsNOQND-gA0-kVUmwJbu/s320/christmas.jpg" width="320" /></a></div>
<br />
9. <a href="https://www.amazon.ca/Electronic-Soldering-Intermediate-Electronix-Express/dp/B072MHSW57/ref=sr_1_1?keywords=Electronic+Piano+soldering+kit&qid=1586123625&sr=8-1" target="_blank">Electronic Piano kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk70c_3GFUVvwULy2lg-8Ski1jDUZgzSqDgCz32WDJ7V5unXSGnqOh31fprOFBCoGeCQvnI32QxcQQaHO6KR5bkSbchjNH1Une5iqSEQQMl2qpcihdf_aP6HpysCvhoIloFdtRC0sJXb5H/s1600/piano.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1458" data-original-width="1500" height="311" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhk70c_3GFUVvwULy2lg-8Ski1jDUZgzSqDgCz32WDJ7V5unXSGnqOh31fprOFBCoGeCQvnI32QxcQQaHO6KR5bkSbchjNH1Une5iqSEQQMl2qpcihdf_aP6HpysCvhoIloFdtRC0sJXb5H/s320/piano.jpg" width="320" /></a></div>
<br />
10. <a href="https://www.amazon.ca/gp/product/B07MRJKHCQ/ref=ox_sc_saved_title_6?smid=AP3WACSRLZS7T&psc=1" target="_blank">Electronic 16 Sound Music Box kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLWdRNfS_TfXOtSEf8uiQAd8tIthS26YDBlZjwpv53LU3K5SvwQqIW3QuOJf87g2Th88ShYSLf9HGfcocNLbzAVsGb-ryuTDQGz_opb3JSZ2Z2kUUpHsfYLV-F9mtIp69cjlGyqlPJ_P5/s1600/16sound.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSLWdRNfS_TfXOtSEf8uiQAd8tIthS26YDBlZjwpv53LU3K5SvwQqIW3QuOJf87g2Th88ShYSLf9HGfcocNLbzAVsGb-ryuTDQGz_opb3JSZ2Z2kUUpHsfYLV-F9mtIp69cjlGyqlPJ_P5/s320/16sound.jpg" width="320" /></a></div>
<br />
11. <a href="https://www.amazon.ca/Electronics-Salon-Adjustable-Transistor-Multivibrator-Flashing/dp/B06WLLRTFM/ref=sr_1_fkmr0_1?keywords=Astable+Multi-vibrator+Circuit+Learn+kit&qid=1586123719&sr=8-1-fkmr0" target="_blank">Astable Multi-vibrator Circuit Learn kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0w_5Rr-w-p7rrtXJ8YXjNyXyDod0hGwiUtyArBAqJVJklHklqNTWsIZKYrErxbuMWViXRAZ5CCIBg8MpV2uVMI96LDx-1PBR6YVPq1ol7VPdP4SOWAwU6WvvUZ3F3VpXAe3UxI2sRic4l/s1600/astabil.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0w_5Rr-w-p7rrtXJ8YXjNyXyDod0hGwiUtyArBAqJVJklHklqNTWsIZKYrErxbuMWViXRAZ5CCIBg8MpV2uVMI96LDx-1PBR6YVPq1ol7VPdP4SOWAwU6WvvUZ3F3VpXAe3UxI2sRic4l/s320/astabil.jpg" width="320" /></a></div>
<br />
12. <a href="https://www.amazon.ca/Gikfun-Advanced-Electronic-Transparent-Amplifier/dp/B07GRYNV6F/ref=sr_1_1?keywords=Mini+Speaker+Box+Amplifier+kit&qid=1586123746&sr=8-1" target="_blank">Mini Speaker Box Amplifier kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHhGgnbMR2qMxxQx2hGFne5ZOxRIApgzSBH8b2Gr6mgZ0GMbz2mgJ0FV8mFvqRB8QMJzquxfLxagEad6Ttv-xGMkpEz1FbB4UZ6h5hQFcbCYb0Uf8F8E3zQlcCvofMvpv5leHWrbER9Nl/s1600/minispkeaker.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1500" data-original-width="1500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZHhGgnbMR2qMxxQx2hGFne5ZOxRIApgzSBH8b2Gr6mgZ0GMbz2mgJ0FV8mFvqRB8QMJzquxfLxagEad6Ttv-xGMkpEz1FbB4UZ6h5hQFcbCYb0Uf8F8E3zQlcCvofMvpv5leHWrbER9Nl/s320/minispkeaker.jpg" width="320" /></a></div>
<br />
13. <a href="https://www.amazon.ca/Airband-Receiver-Aviation-Sensitivity-118-136MHz/dp/B07F1ML258/ref=sr_1_1_sspa?keywords=Aviation+Band+Radio+Receiver+kit&qid=1586123765&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzT1c3MjZSRjM2M0s2JmVuY3J5cHRlZElkPUEwNTQ4Mjk0M1ZPQ0M2WVc4MlA0NSZlbmNyeXB0ZWRBZElkPUEwNzE4MTkxMTk2NUdPRllOMzE1ViZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=" target="_blank">Aviation Band Radio Receiver kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GPRgmxT3P8ISKsxJMVO19F_1_-jQsbDYVrcxpzAUIsoTGHuxorhggL0aJ4lUDHIV_w-MBmXaq28VsnPv9zUrxPFMMarJx-sehZhSM42zaOpGPONUbP4_cva2X63WyWPwWHqzy1QRvfvb/s1600/aviationradio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1001" data-original-width="1001" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GPRgmxT3P8ISKsxJMVO19F_1_-jQsbDYVrcxpzAUIsoTGHuxorhggL0aJ4lUDHIV_w-MBmXaq28VsnPv9zUrxPFMMarJx-sehZhSM42zaOpGPONUbP4_cva2X63WyWPwWHqzy1QRvfvb/s320/aviationradio.jpg" width="320" /></a></div>
<br />
14. Calculator and Counter with LCD and Keyboard kit<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdDoYJ2gbdICHRs50mNWkcXjmISWcRlIF1ZYOwaVvfIg4pJGYeFGzqMLNQkpG_AtvWs9cHuaupDUADgQ3jeYcdqOELn1D-9LWPBKfixpQUhZbZMVJRHcPFkQTarLiB9Sw8ws8w9Ys5vjVp/s1600/Calc.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="502" data-original-width="606" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdDoYJ2gbdICHRs50mNWkcXjmISWcRlIF1ZYOwaVvfIg4pJGYeFGzqMLNQkpG_AtvWs9cHuaupDUADgQ3jeYcdqOELn1D-9LWPBKfixpQUhZbZMVJRHcPFkQTarLiB9Sw8ws8w9Ys5vjVp/s320/Calc.JPG" width="320" /></a></div>
<br />
15. <a href="https://www.adafruit.com/product/1526" target="_blank">"Three Fives" Discreet 555 Timer kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnz381xoQ4q5TMiRsCQnhmLPlF22VRk8jY_a63_M45jG_II-qq-kffp8VesCJI1zw0m4iiMZs4yzAEdj_f-drvtMV5Ys8reJkyMdQfksS6JTEWhKhID-5Ss9g9DmF8UtNWSk76qK1phA7H/s1600/555.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnz381xoQ4q5TMiRsCQnhmLPlF22VRk8jY_a63_M45jG_II-qq-kffp8VesCJI1zw0m4iiMZs4yzAEdj_f-drvtMV5Ys8reJkyMdQfksS6JTEWhKhID-5Ss9g9DmF8UtNWSk76qK1phA7H/s320/555.jpg" width="320" /></a></div>
<br />
16. <a href="https://www.adafruit.com/product/73" target="_blank">TV-B-Gone kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjofgMj8t6cVYY5qBjAwr4uH6Qk8YitI6qinjgcCI4iAWENsMPH0FhmSIifyDKiEI5y9BPPhmb3GB3iSqob8uHb6A5pVlfrvMmfaKU22dPjL5yr1hlSjAuZ5grkBFEyFIPrROpjXgBoWAVL/s1600/tvbgone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjofgMj8t6cVYY5qBjAwr4uH6Qk8YitI6qinjgcCI4iAWENsMPH0FhmSIifyDKiEI5y9BPPhmb3GB3iSqob8uHb6A5pVlfrvMmfaKU22dPjL5yr1hlSjAuZ5grkBFEyFIPrROpjXgBoWAVL/s320/tvbgone.jpg" width="320" /></a></div>
<br />
17. <a href="https://www.adafruit.com/product/14" target="_blank">MintyBoost kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRy5lJtX6OQJKb6M7fiG-QBxEz9fJwS5zzT7AySltBJUJ0ZE1iZHf6U9EOj5YjqQ_C6doeJSxfZsblA9OF6begQcmLK7KbHNtw4ewsUUBOoIgOEL4kMIAokTP0u5nET7RPZbZIKoVsuJwP/s1600/mintyboost.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRy5lJtX6OQJKb6M7fiG-QBxEz9fJwS5zzT7AySltBJUJ0ZE1iZHf6U9EOj5YjqQ_C6doeJSxfZsblA9OF6begQcmLK7KbHNtw4ewsUUBOoIgOEL4kMIAokTP0u5nET7RPZbZIKoVsuJwP/s320/mintyboost.jpg" width="320" /></a></div>
<br />
18. <a href="https://www.adafruit.com/product/2648" target="_blank">MintySynth kit</a> (now discontinued)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin7ky1_vCbpJ6yhP7h8Mv85ix8h9EDmVAu4Y5DolF4H2EzlaHduz0K5HzipErpVBd40CTUTmzpahGDAVDUXBKhcXenBeWXlJwBPTtwe0Vbfh8naiL1kHS88gGhh1Yarar7bhyphenhyphen95DWPF_0Q/s1600/mintysynth.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin7ky1_vCbpJ6yhP7h8Mv85ix8h9EDmVAu4Y5DolF4H2EzlaHduz0K5HzipErpVBd40CTUTmzpahGDAVDUXBKhcXenBeWXlJwBPTtwe0Vbfh8naiL1kHS88gGhh1Yarar7bhyphenhyphen95DWPF_0Q/s320/mintysynth.jpg" width="320" /></a></div>
<br />
19. <a href="https://www.adafruit.com/product/124" target="_blank">Drawdio kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFYJvn_Ixlqazmz3asvF4RQPLZt-94TWjsxkQsj5J-6i9GE9l9WcNdUZTLU6xeeR0n8H8BshACOyuER6f8HcZa6lI_qMulLF1BaXO5reXWQzffHPBxYTiLwa3h917036k5QWJ2c5Yu7VSV/s1600/drawdio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFYJvn_Ixlqazmz3asvF4RQPLZt-94TWjsxkQsj5J-6i9GE9l9WcNdUZTLU6xeeR0n8H8BshACOyuER6f8HcZa6lI_qMulLF1BaXO5reXWQzffHPBxYTiLwa3h917036k5QWJ2c5Yu7VSV/s320/drawdio.jpg" width="320" /></a></div>
<br />
20. <a href="https://www.amazon.ca/Gikfun-Eletronic-Hourglass-Welding-Practice/dp/B078BP1S4D/ref=sr_1_3?keywords=Electronic+Hourglass+LED+kit&qid=1586124054&sr=8-3" target="_blank">Electronic Hourglass LED kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJiI565Ajz5mWZq5Xi98tagLyyfN5kLZNGhsauHCeub6ZUTNVbToAqdwgEEW3TxRxwLOXvwsAPuzVyLQ1IYbaq223gSmdadN2iJ8I-vuWxVMEQ9mgQxUK6MezyBvM39X2aCaHIU8W5CnI/s1600/hourglass.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1500" data-original-width="1500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeJiI565Ajz5mWZq5Xi98tagLyyfN5kLZNGhsauHCeub6ZUTNVbToAqdwgEEW3TxRxwLOXvwsAPuzVyLQ1IYbaq223gSmdadN2iJ8I-vuWxVMEQ9mgQxUK6MezyBvM39X2aCaHIU8W5CnI/s320/hourglass.jpg" width="320" /></a></div>
<br />
21. <a href="https://www.amazon.ca/Multi-Function-Rotation-Replacement-Electronic-Temperature/dp/B07KJG8KHC/ref=sr_1_37?keywords=4+digit+led+clock+kit&qid=1586123238&sr=8-37" target="_blank">Round LED Clock kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJcBE5bGzUDUnwAGpxUknSod56HFbL5K9JVo4pR5dJZozxeZArbRtX0twJ13lhbXqkwy1d-2jYTF8j0TDmWQwr8Xf-DmBxDO9-g-V9YFWrxo_t1Yw18p6xmvIoylWwUtstR4gEIfQFale7/s1600/roundclock.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1001" data-original-width="1001" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJcBE5bGzUDUnwAGpxUknSod56HFbL5K9JVo4pR5dJZozxeZArbRtX0twJ13lhbXqkwy1d-2jYTF8j0TDmWQwr8Xf-DmBxDO9-g-V9YFWrxo_t1Yw18p6xmvIoylWwUtstR4gEIfQFale7/s320/roundclock.jpg" width="320" /></a></div>
<br />
22. <a href="https://www.amazon.ca/Generator-KKmoon-Precision-Adjustable-Frequency/dp/B01HM70CMY/ref=sr_1_1_sspa?keywords=Signal+Generator+with+XR2206+Adjustable+Frequency+kit&qid=1586124079&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExTDhQMTVLTlcwUlhXJmVuY3J5cHRlZElkPUEwOTM3OTkxM0Y1V0ZCNVFVTlRJVyZlbmNyeXB0ZWRBZElkPUEwMDYyNjg3MjRVUjlYR01SNzJRNiZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=" target="_blank">Signal Generator with XR2206 Adjustable Frequency kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ZnMKm4_eG5Ni1yoWJ9v09sVDFARWIYRbRODygeo4HGNK7oL0TCS1CaExh0ylgLbqj4S8gVBP8ibNlAaGcsmWgc3ICbtZi3LUpd4yurOp6vcmeGFnsNOoWxXZZWDG1ZvK4IQvblvKvyHC/s1600/xr2206.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="515" data-original-width="609" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ZnMKm4_eG5Ni1yoWJ9v09sVDFARWIYRbRODygeo4HGNK7oL0TCS1CaExh0ylgLbqj4S8gVBP8ibNlAaGcsmWgc3ICbtZi3LUpd4yurOp6vcmeGFnsNOoWxXZZWDG1ZvK4IQvblvKvyHC/s320/xr2206.JPG" width="320" /></a></div>
<br />
23. <a href="https://www.adafruit.com/product/1530" target="_blank">Solder:Time Desk Clock kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWugtBwpghQ2PRMGijXta2Bm_sxK7fqYbCRZYDOFYw3UD7WICMju-KBdHQ50ZIcDkDYCoYqdNNYE4JgwitxXq4tEBWIvgMpAq5HaAxEcpfJDcfkxzcOE01UetOcnF4dy8FCDJYGLvher6X/s1600/soldertime.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="345" data-original-width="522" height="211" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWugtBwpghQ2PRMGijXta2Bm_sxK7fqYbCRZYDOFYw3UD7WICMju-KBdHQ50ZIcDkDYCoYqdNNYE4JgwitxXq4tEBWIvgMpAq5HaAxEcpfJDcfkxzcOE01UetOcnF4dy8FCDJYGLvher6X/s320/soldertime.JPG" width="320" /></a></div>
<br />
24. <a href="https://www.adafruit.com/product/483" target="_blank">Geiger Counter kit</a>(s)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUag6nJNxGoWAjLWI8EBJUGcdDb-btEPubxtFtkHuvmTa8WzO771GwTcqFHN9Lshb2NgCm6OYZPFgoIK4wCA7XAVLGl9r-ZLl3uMFYOJheAMHtPIRsU7IgaVziqMjkRNFgYuI7y5zSaHYi/s1600/geigercounter.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUag6nJNxGoWAjLWI8EBJUGcdDb-btEPubxtFtkHuvmTa8WzO771GwTcqFHN9Lshb2NgCm6OYZPFgoIK4wCA7XAVLGl9r-ZLl3uMFYOJheAMHtPIRsU7IgaVziqMjkRNFgYuI7y5zSaHYi/s320/geigercounter.jpg" width="320" /></a></div>
<br />
25. <a href="https://www.amazon.ca/Electronic-Personality-Wristwatch-Installation-Instructions/dp/B07F12T8M7/ref=sr_1_2?keywords=wrist+watch+soldering+led+kit&qid=1586124214&sr=8-2" target="_blank">Wristwatch LED kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_5PyQvTwkpmsZLKg2Ec-MgGcnhEwHITwXiuXZRwTbNbhtokodDyPkextC6rme-XoWeh7yzGMGNSf-Jtx8W_dHkARAOdPgKJ4bHUJWkOAp_CNVXC9AshThTNGIPXHdjfdIdJszkXv1BgRH/s1600/wristwatch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1000" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_5PyQvTwkpmsZLKg2Ec-MgGcnhEwHITwXiuXZRwTbNbhtokodDyPkextC6rme-XoWeh7yzGMGNSf-Jtx8W_dHkARAOdPgKJ4bHUJWkOAp_CNVXC9AshThTNGIPXHdjfdIdJszkXv1BgRH/s320/wristwatch.jpg" width="320" /></a></div>
<br />
26. <a href="https://www.amazon.ca/Gikfun-Announciator-Electronic-Production-Burglar/dp/B01JG8HO5A/ref=sr_1_8?keywords=Burglar+Electronic+Alarm+kit&qid=1586124260&sr=8-8" target="_blank">Burglar Electronic Alarm kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo5B-sR4U7sSONZSAMaSXPNRZkPkEJ7LFbiX0i2wlGZYfvEGZX_eLnl0aO2cmpIPPijm4YhCK06Lqi0u3W-z3YcyFauV2r8szdDxVb8rO06nzRXJQvuZPvx-m51K-kDnD0DGsW2fBjdLKM/s1600/burglar.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="411" data-original-width="604" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo5B-sR4U7sSONZSAMaSXPNRZkPkEJ7LFbiX0i2wlGZYfvEGZX_eLnl0aO2cmpIPPijm4YhCK06Lqi0u3W-z3YcyFauV2r8szdDxVb8rO06nzRXJQvuZPvx-m51K-kDnD0DGsW2fBjdLKM/s320/burglar.JPG" width="320" /></a></div>
<br />
27. <a href="https://www.adafruit.com/product/89" target="_blank">Conway's Game of Life kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHP3CxYx5jBWw0HZB9GsSgTYpgcwSHi07vTG4Bi3V65G1jCtgH7RI3M-RmmC9joh4MUHM3I3X4-WQtaylYt6ll-vr85xokdPKU7DPZvWqOSuaoJtynhgV6m6nF5tI_moRsRNtbqxQUo9s7/s1600/conway.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="970" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHP3CxYx5jBWw0HZB9GsSgTYpgcwSHi07vTG4Bi3V65G1jCtgH7RI3M-RmmC9joh4MUHM3I3X4-WQtaylYt6ll-vr85xokdPKU7DPZvWqOSuaoJtynhgV6m6nF5tI_moRsRNtbqxQUo9s7/s320/conway.jpg" width="320" /></a></div>
<br />
28. <a href="https://www.amazon.ca/Cornfield-Electronics-ArduTouch-Music-Synthesizer/dp/B07MRDRNQV/ref=sr_1_9?keywords=Atari+Punk+Console+kit&qid=1586124512&sr=8-9" target="_blank">Music Synthesizer kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHFbxlIX0KhblXL3dXNUYIh6aHlnY5G7TSDQ1SxWn49fUWE8_jkTyVtP4cAJS54QIENZD-5DUEyK5Nm-DFf7htveP4Gk1NgNG-d1gA8toIIRmy-ifakkUeIoWyGRXqkGElcPwymE7va4K/s1600/musicsynth.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1500" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlHFbxlIX0KhblXL3dXNUYIh6aHlnY5G7TSDQ1SxWn49fUWE8_jkTyVtP4cAJS54QIENZD-5DUEyK5Nm-DFf7htveP4Gk1NgNG-d1gA8toIIRmy-ifakkUeIoWyGRXqkGElcPwymE7va4K/s320/musicsynth.jpg" width="320" /></a></div>
<br />
29. Line Following Robot kit<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtqakG11UknOLaK6QbCfVwsVumg02pczcXqQgod9wn0eIFUgMkgqb29Aleeb4EHNdZci-LbVWfNWsvNXq4iZYdYuuZnWPeFEfoNj8sBqSk2Q6Aye_2UzSfsGiv8tulhSwOcZXu2Zm3j7d/s1600/robot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1005" data-original-width="1005" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvtqakG11UknOLaK6QbCfVwsVumg02pczcXqQgod9wn0eIFUgMkgqb29Aleeb4EHNdZci-LbVWfNWsvNXq4iZYdYuuZnWPeFEfoNj8sBqSk2Q6Aye_2UzSfsGiv8tulhSwOcZXu2Zm3j7d/s320/robot.jpg" width="320" /></a></div>
<br />
30. <a href="https://www.amazon.ca/gp/product/B00B88A0S0/ref=ox_sc_saved_title_1?smid=A3DWYIK6Y9EEQB&psc=1" target="_blank">Jameco Atari Punk Console kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7BXg6_NMHWV6ZInUAXoR2jRWr71U8Lp0DhlAL1WKfmzuPcxlLp_YWYPVDsYWZD3iZjXuK6tfIQxhby6vze4_ESe3sRmzAr0bRWut2qTOE72F_l4ZkNnsjRQaxzInOy3DOxacuWBcpIZD/s1600/apc.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="235" data-original-width="395" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7BXg6_NMHWV6ZInUAXoR2jRWr71U8Lp0DhlAL1WKfmzuPcxlLp_YWYPVDsYWZD3iZjXuK6tfIQxhby6vze4_ESe3sRmzAr0bRWut2qTOE72F_l4ZkNnsjRQaxzInOy3DOxacuWBcpIZD/s320/apc.JPG" width="320" /></a></div>
<br />
31. 555 Forrest Mims Project kit(s)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg19c_tGknmCwFm3V5LVpeuCq-FSy56jp4GPAer04u4GJiUwz_F8SCnEgSjNkMIUesa4YlFbCVNiUoqWsBF73bQWHbfKQSaEZnNRC5OcQkra89GYMiRRqQzmzjXV74oZ0ggli8z8Pr9spJH/s1600/555-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg19c_tGknmCwFm3V5LVpeuCq-FSy56jp4GPAer04u4GJiUwz_F8SCnEgSjNkMIUesa4YlFbCVNiUoqWsBF73bQWHbfKQSaEZnNRC5OcQkra89GYMiRRqQzmzjXV74oZ0ggli8z8Pr9spJH/s320/555-2.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJLWyQWpBAUULeu963Q6-VLit3Oed_TnPPahTKqNIPd2HLG2nRFd4Cr9Z21DH6_6r_KnJpC4xJu-TlRzKOUUe34SvmBuQSIrB67GWDPhthfC1Z5PjhW_Muk2a13PbyUemAjmYDDrwRioI/s1600/555-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1260" data-original-width="1260" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJLWyQWpBAUULeu963Q6-VLit3Oed_TnPPahTKqNIPd2HLG2nRFd4Cr9Z21DH6_6r_KnJpC4xJu-TlRzKOUUe34SvmBuQSIrB67GWDPhthfC1Z5PjhW_Muk2a13PbyUemAjmYDDrwRioI/s320/555-3.jpg" width="320" /></a></div>
<br />
32. <a href="https://www.amazon.ca/Ocamo-Plasma-Speaker-Electronic-Component/dp/B07L9S8GPJ/ref=sr_1_7?keywords=Tesla+Coil+kit&qid=1586124940&sr=8-7" target="_blank">Tesla Coil kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8GxqZSh64E5tBkrPGo0_0sSxfnBSt6QC9il_vNanucPm6p-X-bhncqLaBrI44kN1RMduNI2EmRWLNt_-QMqK9JlovS8yT5h9J5jYKUhhLST-wuHV7io0QfIxVmavUD3I5G4fd65sJpZPf/s1600/tesla.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1001" data-original-width="1001" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8GxqZSh64E5tBkrPGo0_0sSxfnBSt6QC9il_vNanucPm6p-X-bhncqLaBrI44kN1RMduNI2EmRWLNt_-QMqK9JlovS8yT5h9J5jYKUhhLST-wuHV7io0QfIxVmavUD3I5G4fd65sJpZPf/s320/tesla.jpg" width="320" /></a></div>
<br />
33. <a href="https://www.amazon.ca/Velleman-MK171-Voice-Changer/dp/B004XZQ6RE/ref=sr_1_3?keywords=Music+Synthesizer+soldering+kit&qid=1586124320&sr=8-3" target="_blank">Velleman voice changer kit</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6THamoEau2QqK_9a3nrzNVxm4DxZmbWtKzd7xjLt9snZqfAFwtfeZYQUOq7ZdtNM-lXii1unYlcsdAH87ZiJgAn3L6NCG-LpWGin6CPlz6whk3_tHj-slJK35k8SU3j__hSxopR6tYY0U/s1600/voiceChanger.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="339" data-original-width="500" height="270" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6THamoEau2QqK_9a3nrzNVxm4DxZmbWtKzd7xjLt9snZqfAFwtfeZYQUOq7ZdtNM-lXii1unYlcsdAH87ZiJgAn3L6NCG-LpWGin6CPlz6whk3_tHj-slJK35k8SU3j__hSxopR6tYY0U/s400/voiceChanger.jpg" width="400" /></a></div>
<br />
<br />
34. Various badges (<a href="https://www.makershed.com/products/learn-to-solder-skill-badge-kit" target="_blank">Maker</a>, <a href="https://www.adafruit.com/product/3590" target="_blank">Day of Geek</a>, <a href="https://www.sparkfun.com/products/14639" target="_blank">Unicorn</a>, and many many others)<br />
<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-73984202857899332382020-04-05T14:55:00.002-04:002020-07-31T21:35:15.566-04:00HDSP clock revision 2The latest revision of the <b><a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">HDSP clock</a></b> uses the same schematic, but offers an improved PCB layout, with:<br />
<ul>
<li>4 holes in the corners, for encasing;</li>
<li>addition of I2C signals to the FTDI connector, <a href="http://timewitharduino.blogspot.com/2018/04/upgrade-your-hdsp-clock-to-ntp.html" target="_blank">for expansion</a>;</li>
<li>the regular push buttons can be replaced with 2-pin right angle buttons;</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0bIZKZ9ZLhL32JIJN4OjeANUCC0WTxBsKYdFHSMeMrNh-OMSWLfTpVf3Q0x-BxQdDxqOOutoJVb4ZxuHogwVM52wmKjUczIGya8c10J6wD3pL0AJiwukTaurADi32pTe7QJgzGDRS102D/s1600/HDSP-rev4-top.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1232" data-original-width="970" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0bIZKZ9ZLhL32JIJN4OjeANUCC0WTxBsKYdFHSMeMrNh-OMSWLfTpVf3Q0x-BxQdDxqOOutoJVb4ZxuHogwVM52wmKjUczIGya8c10J6wD3pL0AJiwukTaurADi32pTe7QJgzGDRS102D/s320/HDSP-rev4-top.png" width="251" /></a></div>
<br />
This revision was <a href="http://timewitharduino.blogspot.com/2020/03/teaching-electronics-to-kids.html" target="_blank">successfully used</a> as the assembly kit in the "<a href="http://timewitharduino.blogspot.com/2020/02/introduction-to-practical-electronics.html" target="_blank">Introduction to Practical Electronics</a>" course for Grade 6 students.<br />
<br />
This would also be a good place for step-by-step assembly instructions, for those who require directions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUjoLyi_0y7cFzeOj0ndf46wX1DjwsJ0A6CioNhcTsdQWoyDqhLb5ewlfT0zMxFCp9g27w2CJ7GVJYZaiqFCms0AIFqv6Jl4LDAQ7rT-P1RyIRN2keiYYRZB7MUhqc5cQmxfJqqpCJ3JSV/s1600/parts.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUjoLyi_0y7cFzeOj0ndf46wX1DjwsJ0A6CioNhcTsdQWoyDqhLb5ewlfT0zMxFCp9g27w2CJ7GVJYZaiqFCms0AIFqv6Jl4LDAQ7rT-P1RyIRN2keiYYRZB7MUhqc5cQmxfJqqpCJ3JSV/s400/parts.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR3J4psgDu0obpMxAUl6Ll1bV6yzywOpb8iBbbuipMtO6Tknz-CLRoGenHEnGUc9WWxYdn70TkqcqjGKoLnUuhFTRCNjdb7ocDEOgjIoMRwW0syqqAeAVlwgWLiEZq0vqJm0OsSXM9IrQn/s1600/step1.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiR3J4psgDu0obpMxAUl6Ll1bV6yzywOpb8iBbbuipMtO6Tknz-CLRoGenHEnGUc9WWxYdn70TkqcqjGKoLnUuhFTRCNjdb7ocDEOgjIoMRwW0syqqAeAVlwgWLiEZq0vqJm0OsSXM9IrQn/s400/step1.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_f-eEMUMyDMVGuSj3QoUAfcMYrPuRvurok5ETJq28VQkYTcWf1_bwsXmlvRdCoYqu2B5RAKSVl5l-YXHYeoEf_d6M4QWQO5bpN3vd_ZlC4W2dy4Mk1k23KrBaAjsYYPOYpKkBKaDBUj9/s1600/step2.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9_f-eEMUMyDMVGuSj3QoUAfcMYrPuRvurok5ETJq28VQkYTcWf1_bwsXmlvRdCoYqu2B5RAKSVl5l-YXHYeoEf_d6M4QWQO5bpN3vd_ZlC4W2dy4Mk1k23KrBaAjsYYPOYpKkBKaDBUj9/s400/step2.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlDPCe_nof2f2uQsBQZM8G1YoQWf0b6LLda4dhhUWEe5KcQKV7b1piUaBhyXu64YZvFKB8sWvWtGo0xA5wk43f5OnyGR-9OJjeuqR_nrMszY1VsDoayaEwOPP_czqAN-QOQQbOPSQogVR8/s1600/step3.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlDPCe_nof2f2uQsBQZM8G1YoQWf0b6LLda4dhhUWEe5KcQKV7b1piUaBhyXu64YZvFKB8sWvWtGo0xA5wk43f5OnyGR-9OJjeuqR_nrMszY1VsDoayaEwOPP_czqAN-QOQQbOPSQogVR8/s400/step3.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLXqHf8zK5qETKDGmBlC1IQmJEEnjg0gAd0TmNBpEJG3yzhfsEI8ZMAs4gLNiVfLFnU2Hw-022JUU1sUeoNua-7yzxt6IXWmoW-_Dydrl-_gLwSKX1ynRSvOvYSnGWBzCKtDU0f3M5qnH5/s1600/step4.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLXqHf8zK5qETKDGmBlC1IQmJEEnjg0gAd0TmNBpEJG3yzhfsEI8ZMAs4gLNiVfLFnU2Hw-022JUU1sUeoNua-7yzxt6IXWmoW-_Dydrl-_gLwSKX1ynRSvOvYSnGWBzCKtDU0f3M5qnH5/s400/step4.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
melt a bit of solder on the battery pad, to raise it (not pictured)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXVEGB0QpiY8cQl1sV_KI7L7oedItaUi6vJuYgKz4x-t44zInfEEgYi_eCyGL7Xc4MAKlq758f6U_yWpbPXyDp1PwuDJT-JSD4ZPBoQrXpN-73PHfL0ynZvgYlH2MMlTBfD-7-XLVZaY5i/s1600/step5.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXVEGB0QpiY8cQl1sV_KI7L7oedItaUi6vJuYgKz4x-t44zInfEEgYi_eCyGL7Xc4MAKlq758f6U_yWpbPXyDp1PwuDJT-JSD4ZPBoQrXpN-73PHfL0ynZvgYlH2MMlTBfD-7-XLVZaY5i/s400/step5.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
slide in the CR1220 battery, flat side (+ pole) up (not pictured)</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnB2f1uAitTFDjaPJKGe7L-omrKVHLm56LWvY2EZcW-z2jTMj1ZzWfywgEL9mRT3puc7gXD3DpmLWGGjNAaGc3yO4jbQa8xshXQk923rLdsX9buvgpQtHRooNNqQJuKQNW0MSgF-XLxnoL/s1600/step6.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnB2f1uAitTFDjaPJKGe7L-omrKVHLm56LWvY2EZcW-z2jTMj1ZzWfywgEL9mRT3puc7gXD3DpmLWGGjNAaGc3yO4jbQa8xshXQk923rLdsX9buvgpQtHRooNNqQJuKQNW0MSgF-XLxnoL/s400/step6.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLYbYoPrLM6lYNzO9O1jHk-VmfApaMrK8ReHP0rsfPKzW_Hkn9OztApfZYHpXD_0UM0SGruL5S8lnO8opFXDoRdDnLDdha-nGlmUl7KNdmi04Bplk_MkpaF-W4sE0j29tSxtop9cVgKzeT/s2048/step7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLYbYoPrLM6lYNzO9O1jHk-VmfApaMrK8ReHP0rsfPKzW_Hkn9OztApfZYHpXD_0UM0SGruL5S8lnO8opFXDoRdDnLDdha-nGlmUl7KNdmi04Bplk_MkpaF-W4sE0j29tSxtop9cVgKzeT/w410-h307/step7.JPG" width="410" /></a></div></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHjNqp6oDTw18oWoAn_022wTtEb7utluQDhvYxg43XdKti-P2WuD35zSWHCwAAKX8X-nFQjTT7c-B1c6ouKdCQSG-KaquTdeFYHRs6TaIKo0LTpkwRG4njaB4cAwmyLR4zPiBINP9tthbl/s1600/step8.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHjNqp6oDTw18oWoAn_022wTtEb7utluQDhvYxg43XdKti-P2WuD35zSWHCwAAKX8X-nFQjTT7c-B1c6ouKdCQSG-KaquTdeFYHRs6TaIKo0LTpkwRG4njaB4cAwmyLR4zPiBINP9tthbl/s400/step8.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwbHM5HlNohcpFfwc2pa97nUmrV4L-9du4Ea3lSCrkm_pjmYgQUaBB7YqeEuG5O9aBJM7rTKtDQzpZ4hOic8zUiboHS7qT4mbH1_pbaBJYnv5n7T55yX4f8c5lwXnb5UGcfBTV_9PN4cLF/s1600/step9.JPG" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwbHM5HlNohcpFfwc2pa97nUmrV4L-9du4Ea3lSCrkm_pjmYgQUaBB7YqeEuG5O9aBJM7rTKtDQzpZ4hOic8zUiboHS7qT4mbH1_pbaBJYnv5n7T55yX4f8c5lwXnb5UGcfBTV_9PN4cLF/s400/step9.JPG" width="400" /></a></div>
<br />
Use a mini B USB cable to power the clock. It should work right away, since the processor is already programmed with the clock software. Use the "Hours" (left) and "Minutes" (right) buttons to set up the time.<br />
Also, insert the CR1220 battery into the holder. It powers the DS1307 RTC (real time clock) when the clock board is disconnected from USB. Note that the small coin battery ONLY powers the RTC integrated circuit, and not the whole clock. The display is lit only when connected to the USB power.<br />
<br />
<b>Troubleshooting</b><br />
<ul>
<li>check for missing soldering joints; you may have forgotten to solder some terminals;</li>
<li>check for solder bridges; solder blobs may accidentally connect adjacent holes/terminals that should not be connected;</li>
<li>make sure the orientation of the integrated circuits and the display matches the silkscreen, by checking the notches/indentations;</li>
<li>ensure that the ICs are fully and completely pushed in the socket, until their bottoms touch the socket's plastic;</li>
</ul>
<br />
<b>What's next</b><br />
<br />
1. Catch up on the theory:<br />
<ul>
<li>recognize components symbols in schematics;</li>
<li>recap units of measure for some of the components (ohms for resistors, farads for capacitors); read their intended values (3 digits, color code), measure their real values using a multimeter;</li>
<li>understand electrical concepts: voltage, current, resistance (and their dependency), frequency; recap their units of measure;</li>
</ul>
2. Design and make an enclosure (hint: the easiest is to sandwich the board between plates of transparent acrylic, with standoffs in the 4 corners).<br />
<br />
3. <a href="http://timewitharduino.blogspot.com/2020/04/review-of-some-electronics-kits-for-kids.html" target="_blank">Look for a new kit</a> to assemble.<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-11736058142833364322020-03-21T11:42:00.004-04:002020-03-21T11:45:26.914-04:00Teaching Electronics to KidsMy "<a href="http://timewitharduino.blogspot.com/2020/02/introduction-to-practical-electronics.html" target="_blank">Introduction to Practical Electronics for Children</a>" course concluded successfully a few weeks back, before March break. Now, with schools closed for covid19, it would be a good time for the kids to practice soldering and learn by doing. At this stage, I think it is easy to expand their knowledge and skills in the field of electronics just by assembling kits.<br />
<br />
Here are a few notes and observations from my teaching.<br />
<ul>
<li>Each class had 6 groups of 3 students sharing a soldering station. This (not my decision) was probably based of space constraints (6 desks in a normal-sized classroom) and safety/supervision considerations. It worked pretty well: the 2 students (in each group) not soldering had time to observe, analyze, think and to ask lots of questions. Two professional teachers assisted, with supervision, helping the students and keeping discipline.</li>
</ul>
<ul>
<li>Each student had their own <a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">"HDSP clock" kit</a> to assemble. It took 6 one-hour sessions to complete, with a success rate of about 95% (2 failures out of 38 assembled, because of solder bridges).</li>
</ul>
<ul>
<li>The intended "50% theory and 50% practice" ratio had quickly become 10/90. Still managed to introduce components (resistor, capacitor, crystal), electrical concepts (AC vs DC, voltage, resistance, current, frequency) and units of measures (Volts, Farads, Ohms, Hertz). We even talked about Tesla batteries :)</li>
</ul>
<ul>
<li>Some parts were lost (e.g. crystal) or damaged (dropped, then stepped on by accident) between or during the classes. The lesson learned is to have extras available.</li>
</ul>
<ul>
<li>Each student received individual instructions, guidance, assistance and supervision on soldering. We came up with the "3-second rule" to make a good soldering joint: hold the tip of the soldering iron in contact with the pad and the terminal for 3 seconds while touching and melting the solder wire on the tip.</li>
</ul>
<ul>
<li>Having students pay attention to the instructions was very important. It saves energy to talk once to the whole class, rather than answering the same question to each individual. (I also learned from professional teachers the "1-2-3 eyes on me" attention-getter.)</li>
</ul>
<ul>
<li>Sockets for integrated circuits are a must in a beginner kit. Imagine fixing an IC soldered in the wrong orientation! (The "worst" that happened was that all 3 ICs in the kit were soldered directly onto the board, luckily in the correct orientation.) Also, silkscreen should be as detailed as possible, indicating the component's place. In case of the "HDSP clock" kit, the students were able to easily identify the placeholders for each component, just by using logic (except for the resistors; they learned quickly to bend the resistors' terminals).</li>
</ul>
<ul>
<li>Some of the most frequent mistakes were soldering bridges and filling empty holes with solder. Bridges were easily fixed (initially by me, then the students learned to do it themselves) using the copper wick/braid, and flux. To fix the solder-filled holes, I had to use a tailor pin (part of my EDC Swiss card).</li>
</ul>
<ul>
<li>Surprisingly, every student showed interest in working on, and completing, the kit. I think it was a successful experiment even for the school, in making "practical electronics" as part of their curriculum. Like in the old days of practical skills teaching (wood working for boys, sewing or cooking for girls), this course demonstrated that Grade 6 students are very capable and eager to acquire skills that may stay with them for life.</li>
</ul>
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-64565953952320125222020-03-15T17:29:00.003-04:002020-03-15T17:32:39.625-04:00Teardown of an Old Dimmer SwitchThe 40+ year-old dimmer (made by Nortron Industries Limited in Milton, Ontario) in my attic broke down. Electronically, the dimming circuit still worked, but mechanically, the push button got stuck.<br />
This is what's inside, for the curious.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Egz2Pbx864RB6z73wVJdqZdtWTrNgv00NGQtISx07a3QT-nYpR0zfwamQ-16wEl36lIc8VpFsH48U8ZJB8kLFS9yrZ1ecLJK4Pf7-GI6ZNPz2esyFSwaXsvsIWhOG_FnaExcHSjrOwmY/s1600/dim1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6Egz2Pbx864RB6z73wVJdqZdtWTrNgv00NGQtISx07a3QT-nYpR0zfwamQ-16wEl36lIc8VpFsH48U8ZJB8kLFS9yrZ1ecLJK4Pf7-GI6ZNPz2esyFSwaXsvsIWhOG_FnaExcHSjrOwmY/s400/dim1.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3LK-GxUQxi_6_LzMGtgfmRzbsjj7zd7VRRp2Hjz-2rIH_n_Z7z4c6w7pKVP5BL2ycsc3hIUfECrOs51wGIN_ubxvF3K0utalMdA1GbBhO4epGCcCk_CTRY4Jb5GEVNWqTns3LIBGJX2Uj/s1600/dim2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3LK-GxUQxi_6_LzMGtgfmRzbsjj7zd7VRRp2Hjz-2rIH_n_Z7z4c6w7pKVP5BL2ycsc3hIUfECrOs51wGIN_ubxvF3K0utalMdA1GbBhO4epGCcCk_CTRY4Jb5GEVNWqTns3LIBGJX2Uj/s400/dim2.JPG" width="400" /></a></div>
<br />
The active component in the circuit is Q2006LT, a "quadrac" which, according to the <a href="https://www.digchip.com/datasheets/parts/datasheet/799/Q2006LT-pdf.php" target="_blank">datasheet</a>, "<i>is an internally triggered Triac designed for
AC switching and phase control applications. It is a Triac
and DIAC in a single package, which saves user expense
by eliminating the need for separate Triac and DIAC
components</i>".<br />
<br />
The "reversed-engineered" schematic looks like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVfOKdtbk8JZ73ya1IwYz97Wij3PeqiTmfUmfB8ydG-DendF4zCOHDmEcj4ZlFxBx8K7q5-kBp-3FMeD6wnCLJljRE0vNteG5hdFCbYCwpNvgli1Gb9iXLTTdvvcG382ys6NvNqaOmHW92/s1600/dim_sch.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVfOKdtbk8JZ73ya1IwYz97Wij3PeqiTmfUmfB8ydG-DendF4zCOHDmEcj4ZlFxBx8K7q5-kBp-3FMeD6wnCLJljRE0vNteG5hdFCbYCwpNvgli1Gb9iXLTTdvvcG382ys6NvNqaOmHW92/s400/dim_sch.JPG" width="400" /></a></div>
<br />
For those who want to understand more on how the triac-controlled dimmer works, <a href="https://home.howstuffworks.com/dimmer-switch3.htm" target="_blank">this article</a> provides an in-depth explanation.<br />
<br />
The 250V capacitors may be reused in a Nixie high-voltage (~170V) power source. For a hoarder, both the choke and the potentiometer (push button removed) look good.<br />
<br />
I will report back on the internals of the replacement switch in 40 years or so, when it breaks down. I hope I/it last(s) that long.<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-63519482895282300612020-03-11T21:45:00.000-04:002020-03-11T21:58:10.602-04:00Rothko Clock Nixie Shield with 6 IN-17 tubesThis compact <b>6-tube Nixie shield</b> was designed by Tyler a long time ago, when kickstarter was young, and I was following closely and contributing often. Soon after the successful campaign, this open source project, together with its supporting documentation and web site, seemed to have disappeared from the internet.<br />
I already reviewed the <b>Nixie shield</b> <a href="http://timewitharduino.blogspot.com/2013/11/another-nixie-clock.html" target="_blank">here</a> (as part of the <b>"Rothko" clock</b>), and covered it a bit more in <a href="http://timewitharduino.blogspot.com/2019/03/debugging-in-17-nixie-clock-aka-rothko.html" target="_blank">another post</a>.<br />
Since I found it appealing, both as a soldering kit and as a miniature Nixie board, I also:<br />
<ul>
<li>modified slightly the original schematic (eliminated the under-the-tube LEDs)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNpRiHFap26lM2VcnnH4QuN4DCBLZsb_8hzu0oFm0AsoP6czhUPMid-e6eg3VpNM22RHBrxHiNJGjCinlRFjEjW8KtH00QuuDi8Ox2iLU_ET4B6-9OCAjh57OupvVKWPvfLYNHvTUG4C54/s1600/6nixie.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="992" data-original-width="1289" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNpRiHFap26lM2VcnnH4QuN4DCBLZsb_8hzu0oFm0AsoP6czhUPMid-e6eg3VpNM22RHBrxHiNJGjCinlRFjEjW8KtH00QuuDi8Ox2iLU_ET4B6-9OCAjh57OupvVKWPvfLYNHvTUG4C54/s400/6nixie.JPG" width="400" /></a></div>
<ul>
<li>redesigned the PCB</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_v7zdHGo28s_ISsBeFhDSy3E0bNLaoUKz__m08nf8FAyLV73Mvn4J3k310wSrphzi2umHyGIDEVW5nKUrkhcYYjSX45fYrhyMp39I-_5klqAgWdGpKQCgu-nhIErkHBVddJl8-_BGkTOK/s1600/Rothko_top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1054" data-original-width="1484" height="283" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_v7zdHGo28s_ISsBeFhDSy3E0bNLaoUKz__m08nf8FAyLV73Mvn4J3k310wSrphzi2umHyGIDEVW5nKUrkhcYYjSX45fYrhyMp39I-_5klqAgWdGpKQCgu-nhIErkHBVddJl8-_BGkTOK/s400/Rothko_top.png" width="400" /></a></div>
<ul>
<li>named the clock "Rothko", to accompany my other clocks in the masters series, "<a href="http://timewitharduino.blogspot.com/2019/02/mondrian-clock-software-release.html" target="_blank">Mondrian</a>" and "<a href="http://timewitharduino.blogspot.com/2014/06/two-faced-kandinsky-wise-clock.html" target="_blank">Kandinsky</a>". Note that, in this case, the <b>"Rothko" clock</b> is the union of 2 boards: this <b>6-tube Nixie shield</b> and <a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank">wsduino</a> (which itself can be replaced by any Arduino with an RTC).</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95cKazsVbfx-_ns-KMrAis6cn6JPg0Y016gAakJY5lzm1Wx9Y4rzY5qAvgdqvjDeuExZZfs6ZvA476m1M3ej6qeEWX_GhcUllknemuTD2oFLK_Tc8Mkf07Eobjhj09181qnTASfLoW_2N/s1600/nixie1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95cKazsVbfx-_ns-KMrAis6cn6JPg0Y016gAakJY5lzm1Wx9Y4rzY5qAvgdqvjDeuExZZfs6ZvA476m1M3ej6qeEWX_GhcUllknemuTD2oFLK_Tc8Mkf07Eobjhj09181qnTASfLoW_2N/s400/nixie1.JPG" width="400" /></a></div>
<div>
<br /></div>
<br />
A <a href="https://www.tindie.com/products/florinc/arduino-nixie-shield-kit-for-six-in-17-tubes/" target="_blank">kit for the <b>Nixie shield</b></a> is offered on Tindie. The PCB was designed to be self explanatory, but some people prefer the safety of assembly instructions. The slides below, recycled from the original deck, show the sequence of steps.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UAhkP3QJ-DuZMR6hf7ktIUqzUV4KNwK4yol0Tn_6wwUwgVKUXF5vLuwDfx_B4PnEgz3-6jJUijOovbmXKZ3ZxNPGHfjhfprJjkUQYJ_Bi3t5lnUolE2DmOVmW7coHrIjqrFZVzFA27TK/s1600/step.002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7UAhkP3QJ-DuZMR6hf7ktIUqzUV4KNwK4yol0Tn_6wwUwgVKUXF5vLuwDfx_B4PnEgz3-6jJUijOovbmXKZ3ZxNPGHfjhfprJjkUQYJ_Bi3t5lnUolE2DmOVmW7coHrIjqrFZVzFA27TK/s400/step.002.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbNQwSba8k4gzXdaYG396eCpaT11xQ-5qysMYnngrRGV_tzbtLYIOkDulTg4ETFZgHuLwvqiP4bfIqCj4D87sENND35SDUiHo9vOAYi3DUeO4LQfLdVnBGdtzeojCzY-bRgf-n6RMJ9C-2/s1600/step.006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbNQwSba8k4gzXdaYG396eCpaT11xQ-5qysMYnngrRGV_tzbtLYIOkDulTg4ETFZgHuLwvqiP4bfIqCj4D87sENND35SDUiHo9vOAYi3DUeO4LQfLdVnBGdtzeojCzY-bRgf-n6RMJ9C-2/s400/step.006.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKS_mGM8w-Ma0eYiDjb0r7As7y2-6MT_6tIAiucjm3XEsosEJsprWVKrkMp115vtiGJ86jXPBFc48rFN8ZRc2ZMP5jjzK7zmwjXVQ6dJTf80eKZqh20I5PJqTeNcvRKDBRHfrrppmnmem/s1600/step.007.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaKS_mGM8w-Ma0eYiDjb0r7As7y2-6MT_6tIAiucjm3XEsosEJsprWVKrkMp115vtiGJ86jXPBFc48rFN8ZRc2ZMP5jjzK7zmwjXVQ6dJTf80eKZqh20I5PJqTeNcvRKDBRHfrrppmnmem/s400/step.007.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2eF-TUnro7AodxPN75AY-PhU300hF-X33LLoCT-MB-nzPbzmugmv_pSbfrSAwLqdhiw_T4H7PdrCx7S3AhnZuPkueK3b4PSyVAIvCkN7_FaH_EvYmE6netRpNrEFo4rZTL3B0HS078Wck/s1600/step.008.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2eF-TUnro7AodxPN75AY-PhU300hF-X33LLoCT-MB-nzPbzmugmv_pSbfrSAwLqdhiw_T4H7PdrCx7S3AhnZuPkueK3b4PSyVAIvCkN7_FaH_EvYmE6netRpNrEFo4rZTL3B0HS078Wck/s400/step.008.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZERHXYLxDywHZcV4FVZO7nLOQUu1d8BlBdhJs_gp9w8FTRv9R8sWTL2Bpzsh1yKDnB3JM9CAYaInTE7g0nlPrL4-PXXwWGf3lPKi0vtLnn1jTMexPgrUbyKiAzm_rm_wlMWqvswXsya-v/s1600/step.009.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZERHXYLxDywHZcV4FVZO7nLOQUu1d8BlBdhJs_gp9w8FTRv9R8sWTL2Bpzsh1yKDnB3JM9CAYaInTE7g0nlPrL4-PXXwWGf3lPKi0vtLnn1jTMexPgrUbyKiAzm_rm_wlMWqvswXsya-v/s400/step.009.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYsJYjZn46LZyGzFrIIOTcCJq4O8DrVaX_otT1VgNcOwPRHcn0yY-P29-k0aHBGshdlawobm3x_sPDpZOmZxuDjaNzbwHlBwiCVyAuxN4MqcsPsgm-VGi2R9syoOCHF6pS8ViUJ0m2vrV0/s1600/step.010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYsJYjZn46LZyGzFrIIOTcCJq4O8DrVaX_otT1VgNcOwPRHcn0yY-P29-k0aHBGshdlawobm3x_sPDpZOmZxuDjaNzbwHlBwiCVyAuxN4MqcsPsgm-VGi2R9syoOCHF6pS8ViUJ0m2vrV0/s400/step.010.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEWiubuuPed6DnM1CQxwi1R5Mzg9wy7yoEjc4H0HROixiuRstSbwZ6Q5npZ-JXi9K2UNVKL7snZPtKEfPj_VTsbq_F5hGeoVPPOWdevY4zqmB4aINeCqU2IHrTsO5G-JnvNAzk1NzFOA2F/s1600/step.011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEWiubuuPed6DnM1CQxwi1R5Mzg9wy7yoEjc4H0HROixiuRstSbwZ6Q5npZ-JXi9K2UNVKL7snZPtKEfPj_VTsbq_F5hGeoVPPOWdevY4zqmB4aINeCqU2IHrTsO5G-JnvNAzk1NzFOA2F/s400/step.011.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7zaY1neg19V83ky8Ma7iVlU4yQKV0W9_nFD-1gaD-G7nLgCgJ8j4h8WkU0E1ShqEkYYCl9tAa33RE1aUi1LULMGzwUwW21r647ATFaF3EyJnQQmDYjk3kbxF-R8mMgCp3-HCrL421pWmY/s1600/step.012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7zaY1neg19V83ky8Ma7iVlU4yQKV0W9_nFD-1gaD-G7nLgCgJ8j4h8WkU0E1ShqEkYYCl9tAa33RE1aUi1LULMGzwUwW21r647ATFaF3EyJnQQmDYjk3kbxF-R8mMgCp3-HCrL421pWmY/s400/step.012.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWn8kL4RMVI8a9NDs3x1ooDUBN4lDaBH0ZsYw3e9P2hFT2S9HHTN5y4vjKpIAgiQ_8uMdNKfsa-WXVXWd7P7DrFDv9pc4QtC_2Mf-nqDY3uBBfDc3E7L-_U4CQTBBAna6W8R5bB0aYz9ct/s1600/step.013.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWn8kL4RMVI8a9NDs3x1ooDUBN4lDaBH0ZsYw3e9P2hFT2S9HHTN5y4vjKpIAgiQ_8uMdNKfsa-WXVXWd7P7DrFDv9pc4QtC_2Mf-nqDY3uBBfDc3E7L-_U4CQTBBAna6W8R5bB0aYz9ct/s400/step.013.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkpzLHvozSn2AphwwmPIp_V1KtVZfvlcYwX-B7Cbgjd7PwGqyY4JACKqkLK59juJuOffTht7Kgg878SwQIcDRTEEY_D85vPiJQJsE7JUZ6DbAhg52Q-TUfjeQkl_teeRw-DyZ_qh6WidAZ/s1600/step.014.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkpzLHvozSn2AphwwmPIp_V1KtVZfvlcYwX-B7Cbgjd7PwGqyY4JACKqkLK59juJuOffTht7Kgg878SwQIcDRTEEY_D85vPiJQJsE7JUZ6DbAhg52Q-TUfjeQkl_teeRw-DyZ_qh6WidAZ/s400/step.014.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR8xbnFgbhZeI7KZEYhmKxl3B9VB8SERO5wTL2zP-gd_zW4lEpFKZYAtSRTWRJdBm5eqxet6gXpLKhIfCDn3SYl0X5S5VvZ4dbiUfSoxJB07o2UoO6WLzNL1uDKZnJIB6d-rL0-Q1FNDDw/s1600/step.015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR8xbnFgbhZeI7KZEYhmKxl3B9VB8SERO5wTL2zP-gd_zW4lEpFKZYAtSRTWRJdBm5eqxet6gXpLKhIfCDn3SYl0X5S5VvZ4dbiUfSoxJB07o2UoO6WLzNL1uDKZnJIB6d-rL0-Q1FNDDw/s400/step.015.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6jUbSUAjjgId5-QhiX_5OSsMZc85z6DOKDytpX5r-axrDmUELYxTKqsuLLpmaYDo91fj20D3Y98Y_Tz2U8_76EJorIdUwTiumzsCfG7ZQptftcC39kic-rE98N3VK2XGhx74rTmjwaQJU/s1600/step.016.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6jUbSUAjjgId5-QhiX_5OSsMZc85z6DOKDytpX5r-axrDmUELYxTKqsuLLpmaYDo91fj20D3Y98Y_Tz2U8_76EJorIdUwTiumzsCfG7ZQptftcC39kic-rE98N3VK2XGhx74rTmjwaQJU/s400/step.016.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjk9FLGhcW4CjSJ-fgS3GcZE-Kys5juzMmGDVbu0A5-ZdshA5jBy6RGNhaq0FUSKp92eLlBiOxvZLx6FIfvLVOnzIwQXas-a1rpHMhnKEt6UAic_lecevXIbiCaZ2jY2zhttFKW47o_UI/s1600/step.017.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOjk9FLGhcW4CjSJ-fgS3GcZE-Kys5juzMmGDVbu0A5-ZdshA5jBy6RGNhaq0FUSKp92eLlBiOxvZLx6FIfvLVOnzIwQXas-a1rpHMhnKEt6UAic_lecevXIbiCaZ2jY2zhttFKW47o_UI/s400/step.017.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvH9udD4gL_c6jONjz1m3T48OPZydmCeWZTItxIiYm8aqy0A0JKgjkWhX504HKhfDO5wTuCaBcpwhFP52q2E_mmh-O7cdWaSbuhrEiLHWrAGZ_QpHhHz56mHeWyEHlcMRqhV_6ecReVVgO/s1600/step.018.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvH9udD4gL_c6jONjz1m3T48OPZydmCeWZTItxIiYm8aqy0A0JKgjkWhX504HKhfDO5wTuCaBcpwhFP52q2E_mmh-O7cdWaSbuhrEiLHWrAGZ_QpHhHz56mHeWyEHlcMRqhV_6ecReVVgO/s400/step.018.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGUohXfxMQuINWd8SGb3QyLwOgTWv53dGNKUfq7d6EF6u4yIBIKhUlvjixaHmYkd4AJHhor1nxVzm0Btkr86ywwvy3SlJxsGhyphenhyphenBGn2tJK3I-lUZQ4ke-KAoT8BtatW74tM9wyWp-JaFYnY/s1600/step.020.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGUohXfxMQuINWd8SGb3QyLwOgTWv53dGNKUfq7d6EF6u4yIBIKhUlvjixaHmYkd4AJHhor1nxVzm0Btkr86ywwvy3SlJxsGhyphenhyphenBGn2tJK3I-lUZQ4ke-KAoT8BtatW74tM9wyWp-JaFYnY/s400/step.020.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8kFSVZEV_hdOTxuF9m7V30te8pn964UKQCCcw9TJcE1567wrT5mk9dPz-ThxPTejdDcDTskGegLkQ9oyeYkhHbGrfJq8fPRb3bWoLDAuK0kR-fnD9jCI6hyphenhypheniwLpS7H2BE5-FWu_lkyeZ/s1600/step.021.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie8kFSVZEV_hdOTxuF9m7V30te8pn964UKQCCcw9TJcE1567wrT5mk9dPz-ThxPTejdDcDTskGegLkQ9oyeYkhHbGrfJq8fPRb3bWoLDAuK0kR-fnD9jCI6hyphenhypheniwLpS7H2BE5-FWu_lkyeZ/s400/step.021.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgab6jZBSqGpm4HGzhPKUrd_351-7QxEDol_a8gMC1QivEd9XtcTxvzDyh2cYjdqIE0uso4_OlpDlNCKRMjPmpM8z4xqBLZPWkT0cz4jh4ExJgKxW64jXTbnQKq0hoPrOoo3kl_GfYXJewI/s1600/step.022.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgab6jZBSqGpm4HGzhPKUrd_351-7QxEDol_a8gMC1QivEd9XtcTxvzDyh2cYjdqIE0uso4_OlpDlNCKRMjPmpM8z4xqBLZPWkT0cz4jh4ExJgKxW64jXTbnQKq0hoPrOoo3kl_GfYXJewI/s400/step.022.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPL6DIm2gkYgvfqu9-2_XJvoWwU_1XwuMnVI769ORA9trbKosnfnkm9dfMnCM9GYoIiqbNwTgM8n5zJ6KdfNhjWiHf7zkSpLJxBLRAjBLbCD84nvCcx8V1W668FO2i6KAbbGaN7mqixGYH/s1600/step.023.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPL6DIm2gkYgvfqu9-2_XJvoWwU_1XwuMnVI769ORA9trbKosnfnkm9dfMnCM9GYoIiqbNwTgM8n5zJ6KdfNhjWiHf7zkSpLJxBLRAjBLbCD84nvCcx8V1W668FO2i6KAbbGaN7mqixGYH/s400/step.023.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuzp9OoPXTYOcV7IqbELFJ1Oado5dixevt6vQV-Z_a0YlbFoqm2p-hQMEKvKE5v9T1jaZKp3eMBIu78xiypekin4GnyjFOw20HiEumpkeClu831A5-SiAbKiEcz5ip4DHTjiKCPcOo5IoN/s1600/step.024.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuzp9OoPXTYOcV7IqbELFJ1Oado5dixevt6vQV-Z_a0YlbFoqm2p-hQMEKvKE5v9T1jaZKp3eMBIu78xiypekin4GnyjFOw20HiEumpkeClu831A5-SiAbKiEcz5ip4DHTjiKCPcOo5IoN/s400/step.024.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE16ff0yUM4TViZIaxFs6goOkibn1Xsxc4fzRQhqnhgyK4b2DpmFZPmwinxFKdi63stJ9pTTWYV69dB0pApaFBviV_VGDjBzlsqgw7vacS6PbsqUPtQJe4l21EIob99x11j6lP5sPoSW8p/s1600/step.025.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE16ff0yUM4TViZIaxFs6goOkibn1Xsxc4fzRQhqnhgyK4b2DpmFZPmwinxFKdi63stJ9pTTWYV69dB0pApaFBviV_VGDjBzlsqgw7vacS6PbsqUPtQJe4l21EIob99x11j6lP5sPoSW8p/s400/step.025.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV51JkS2MjD2zrmoXLJhdChXkmvVZk8c57Vkc6EpYaaNf9XkREGqZMyQOweiPrHfS9ZjvrrtFYFJ-fW6URCJ-lL9vgAfnOabYM7_MSNciotesEe9V4G3-IZviiOcHKmPykHxGpherYu1wr/s1600/step.026.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV51JkS2MjD2zrmoXLJhdChXkmvVZk8c57Vkc6EpYaaNf9XkREGqZMyQOweiPrHfS9ZjvrrtFYFJ-fW6URCJ-lL9vgAfnOabYM7_MSNciotesEe9V4G3-IZviiOcHKmPykHxGpherYu1wr/s400/step.026.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPz-MbIadrX6qwGpvmn5YHutf7c89sYAv-26R_gdQquXjT_7Wt_RHEU_XMTiMsISq31ALK27uYotyjSvhsVBBcdU2b4XKhAh35CxzuQmY_JCJXnDMdh0WvjO2LVBumJAXHMxhv0cv23u4m/s1600/step.027.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPz-MbIadrX6qwGpvmn5YHutf7c89sYAv-26R_gdQquXjT_7Wt_RHEU_XMTiMsISq31ALK27uYotyjSvhsVBBcdU2b4XKhAh35CxzuQmY_JCJXnDMdh0WvjO2LVBumJAXHMxhv0cv23u4m/s400/step.027.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxI6rLR99BLm1gt6lV0NzoHtTIWGsFgK_1hTZ_1lsWkEIhElXyubVqkAtgJd5p1f26SwgPcwyNU7JM6dULZ53TI-pAafHHQTYS9qE_2iBPLzbtaDnHUEY-iH_zlscuuHk5_7-1WriOLE-e/s1600/step.028.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxI6rLR99BLm1gt6lV0NzoHtTIWGsFgK_1hTZ_1lsWkEIhElXyubVqkAtgJd5p1f26SwgPcwyNU7JM6dULZ53TI-pAafHHQTYS9qE_2iBPLzbtaDnHUEY-iH_zlscuuHk5_7-1WriOLE-e/s400/step.028.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1KTuI5PDaRXrK0uU241wl92YwbZmspzRVZgylocknaTVP3jNXDwO7mr-3vCoFD_6Ekye6Hb0Ai4YKRHs8mvL5wp1ehCgurbIBLe8ZEMuGbYIp1mBiOEq7KoobXsy5noHipUsrMY-kEPwf/s1600/step.029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1KTuI5PDaRXrK0uU241wl92YwbZmspzRVZgylocknaTVP3jNXDwO7mr-3vCoFD_6Ekye6Hb0Ai4YKRHs8mvL5wp1ehCgurbIBLe8ZEMuGbYIp1mBiOEq7KoobXsy5noHipUsrMY-kEPwf/s400/step.029.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi13OLQCax7WK1XpZnf4-Kk6Vb76hbxu_u3MgBaYskZLEIF968QicSW4-kiNCm5SVuuncFJhw4vUUPSgxe91xnDZW3y10U34p3R6i5mCjwnOaVojCRmoS_S-ZFL1r-OfW4aE_wCHdjxPZ_3/s1600/step.030.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi13OLQCax7WK1XpZnf4-Kk6Vb76hbxu_u3MgBaYskZLEIF968QicSW4-kiNCm5SVuuncFJhw4vUUPSgxe91xnDZW3y10U34p3R6i5mCjwnOaVojCRmoS_S-ZFL1r-OfW4aE_wCHdjxPZ_3/s400/step.030.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsFquPrgP-teT44vIEQXvqcY6YiF96tVhU35PAodtyPtVxZjy_pC8ttgXoWocEQzZpXPe_rlaAMfN6kNFUfqYxCZvSpnX1FTL0iJmJXIbXTpZ2CwfifCK5qg93ujyD0ppnq-OUxii7hdlu/s1600/step.031.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsFquPrgP-teT44vIEQXvqcY6YiF96tVhU35PAodtyPtVxZjy_pC8ttgXoWocEQzZpXPe_rlaAMfN6kNFUfqYxCZvSpnX1FTL0iJmJXIbXTpZ2CwfifCK5qg93ujyD0ppnq-OUxii7hdlu/s400/step.031.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgao77kfI56wbbq0sSwfG1WOCX31njqro59UiQAf1q3NWk1SQaEr8i6qx9ZPSoHz2pXU9OC7e_9hyphenhyphenvLwod8-z68oMOGoNIS-rr7iq1aM54_EHWo54X-LxScoV_g7I6e0aHM2QgOk9HKSgDR/s1600/step.034.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgao77kfI56wbbq0sSwfG1WOCX31njqro59UiQAf1q3NWk1SQaEr8i6qx9ZPSoHz2pXU9OC7e_9hyphenhyphenvLwod8-z68oMOGoNIS-rr7iq1aM54_EHWo54X-LxScoV_g7I6e0aHM2QgOk9HKSgDR/s400/step.034.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0SzYBiw2Ap0haCbI7K0Qz9_GbjJQcD_uBbBdLU1Ndcb-29JCnrWHO2TOIy4Tz9Fzf_ll0YwQ1bHI0jnoShqSelXtRhPoNNzIJpQlfdqPaVZYn3sfKoMe9WXw3CVBQdh3N4cVxrWHXQiNa/s1600/step.035.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0SzYBiw2Ap0haCbI7K0Qz9_GbjJQcD_uBbBdLU1Ndcb-29JCnrWHO2TOIy4Tz9Fzf_ll0YwQ1bHI0jnoShqSelXtRhPoNNzIJpQlfdqPaVZYn3sfKoMe9WXw3CVBQdh3N4cVxrWHXQiNa/s400/step.035.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBGKxI_yHmTAjfH2t_aNvw5X1xuIUVoHvsMuTQMQ-EqW6uxBcFfAruTUc4F_lXosJYTf1oxiwWrTV7Ernlbim9wMeH_pAil0YdQfGAaBEOtPM_t8S47pQeUIreHumC8XLNOSIBBqzSYuod/s1600/step.036.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBGKxI_yHmTAjfH2t_aNvw5X1xuIUVoHvsMuTQMQ-EqW6uxBcFfAruTUc4F_lXosJYTf1oxiwWrTV7Ernlbim9wMeH_pAil0YdQfGAaBEOtPM_t8S47pQeUIreHumC8XLNOSIBBqzSYuod/s400/step.036.jpg" width="400" /></a></div>
<br />
Once fully assembled, plug the <b>Nixie shield</b> into your Arduino, then upload this basic clock sketch (reads RTC and displays hours and seconds; no setting buttons, no Bluetooth, no buzzer/alarm):<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "Arduino.h"<arduino .h=""></arduino></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "avr/pgmspace.h"<avr pgmspace.h=""></avr></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "Wire.h"<wire .h=""></wire></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "DS1307.h"</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "avr/io.h"<avr io.h=""></avr></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#include "avr/interrupt.h"<avr interrupt.h=""></avr></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">// global variables</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">unsigned char INDEX = 1; /* 1 to 6 */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">unsigned char HOUR = 7; /* 1 to 12 */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">unsigned char MINUTE = 45; /* 0 to 59 */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">unsigned char SECOND = 23; /* 0 to 59 */</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">boolean is12HMode = false;</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">// read time from DS1307 at intervals;</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">#define MAX_TIME_READING_COUNTER 15000</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">long timeReadingCounter = MAX_TIME_READING_COUNTER;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">// timer2 used for nixie tube multiplexing</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ISR(TIMER2_COMPA_vect)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* HOUR = 10, 11, or 12 or top of minute?*/</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>if ((HOUR / 10) || SECOND==0)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB = 0x10; // turn HOUR tens LED on</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>else</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB = 0x00; // turn HOUR tens LED off</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>switch(INDEX++)</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* HOUR tens place */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 1:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (HOUR / 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* only turn anode on if one */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>if (HOUR / 10)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x04; </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* HOUR ones place */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 2:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (HOUR % 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* turn on anode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x08;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* MINUTE tens place */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 3:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (MINUTE / 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* turn on anode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x10;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* MINUTE ones place */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 4:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (MINUTE % 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* turn on anode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x20;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* SECOND tens place */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 5:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (SECOND / 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* turn on anode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x40;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* SECOND ones place */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>case 6:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* blank anodes */</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* set cathode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTB |= (SECOND % 10);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* turn on anode */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>PORTD = 0x80;</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>/* reset index */</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>INDEX = 1;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>break;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>}</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">void setup()</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>// configure pins</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(2, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(3, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(4, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(5, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(6, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(7, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(8, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(9, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(10, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(11, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>pinMode(12, OUTPUT);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>cli(); </span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">// disable global interrupts</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>// timer2 1kHz interrupt</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TCCR2A = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TCCR2B = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TCNT2 = 0x00;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>OCR2A = 0xF9;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TCCR2A |= (1 << WGM21);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TCCR2B |= (1 << CS22);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>TIMSK2 |= (1 << OCIE2A);</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>sei(); </span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">// enable global interrupts</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">void loop()</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> timeReadingCounter++;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> if (timeReadingCounter > MAX_TIME_READING_COUNTER)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> {</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> getTimeFromRTC();</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> timeReadingCounter = 0;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> }</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">void getTimeFromRTC()</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>int16_t<span style="white-space: pre;"> </span>rtc[7];</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>RTC_DS1307.get(rtc, true);</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>SECOND<span style="white-space: pre;"> </span>= rtc[0];</span></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>MINUTE<span style="white-space: pre;"> </span>= rtc[1];</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>HOUR<span style="white-space: pre;"> </span>= rtc[2];</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>if (is12HMode && HOUR > 12)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><span style="white-space: pre;"> </span>HOUR = HOUR - 12;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">}</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">void setTime(int hour, int minute, int second)</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">{</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> RTC_DS1307.stop();</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> RTC_DS1307.set(DS1307_SEC, second);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> RTC_DS1307.set(DS1307_MIN, minute);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> RTC_DS1307.set(DS1307_HR, hour);</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> RTC_DS1307.start();</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">}</span><br />
<br />
<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com5tag:blogger.com,1999:blog-1523577297508817869.post-20558600552810005082020-02-02T16:14:00.000-05:002020-04-27T13:04:21.988-04:00Introduction to practical electronics for childrenI designed this 7-hour (one hour/day) course for 6 graders, as part of their <a href="https://en.wikipedia.org/wiki/Science,_technology,_engineering,_and_mathematics" target="_blank">STEM</a> curriculum.<br />
The goal is to introduce the children to practical electronics and teach them about:<br />
<br />
1. electronic parts/components: how to identify/recognize them, how to measure (using a multi-meter), what they are used for (role in an electronic circuit):<br />
<ul>
<li>resistors
(current reduction), variable resistor/potentiometer, trimmer</li>
<li>capacitors
(energy accumulator), variable capacitor</li>
<li>transistors
(amplification)</li>
<li>coils
(inductors)</li>
<li>diodes,
LEDs</li>
<li>speakers.
microphones</li>
<li>buttons,
switches</li>
<li>integrated
circuits, processors</li>
<li>displays</li>
<li>sensors
(light, magnetic, proximity/infrared/ultrasound)</li>
<li>servo
motors</li>
<li>relays</li>
</ul>
2. how to solder (using a soldering station), how to place and position parts on a board, how to check connection, how to follow steps of an instruction manual;<br />
<br />
3. electricity and electronics concept:<br />
<ul>
<li>voltage, current, resistance;</li>
<li>AC vs DC</li>
<li>digital vs analog</li>
<li>oscillation</li>
<li>rectification</li>
<li>amplification</li>
<li>series, parallel</li>
<li>voltage transformation (AC)</li>
<li>voltage regulation (AC, DC)</li>
</ul>
4. basic understanding/reading of schematics (wiring, electrical connections).<br />
<br />
<br />
<b>Required materials</b><br />
<ul>
<li><a href="https://www.amazon.ca/Vastar-Soldering-Iron-Anti-Static-Off/dp/B07RZV2DW8/ref=sr_1_12?keywords=soldering+station&qid=1588006623&sr=8-12" target="_blank">soldering station</a> + <a href="https://www.amazon.ca/Austor-0-6mm-Lead-Solder-Rosin/dp/B071XVPJVX/ref=sxin_4_ac_d_rm?ac_md=3-3-c29sZGVyIHdpcmUgbGVhZCBmcmVl-ac_d_rm&cv_ct_cx=solder+wire&keywords=solder+wire&pd_rd_i=B071XVPJVX&pd_rd_r=8837e985-ecd2-48c6-b568-fa97535605cf&pd_rd_w=AvEhc&pd_rd_wg=ZiYQC&pf_rd_p=23e8e734-f595-46aa-a0c6-07a0610812ef&pf_rd_r=MK5GCBHNQ5N2YX9SM8XK&psc=1&qid=1588006740&sr=1-4-12d4272d-8adb-4121-8624-135149aa9081" target="_blank">solder wire</a> (preferable 0.6 mm) + <a href="https://www.amazon.ca/MG-Chemicals-Desoldering-Solder-Length/dp/B008O9WD7M/ref=sr_1_4?crid=385O688HXHWGV&keywords=desoldering+wick&qid=1588006808&s=hi&sprefix=desoldering+wick%2Ctools%2C149&sr=1-4" target="_blank">desoldering wick/braid</a> + <a href="https://www.amazon.ca/MG-Chemicals-837-P-Water-Soluble/dp/B01ELUHZUC/ref=sr_1_12?keywords=flux+pen&qid=1588006839&s=hi&sr=1-12" target="_blank">flux pen</a>;</li>
<li><a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">one kit</a> (per student), with through-hole components to assemble and solder;</li>
<li><a href="https://www.amazon.ca/Prototype-Soldering-Universal-Printed-Electronic/dp/B07F7WBY7Y/ref=sr_1_5?crid=CU7Z0M3CGQM8&keywords=prototype+board&qid=1588006929&sprefix=prototype+board%2Caps%2C151&sr=8-5" target="_blank">prototyping boards</a> for soldering practice + LEDs + resistors + wires + batteries;</li>
<li>tools: <a href="https://www.amazon.ca/wotu-Durable-Electrical-Cutting-Diagonal/dp/B07JL54N4X/ref=sr_1_10?crid=3L8V6YULWICLW&keywords=wire+cutter&qid=1588006969&sprefix=wire+cutter%2Caps%2C153&sr=8-10" target="_blank">wire cutter</a>, pliers, screwdriver, tweezers, magnifier, multi-meter;</li>
<li>optional: <a href="https://www.amazon.ca/PanaVise-Model-201-Junior-Miniature/dp/B000B61D22/ref=sr_1_2?keywords=panavise&qid=1588007016&sr=8-2" target="_blank">panavise</a>/third hand, power supplies, wires, connectors;</li>
</ul>
<br />
<b>Course schedule</b><br />
<br />
<b>Day 1</b><br />
theory: <span style="text-indent: -24px;">introduction to components; presentation and identification (1/2 hour)</span><br />
practice: <span style="text-indent: -24px;">beginning soldering (1/2 hour) LED + resistor, using flux, soldering wire, wick, on prototype PCBs;</span><br />
<span style="text-indent: -24px;"><br /></span>
<span style="text-indent: -24px;"><b>Day 2</b></span><br />
<span style="text-indent: -24px;">theory: </span><span lang="EN-US" style="text-indent: -24px;">introduction of a </span><a href="https://www.amazon.ca/KKmoon-TPA3118-Digital-Amplifier-Module/dp/B01HM70GJ8/ref=sr_1_6?keywords=clock+electronics+kit&qid=1571360526&sr=8-6" style="text-indent: -24px;"><span lang="EN-US" style="mso-ansi-language: EN-US;">simple clock kit</span></a><span lang="EN-US" style="text-indent: -24px;"> or another, more familiar to me, <a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">simple HDSP clock kit</a>; assembly analysis, component placement and positioning;</span><br />
<span style="text-indent: -24px;">practice: </span><span style="text-indent: -24px;">solder passive components on PCB; assemble the <a href="http://timewitharduino.blogspot.com/2014/07/new-kit-in-store-simple-clock-with-hdsp.html" target="_blank">HDSP clock</a>;</span><br />
<span style="text-indent: -24px;"><br /></span>
<span style="text-indent: -24px;"><b>Day 3</b></span><br />
<span style="text-indent: -24px;">theory: </span><span style="text-indent: -24px;">more on components; introduction to schematics;</span><br />
<span style="text-indent: -24px;">practice: </span><span style="text-indent: -24px;">solder the active components of the clock kit;</span><br />
<span style="text-indent: -24px;"><br /></span>
<b>Day 4</b><br />
theory: <span style="text-indent: -24px;">electricity concepts (digital vs analog);</span><br />
practice: <span style="text-indent: -24px;">finishing up the kit assembly; power, test, use;</span><br />
<br />
<b>Day 5</b><br />
theory: <span style="text-indent: -24px;">electricity concepts (voltage, current, resistance); example of other kits;</span><br />
practice: <span style="text-indent: -24px;">learn to use an ohm/volt/meter;</span><br />
<br />
<b>Day 6</b><br />
theory: <span style="text-indent: -24px;">electronics concepts (oscillation, rectification, amplification, sound generation etc.);</span><br />
practice: <span style="text-indent: -24px;">bring an electronic toy, working or not; disassembly, analysis, repair (if needed);</span><br />
<br />
<b>Day 7</b><br />
practice: <span style="text-indent: -24px;">continuation from Day 6; identification of components used in the toy; understanding of how it works; modding/expanding functionality/adding LEDs, speaker, buttons etc.;</span><br />
<br />
<br />
<div>
We are already on "<b>Day 3</b>", but behind schedule. Soldering is harder for the kids than I originally thought. One thing that I overlooked was that each student needs individual attention/supervision on the practical side (soldering, component placement etc.). Half hour per day of hands-on practice is definitely too short at this level. The schedule may be a little aggressive for the average Grade 6, probably better suited for older and more disciplined students. In any case, I am working on adjusting the content of the course and the feedback I receive is amazing. Kids really enjoy the fact that it is practical and some of them are amazed when they see the LEDs they soldered actually lighting up.</div>
<div>
<br />
<br /></div>
<div>
References:<br />
<div class="MsoNormal" style="margin-left: 18.0pt;">
<a href="https://opensource.com/education/16/8/4-tips-teaching-kids-how-build-electronics">https://opensource.com/education/16/8/4-tips-teaching-kids-how-build-electronics</a><o:p></o:p></div>
<div class="MsoNormal" style="margin-left: 18.0pt;">
<a href="https://www.instructables.com/id/Basic-Electronics/">https://www.instructables.com/id/Basic-Electronics/</a><o:p></o:p></div>
<div class="MsoNormal" style="margin-left: 18.0pt;">
<a href="https://www.instructables.com/class/Electronics-Class/">https://www.instructables.com/class/Electronics-Class/</a><o:p></o:p></div>
<div class="MsoNormal" style="margin-left: 18.0pt;">
<a href="https://learn.sparkfun.com/tutorials/where-do-i-start/all">https://learn.sparkfun.com/tutorials/where-do-i-start/all</a><o:p></o:p></div>
<span style="font-family: "arial" , sans-serif; font-size: 12.0pt; line-height: 115%;"> <a href="https://www.udemy.com/course/cooljunk-electronics-level-1/">https://www.udemy.com/course/cooljunk-electronics-level-1/</a></span><br />
<br />
Books:<br />
<a href="https://www.amazon.ca/gp/product/1593277253/ref=ox_sc_act_title_2?smid=A7KBT9739BD0U&psc=1" target="_blank">Electronics for Kids</a><br />
<a href="https://www.amazon.ca/gp/product/111921565X/ref=ox_sc_act_title_1?smid=A3DWYIK6Y9EEQB&psc=1" target="_blank">Electronics for Kids for Dummies</a><br />
<a href="https://www.amazon.ca/Make-Electronics-Learning-Through-Discovery/dp/1680450263/ref=sr_1_1?keywords=Make%3A+Electronics%3A+Learning+Through+Discovery&qid=1581262404&s=books&sr=1-1" target="_blank">Make: Electronics: Learning Through Discovery</a><br />
<br />
I will review these 2 books in another post, as well as analyze some of the beginner electronics sites.<br />
<br />
<br /></div>
FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-44623853243545647442019-05-10T21:13:00.000-04:002019-05-10T21:48:15.394-04:00Clock super-displayToday was a good day. In typical fashion, I started a few new "projects" almost in the same time. First one, it's assembling of a new kind of clock, from a kit sent by Nick S. I got stuck pretty early though, so I "parked" it for now. Details to come soon, in a special post.<br />
<br />
Second one, an "<a href="https://www.google.com/search?q=adler+121pd&rlz=1C1CHBF_enCA770CA770&source=lnms&tbm=isch&sa=X&ved=0ahUKEwja_tqUk5LiAhWMhOAKHVumBdAQ_AUIDygC&biw=1395&bih=956" target="_blank">Adler 121PD</a>" vintage calculator with a VFD display, that I found "in the dumpster" (well, not really, but the idea is the same, I got it for free). I was going to break it apart, for the display and the circuitry, but I gave up when I powered it up (with an improvised cable; the original, proprietary one, was missing) and it actually worked! I may still go ahead with dis-assembling it, since it is not a great value anyway; I checked prices on ebay, and they go for around $20.<br />
<br />
Lastly, the project that gave the name of this post: a <b>clock LED super-display</b>, consisting of 3 individual and independent indicators, inspired by the Leitch studio clock, brought to my attention by Nick (<span style="font-family: "arial" , sans-serif; font-size: 10pt;">VE2HOT</span>). The goal for the <b>clock super-display</b> is to eventually be able to emulate the Leitch clock. Here it is, in its incipient glory (only the back panel; the black wooden frame not pictured):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgVhOjvdbxrt2h69SXkJg-nV0Q20QgDXeffQOqLN6KEqMeMIkshxNSRhbpF_4OmqUc68WJ6Y582m6ybLyPdNjFGx4mw_sAzARFF16DyLXjqGNzoiOTueQAEkJFweMPWjfZDn_fBQdXrzkw/s1600/super-clock.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgVhOjvdbxrt2h69SXkJg-nV0Q20QgDXeffQOqLN6KEqMeMIkshxNSRhbpF_4OmqUc68WJ6Y582m6ybLyPdNjFGx4mw_sAzARFF16DyLXjqGNzoiOTueQAEkJFweMPWjfZDn_fBQdXrzkw/s400/super-clock.JPG" width="400" /></a></div>
<br />
Since I am not the crafty kind-of-guy (also not keen on spending for form more than for content), I am always looking for cheap, easy and quick solutions for encasing electronics. In this case, Ikea's <a href="https://www.ikea.com/us/en/catalog/products/00378436/#/40378401" target="_blank">Ribba 9"x9"</a> frame ($10) seems to be a good fit for the job, and hopefully will help the future clock look "Leitchy" or even better (Nick's photo below):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoXwfUcaI0iWU3T5P9Ctn8PSOER_0XwCZZwRI4A6jaWRq_rsiHqKst97hwW2LYvFgmZLa3PpPMxWXq4nmzIu-3nnnehDoKYwpocNmkQBlBysQfbIhiHtYrivLeHlV1bFmksuhjJK40FtYg/s1600/20180107_173322.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoXwfUcaI0iWU3T5P9Ctn8PSOER_0XwCZZwRI4A6jaWRq_rsiHqKst97hwW2LYvFgmZLa3PpPMxWXq4nmzIu-3nnnehDoKYwpocNmkQBlBysQfbIhiHtYrivLeHlV1bFmksuhjJK40FtYg/s400/20180107_173322.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The 2 alphanumeric displays (4 and 8 chars) of the <b>clock super-display</b> are I2C-driven. The 60 LED ring is <a href="https://www.adafruit.com/product/2873" target="_blank">adafruit neopixel</a>, controlled by a single pin. With this setup, even an ESP8266 module could be used as the brains of the clock.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The ring is fixed to the cardboard back/panel of the deep Ikea frame with four M3 plastic standoffs glued to the PCB.</div>
<div class="separator" style="clear: both; text-align: left;">
The 4-character alphanumeric 16-segment is my creation, <a href="http://timewitharduino.blogspot.com/2019/04/wifichron-support-for-16-segment-led.html" target="_blank">introduced earlier</a>. It is driven by the <a href="https://www.adafruit.com/product/1427" target="_blank">HT16K33 backpack</a>, also from adafruit (not in the picture). The PCB has M3 holes for screws.</div>
<div class="separator" style="clear: both; text-align: left;">
The 8-character alphanumeric is made of two side-by-side <a href="https://www.adafruit.com/product/1911" target="_blank">quad 14-segment LED displays</a>, also from adafruit. The 2 modules already have the HT16K33 drivers installed (soldered on the back). Attaching these quad displays to the panel is not easy, since the holes are probably M1.4. Even these thin M1.4 screws need to be forced, because the screw head presses against display's plastic enclosure. Eventually, the M1.4 screws will be glued to the M3 plastic standoffs, that's the best I could come up with. It is weird that, for such a popular and successful product, one cannot find photos (or instructions) on mounting these modules using screws.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Next step is the software support in the <a href="http://timewitharduino.blogspot.com/2015/03/wifichron-with-software-support-for.html" target="_blank"><b>WiFiChron</b> software</a>. Also need to find a way to access the 3 buttons: having them in the back is not a good idea, having them in the front is impossible, unless the glass is replaced with transparent/smoky/grey acrylic, which can be drilled.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-17307982811853853802019-04-22T09:59:00.001-04:002019-04-23T23:08:09.745-04:00Hacking DWex into combo analog-digital clock<a href="http://timewitharduino.blogspot.com/2010/08/dwex-now-for-sale.html" target="_blank"><b>DWex</b></a>, my forgotten watch, was not a successful project, probably because I rushed its design, I spent more money on it than I planned and I did not follow up with revisions. <b>DWex</b> was also not offered as a kit, but as an assembled board with SMD components, not easily hackable or expandable, pretty much a dead end from hardware perspective. Its idea is still sound though, after so many years: mostly sleep, to conserve battery, then, at a press of a button, flicker some LEDs to indicate the time.<br />
<br />
This rainy Easter weekend I stumbled upon the few <b>DWex</b> boards I still have, and they brought back memories. One thought lead to another, and I found myself, characteristically (I am the "penny wise, pound foolish"- kind), soldering around once again. So here I am, writing another useless post, about another useless project, on how to convert time, money and energy into joy, sometimes mixed with frustration, when things don't work on the first try (as it's usually the case).<br />
<br />
<b>DWex</b> is equivalent to a smaller <b><a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank">wsduino</a></b> (ATmega328 + RTC), with 24 LEDs. Why not recycle it into something physically "bigger", by adding extras (alphanumeric display, micro switches, ESP8266, OLED etc.)?<br />
The design of the <b>DWex</b> board has a few peculiarities:<br />
<ul>
<li>RTC chip is DS1337, with support for alarms;</li>
<li>the on-board CR2025 3V battery powers the whole watch, not only the RTC (there is no time keeping without a battery);</li>
<li>FTDI connector does not have Vcc wired, relying instead on the battery to power the processor while uploading the sketch;</li>
<li>the ATmega328 processor is clocked with an external 8MHz crystal, thus making the board compatible with <a href="https://www.arduino.cc/en/Main/ArduinoBoardLilyPad/" target="_blank">LilyPad 328</a>;</li>
<li>pins available are D11, D12 and D13, all broken out on the ISP connector (unused are also D2 and D10, but they would need to be wired directly from the processor's pins);</li>
<li>features only one button.</li>
</ul>
But the most particular aspect of <b>DWex</b> is <a href="https://www.youtube.com/watch?v=wUz9SBFvods" target="_blank">the way it shows the time</a> on the analog round face, by blinking LEDs on request (button push). This is actually not suitable for continuous display, simply because it is confusing to make sense of non-stop blinking LEDs.<br />
OK, so enough complaining. Here is what we plan to do:<br />
<ul>
<li>add a <a href="https://learn.adafruit.com/adafruit-led-backpack/0-54-alphanumeric" target="_blank">4-digit alphanumeric Adafruit I2C 0.54" display</a>;</li>
<li>add ESP8266 module to sync the clock on NTP;</li>
<li>add toggle switch for setting up wifi parameters (for ESP8266);</li>
<li>use RTC's alarm capability; add toggle switch and buzzer (or other audio module) for alarm mode;</li>
<li>add OLED (I2C) for displaying messages, info etc;</li>
<li>modify the software, a combination of <b><a href="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/wiseclock2/DWex.zip" target="_blank">DWex</a></b> and <b>WiFiChron</b>, to support all of the above features, plus change the way the time is shown on the analog face (no more sleep, no button press to show the time);</li>
<li>add "seconds" mode, on the digital display;</li>
<li>maybe adapt the 8-character-based menu system from <a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank"><b>WiFiChron</b></a> to 4-character (by showing only the first 1 or 2 letters of the menu);</li>
<li>add 3V3/500mA regulator to the board.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqmhfTwP5P2-DD2aCoaDE9SfZ-YMiUqGJtcvJIIQzOg8oQBDBcdLB1jUcPYuiZO-6sUvKMZWgw4gTwLbWLsAHU7cSwr4eCJpbLkFtGbvnVFffa-1rna7njIMPVYwDAYwgAqZrTYEP2wKR/s1600/dwex_in.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisqmhfTwP5P2-DD2aCoaDE9SfZ-YMiUqGJtcvJIIQzOg8oQBDBcdLB1jUcPYuiZO-6sUvKMZWgw4gTwLbWLsAHU7cSwr4eCJpbLkFtGbvnVFffa-1rna7njIMPVYwDAYwgAqZrTYEP2wKR/s400/dwex_in.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl5s3p1bMrFtiKT6hyQNsJDUN9JRJyj2_cbmhKn48SgpYzgadz80acmmRltDniFKsOI_lyH3T4vFHEZ0NrNBRyFN2M0rE8a45odsROyvv-Hs_eH6-YgbisgnbJxLV2SKA9R3ejH9rnToUW/s1600/dwex_out.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl5s3p1bMrFtiKT6hyQNsJDUN9JRJyj2_cbmhKn48SgpYzgadz80acmmRltDniFKsOI_lyH3T4vFHEZ0NrNBRyFN2M0rE8a45odsROyvv-Hs_eH6-YgbisgnbJxLV2SKA9R3ejH9rnToUW/s400/dwex_out.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
This will be a work-in-progress for a while, especially on the software (which I will publish later).<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-64129759912935509402019-04-13T21:15:00.000-04:002019-04-15T07:53:22.556-04:00WiFiChron support for 16-segment LED displayThis is the second time I am writing this post. First time it just disappeared after almost 2 hours of editing. I started the post by saying that whenever I want to have some electronics fun, I open one of my drawers. Nice story line, but I am too frustrated now to recreate it from memory. (The lesson I learned is that I should write it first as a document, save locally, then copy and paste into a blog post.)<br />
So I will keep it short and dry.<br />
<br />
Some time ago, I designed this "<a href="https://oshpark.com/shared_projects/C19kkQZY" target="_blank">4-character 16-segment 1-inch LED</a>" board (pictured below), briefly <a href="http://timewitharduino.blogspot.com/2018/06/wifichron-adapter-for-dl-1414-displays.html" target="_blank">mentioned here</a>. I abandoned it, after a couple of failed tries, while writing the character definitions. Since then, I discovered the <a href="https://learn.adafruit.com/adafruit-led-backpack/0-54-alphanumeric" target="_blank">Adafruit 4-char alphanumeric LED backpack</a>, which comes with nice <a href="https://github.com/adafruit/Adafruit_LED_Backpack" target="_blank">software support </a>as well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Fb5sk1xiswdvgLiV5O7D9t66565gsLUTukq7vNiVNsJQLRzMBpxbCwY26goSTYdZEg9Ao3MbAXPY4b9N16M1tuJbR0dI_MuUurvQgSLz6_0Z9w-hNQu7-f1b8iS1P9Enz3WgS50jkrQn/s1600/4x16seg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="1600" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Fb5sk1xiswdvgLiV5O7D9t66565gsLUTukq7vNiVNsJQLRzMBpxbCwY26goSTYdZEg9Ao3MbAXPY4b9N16M1tuJbR0dI_MuUurvQgSLz6_0Z9w-hNQu7-f1b8iS1P9Enz3WgS50jkrQn/s400/4x16seg.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For <b><a href="http://timewitharduino.blogspot.com/2015/02/wifichron-kit-now-available.html" target="_blank">WiFiChron</a></b>, two cascaded modules make an 8-character display functionally similar to HDSP-2534, but bigger and more visible. With the "<a href="http://timewitharduino.blogspot.com/2018/08/display-abstraction-layer.html" target="_blank">Display Abstraction Layer</a>" already in place, software support should be easy to integrate, since controlling it with the <a href="https://www.adafruit.com/product/1427" target="_blank">HT16K33 breakout</a> allows the re-use of the above mentioned Adafruit LED backpack library. For maximum compatibility, I followed the same wiring, then connected the two extra segments, A2 and D2, to pin 10 (not connected for the 14-segment backpack) and pin 11 (connected to the DP), respectively.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii2vuFSEjytX6TRgLixgnw27oR1-d49lkKO9hHu__eoKaUhK4vr-ESThcQQmrpKqwnp3oT9I1qIzqLGU3R7eB8nu9mFyfNyjzkHeryt7t57QSDm1MfrH-Yg2LmQ8k9Y5K4T4HOSHH6ZZ9X/s1600/8x16.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii2vuFSEjytX6TRgLixgnw27oR1-d49lkKO9hHu__eoKaUhK4vr-ESThcQQmrpKqwnp3oT9I1qIzqLGU3R7eB8nu9mFyfNyjzkHeryt7t57QSDm1MfrH-Yg2LmQ8k9Y5K4T4HOSHH6ZZ9X/s400/8x16.JPG" width="400" /></a></div>
<br />
I added a new class, Alphanum8x16, to the original files (Adafruit_LEDBackpack.h and cpp) to control the extra segments:<br />
<br />
<pre><blockquote class="tr_bq">
class Alphanum8x16 : public Adafruit_AlphaNum4
{
public:
void writeDigitAscii(uint8_t n, uint8_t ascii);
};</blockquote>
</pre>
<pre><blockquote>
void Alphanum8x16::writeDigitAscii(uint8_t n, uint8_t a)
{
uint16_t font = pgm_read_word(alphafonttable+a);
displaybuffer[n] = font;
//--------------------------------------------------------
// this is the Adafruit mapping of digits to segments:
// 0 DP N M L K J H G2 G1 F E D C B A
//
// this is the 16 seg mapping of digits to segments:
// A2 D2 N M L K J H G2 G1 F E D1 C B A1
//
// bits:
// 1 1 1 ... ... 1 0
// 5 4 3
//
// Note: DP is not connected/controlled for the 16 seg;
//--------------------------------------------------------
// if A1 (bit 0) is on, set A2 (bit 15) as well;
if (font & 1)
displaybuffer[n] |= 0x8000;
// if D1 (bit 3) is on, set D2 (bit 14) as well;
if (font & 8)
displaybuffer[n] |= 0x4000;
}</blockquote>
</pre>
The 8x16-segment display is implemented in class DisplayHT16K33 in the WiFiChron software.<br />
So far, WiFiChron can support the following displays (defines in DAL.h):<br />
<br />
//#define DISPLAY_HDSP2534<br />
//#define DISPLAY_DL1414<br />
#define DISPLAY_HT16K33<br />
//#define DISPLAY_OLED<br />
//#define DISPLAY_HT1632<br />
//#define DISPLAY_MAX6955<br />
<div>
<br /></div>
<div>
In principle, any display that can show 8 characters can be used through DAL.</div>
<div>
<br /></div>
<div>
<br /></div>
FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com0tag:blogger.com,1999:blog-1523577297508817869.post-322413832390942372019-03-17T15:16:00.001-04:002019-07-09T23:08:33.014-04:00Debugging the IN-17 Nixie clock (aka "Rothko clock")This weekend I felt like doing something, which rarely happens lately. From the pile of semi-failed ("started but not finished", "finished but not working", "not fully functional" etc.) I picked the <a href="http://timewitharduino.blogspot.com/2013/11/another-nixie-clock.html" target="_blank">Nixie clock with 6 IN-17 tubes</a>. Its problem was that it did not display any 6 nor 7, on all tubes. A quick check with the meter showed, indeed, a short between 2 neighbor pins. Upon visual inspection (not as easy as it used to be) and with a lot of luck (and magnification), I found the culprit: one tube in the middle of them all had two pins crossed (inverted), as shown in the photo below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgynmEKhwHirRbKzuYDyCzTIlQ8YuwE_L92AEuva3OoiRZTbSt0zlNXUwMrfRdMOMAyjRQxanGdasqTvzfFaj3lbBWEbtSYCdo9VcG5YweTMBC2mx2vF_PRGnofjnTdVTIG3YPSOyxSJlOU/s1600/crossed_pins.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1088" data-original-width="1600" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgynmEKhwHirRbKzuYDyCzTIlQ8YuwE_L92AEuva3OoiRZTbSt0zlNXUwMrfRdMOMAyjRQxanGdasqTvzfFaj3lbBWEbtSYCdo9VcG5YweTMBC2mx2vF_PRGnofjnTdVTIG3YPSOyxSJlOU/s320/crossed_pins.jpg" style="cursor: move;" width="320" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6xpmpdfTStXZI6EdRPMho_ECiyEweMo7r2oPcf8FckmtGVU3y3iOWfjK4GBIbHXJRi0vvu1_2lA9hK8phNepAqM8cWYiv4v3HXzyVehpnikQNAGdAMTxp7Mh8JbLPLibDdSIJSwkUyCnO/s1600/in-17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="303" data-original-width="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6xpmpdfTStXZI6EdRPMho_ECiyEweMo7r2oPcf8FckmtGVU3y3iOWfjK4GBIbHXJRi0vvu1_2lA9hK8phNepAqM8cWYiv4v3HXzyVehpnikQNAGdAMTxp7Mh8JbLPLibDdSIJSwkUyCnO/s1600/in-17.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Here is the board with the IN-17 removed.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJ98S7_KiGDGlHf24-jgqSpux2RTb2sIpZ18-DspOwjalqfv4G3B7Sf2-2wIVghn8anWb1Ix-B_1guuiDT7YfdJRs_fys8etm6ij2la3XSV1yVQPC4ei7WiTrh8qcG_T0y59S0bYPzf2_/s1600/nixie-out.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJ98S7_KiGDGlHf24-jgqSpux2RTb2sIpZ18-DspOwjalqfv4G3B7Sf2-2wIVghn8anWb1Ix-B_1guuiDT7YfdJRs_fys8etm6ij2la3XSV1yVQPC4ei7WiTrh8qcG_T0y59S0bYPzf2_/s320/nixie-out.JPG" width="320" /></a></div>
<br />
Since it was impossible for me to re-insert the old short-pined IN-17 (because of the tight space), I had to use a new one. Everything turned out well in the end.<br />
<br />
Now onto the usability of this pretty Nixie clock. The only way to set the time is to send commands from a Bluetooth device (phone, tablet). This is not very "user friendly", nor quick, is it? The obvious "remedy" to this situation was to add a couple of buttons on top, where they can be easily pressed. As you may know from <a href="http://timewitharduino.blogspot.com/2013/11/another-nixie-clock.html" target="_blank">my old post</a>, the high voltage (170V) for powering the IN-17 tubes is generated in the same top-of-the-board area, definitely not a good place for fingers. The solution was to use a longer piece of prototyping PCB to cover the danger zone.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggNt49gvrHw84xA-JiZfxvdpuGvq2ewQoxaEiZYdy7T7X56GkRXT5nrVdcYpCWT51nBLf-M19fLklJN4-DNEHq6TeGhwyO5UI0FMZygLTUInMR7g7sKCYfvv7V2HW_JcYhqrULfaUZjsIg/s1600/buttons.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggNt49gvrHw84xA-JiZfxvdpuGvq2ewQoxaEiZYdy7T7X56GkRXT5nrVdcYpCWT51nBLf-M19fLklJN4-DNEHq6TeGhwyO5UI0FMZygLTUInMR7g7sKCYfvv7V2HW_JcYhqrULfaUZjsIg/s320/buttons.JPG" width="320" /></a></div>
<br />
As in most simple clocks, the right button increments the minutes, the left one increments the hours, while the seconds are always reset.<br />
<br />
I also added a hardware "12 hour mode" through the use of a jumper placed at the bottom of the board:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcsuzeekDCB93RmojpHWPu53Dzhc6RdhL38mwSszH_H_bsZoESUy3EhoQ2IHVyz3ofpIAfEGO0mv7-o6Xbo7FDtltDceAjejIRuRrIyD6vevDjhOpOstBx4r5HMSv43JCq3EL3eyMBE1d/s1600/Mode12H.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFcsuzeekDCB93RmojpHWPu53Dzhc6RdhL38mwSszH_H_bsZoESUy3EhoQ2IHVyz3ofpIAfEGO0mv7-o6Xbo7FDtltDceAjejIRuRrIyD6vevDjhOpOstBx4r5HMSv43JCq3EL3eyMBE1d/s320/Mode12H.JPG" width="320" /></a></div>
<br />
With the jumper off, the clock shows military time (the hours between 0 and 23).<br />
<br />
Unlike the <a href="http://timewitharduino.blogspot.com/2013/11/another-nixie-clock.html" target="_blank">first version</a>, this new Nixie clock, which I shall name <b>"Rothko clock"</b> from now on, uses just 2 boards: <a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank"><b>wsduino</b></a> (with on-board RTC and XBee support, assembled for 9V power) and the Nixie shield itself. The 2-button hack should be made somehow permanent, probably by adding them onto the Nixie shield, similar to the <a href="http://timewitharduino.blogspot.com/2011/08/new-in-store-bi-color-led-mini-display.html" target="_blank"><b>LED matrix mini display shield</b></a> used in the <a href="http://timewitharduino.blogspot.com/2019/02/mondrian-clock-software-release.html" target="_blank"><b>Mondrian clock</b></a>. Also note that the alarm feature won't work (although implemented in the code, <a href="https://drive.google.com/file/d/1iYnclpDuguj_Zz53tsGJsxTy8xpIH4H-/view?usp=sharing" target="_blank">shared here</a>) since there is no buzzer. Bluetooth should still work with a BTBee module plugged into its <b><a href="http://timewitharduino.blogspot.com/2015/07/introducing-wsduino.html" target="_blank">wsduino</a></b> socket.<br />
<br />
Interestingly, after all these years, one "new old stock" IN-17 Nixie tube can still be bought on ebay for about $7 (compared with about $2 for the bigger <a href="https://www.google.com/search?rlz=1C1CHBF_enCA770CA770&biw=1267&bih=888&tbm=isch&sa=1&ei=JJ6OXIjDLKa7tgWWyIb4Cg&q=in-12+nixie+tubes&oq=in-12+nixie+tubes&gs_l=img.3..0i24.22326.22326..23236...0.0..0.71.71.1......1....1..gws-wiz-img.2fmIG8PVug0" target="_blank">IN-12</a>s).<br />
<br />
Here are a few more detail photos on the wires that connect the buttons:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP2oL7-bZyllK181BFnH0Wu1ykuRCVuCkmhY1JuZcj4YrmKXiCDqOQ4k2weFlT7MGMJUbfknLyit1IoWDrjtLgsh-aQotpdxx6Qj2Wv0FaeOSbI1GywV4s03PuY4pnLQ0cs2XnouMpIujn/s1600/wires3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP2oL7-bZyllK181BFnH0Wu1ykuRCVuCkmhY1JuZcj4YrmKXiCDqOQ4k2weFlT7MGMJUbfknLyit1IoWDrjtLgsh-aQotpdxx6Qj2Wv0FaeOSbI1GywV4s03PuY4pnLQ0cs2XnouMpIujn/s320/wires3.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOMV6G6clc4t3xY7bH0qJuABR29LYcUlS8VJsSPi_PMc8LFbChUPaPSZEicONJcGYzS8hmrXoiGGuqWRvICXn0DYJC2tWCWHTufSaeDjoxJXIOyP7pZwwJCDX14jsDvZulzA2r99_HlKiZ/s1600/detail_buttons.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOMV6G6clc4t3xY7bH0qJuABR29LYcUlS8VJsSPi_PMc8LFbChUPaPSZEicONJcGYzS8hmrXoiGGuqWRvICXn0DYJC2tWCWHTufSaeDjoxJXIOyP7pZwwJCDX14jsDvZulzA2r99_HlKiZ/s320/detail_buttons.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBfGfFLdh11BxRbAom1tuzvuc_tDdkF8I0b5wfjCupnL9FrAYbWI4Vkb7LZUZIl0MJlTU90kM1hNKXhBkpt07dJYWjYmXxAwhCBWtuUodwc-qK6_DZrMmjy2pE2TdouNYiUTPqBL69l-0/s1600/wires2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTBfGfFLdh11BxRbAom1tuzvuc_tDdkF8I0b5wfjCupnL9FrAYbWI4Vkb7LZUZIl0MJlTU90kM1hNKXhBkpt07dJYWjYmXxAwhCBWtuUodwc-qK6_DZrMmjy2pE2TdouNYiUTPqBL69l-0/s320/wires2.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpoJwfZY0JJhmmpaqx3uflwb2Sp4pSzJFaN2QMX8dc7NAuIOx2fGL-sBkli6r78S78otyhI_tbOFrv1daJxskgPKCQJqMcBEa0t99E5L3JxykGdF8mhH41iqCygqR7XeG9T1eh_J5WUc9c/s1600/wires1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpoJwfZY0JJhmmpaqx3uflwb2Sp4pSzJFaN2QMX8dc7NAuIOx2fGL-sBkli6r78S78otyhI_tbOFrv1daJxskgPKCQJqMcBEa0t99E5L3JxykGdF8mhH41iqCygqR7XeG9T1eh_J5WUc9c/s320/wires1.JPG" width="320" /></a></div>
<br />
The hour buttons (on the left) is connected to A1.<br />
The minutes button (right side) is connected to A0.<br />
The "12/24H mode" header pins (with jumper, at the bottom side of the board) are connected to A2 and GND. Jumper on means pin A2 to the ground, thus enabling 12H mode.<br />
<br />
<br />
<br />FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com3tag:blogger.com,1999:blog-1523577297508817869.post-73633068058556744522019-03-03T20:46:00.000-05:002019-03-17T15:27:15.137-04:00Wise Clock 4 - March 2019 software releaseA long overdue (3+ years since the <a href="http://timewitharduino.blogspot.com/2016/02/new-wise-clock-4-software-release.html" target="_blank">previous one</a>!?) release of the Wise Clock 4 software is <a href="https://drive.google.com/file/d/1w82ATnEvawyjbaRzZF3k6L13ZHcnPsa0/view?usp=sharing" target="_blank">finally here</a>. This one compiles on Arduino 1.6.7 (and later) and has a few code improvements, most of them courtesy of MikeM:<br />
<div>
<ul>
<li>created a <a href="http://timewitharduino.blogspot.com/2018/08/display-abstraction-layer.html" target="_blank">display </a><a href="http://timewitharduino.blogspot.com/2018/08/display-abstraction-layer.html" target="_blank">abstraction layer</a> that will allow porting the display functions away from HT1632 Sure displays, eventually; essentially, any new "compatible" (min 16x32 resolution) display can be supported by implementing the set of functions declared in DisplayBase.h; currently, the HT1632 functions are defined in DisplayHT1632.cpp class;</li>
<li>eliminated the need to set the day-of-week, which is now calculated from date (Zeller method);</li>
<li>introduced the option to use MiniGPS class instead of TinyGPS, which saves some program memory and also RAM; the improved GPS code uses now a new setting in messages.txt (utc.offset);</li>
<li>some bug fixes related to buffer overruns when getting the weather RSS data; Mike discovered this issue after switching to a new weather service (http://www.rssweather.com/zipcode/27612/rss.php), since the old one (e.g. http://w1.weather.gov/xml/current_obs/KRDU.rss) is no longer supported (protocol was changed to https, which cannot be handled by the current ESP8266 class);</li>
</ul>
<div>
As a reminder note (for myself), the ESP8266 and GPS-related changes mentioned above should also find their way into the <a href="http://timewitharduino.blogspot.com/2015/03/wifichron-with-software-support-for.html" target="_blank">WiFiChron</a> code, sometime.</div>
</div>
<div>
<br /></div>
<div>
Recently, Nick sent this photo of his stack (stash?) of WiFiChrons.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw_KX2QjDK3PxnFJinZ1LzlMOgDMtamFbsYmuO9F3wLXhgmG-AU4ERTlY_gYwhAnFKcL6kfJmgcVLV-V9vMW5EDQ3sP5Hrhy8FdX9KhaZrgjwjIrMQjOhnxDcskKoYJn_yW9t-qNnA4wmu/s1600/Nick.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="694" data-original-width="567" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw_KX2QjDK3PxnFJinZ1LzlMOgDMtamFbsYmuO9F3wLXhgmG-AU4ERTlY_gYwhAnFKcL6kfJmgcVLV-V9vMW5EDQ3sP5Hrhy8FdX9KhaZrgjwjIrMQjOhnxDcskKoYJn_yW9t-qNnA4wmu/s320/Nick.jpg" width="261" /></a></div>
<div>
<br /></div>
FlorinChttp://www.blogger.com/profile/04330573900125042405noreply@blogger.com2