åçŽãªæ¹æ³ãæ¢ããŠããã®ã§ã¯ãããŸããã

以åãããã¯ç§ã®æåã®åºçç©ã§ãHabrã®ãŠãŒã¶ãŒã®éã§å ±é³ŽãåŒãèµ·ãããŸããã åæ¢ããªãããšã«ããŸããã ATtiny13ããäžå¯èœãçµãåºãç¶ããŠããŸãã ããã«èŠåããŸãã説æãããŠãã解決çã¯åã³éæšæºã§ããã誰ããinããèªç¥çäžååãåŒãèµ·ããå¯èœæ§ããããŸãïŒããããŠãèšäºã®ãã€ã³ãã¯äœã§ããïŒã©ã®èŠçŽ ãæ¥ç¶ã§ãããã瀺ããŸããïŒãïŒã ããã«ããã®ãããªè§£æ±ºçãå®éã«ã¯éå®çšçã§ããããã«ã€ããŠã¯ã以äžã§è©³ãã説æããŸãã ããããæšæºãœãªã¥ãŒã·ã§ã³ãé·ãéç¥ãããŠããããããã«ã€ããŠèªãããšã¯å¿ ãããé¢çœããããŸããããæžãããšã¯æ©ç¥ããã§ãã
ç§ã¯ãã®åäŸATtiny13ãæ¬åœã«å¥œãã§ãã 圌ã¯å€ãã®å®¶åºåé¡ã解決ããã®ã«ååãªé è³ãæã£ãŠããŸãïŒç §æãã€ããŠãææ°ããã
ãã€ã¯ãã³ã³ãããŒã©ãŒã®ããã°ã©ãã³ã°ãç 究ããéçšã§ïŒArduinoç°å¢ã§ã¯ã誰ã«ãèšããªãã§ãã ããïŒç§ã¯ãå€ãã®äººãšåæ§ã«ã次ã®ãããªè¶ é³æ³¢è·é¢ã»ã³ãµãŒãæ¥ç¶ããã¹ããããééããŸããã

ã»ã³ãµãŒããã³ã³ãããŒã©ãŒã«æ å ±ãéä¿¡ããæ¹æ³ã¯äžåèªã§ãããããATtiny13ã¯ããã«ç°¡åã«å¯ŸåŠããŸãã 次ã«ãã·ããã¬ãžã¹ã¿ã䜿çšããŠ7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒã«æ å ±ã衚瀺ããå¿ èŠããããŸããã ã€ãŸãã衚瀺éšåã®ã¹ããŒã ã¯ã³ã³ãããŒã©ãŒèªäœã®æ°åã§ããã ãã®ç¬éãç§ã¯ãã¡ãã¡ã§éãã§åããŸããã
æè¿ãç§ã¯ããã£ã³ã«ã«å²ãåœãŠãã®ã«å§åçãªä»äºã¯ä»ã«ããã ãããšæããŸãããïŒ èª¬æãããäŸã§åœŒå¥³ããŸã åŠçã§ããªãã£ãããšã é©å¿çã«ã€ããŠæåã«æãåºããããšã ãã°ããåã«ãç§ã¯ãã§ã«åæ§ã®ãããã¯ã«é¢ããæ å ±ãæ¢ããŠããŸããã ããããç§ã¯ãã®ãããªèå³æ·±ã ãªãã·ã§ã³ãèŠã€ããŸããã
åç

ã³ã³ãããŒã©ãŒã®5ãã£ãŒããã21ã»ã°ã¡ã³ãã ããïŒ ããŸãå¿ èŠãããŸããã2ã€ã®æšèã§ååã§ãããã«1ã€ã®ããããåèš15ã»ã°ã¡ã³ãã§ãã ãããŠã4æ¬ã®è¶³ã§ïŒ 次ã«ãæ倧13ã»ã°ã¡ã³ããååŸããŸãããååã§ã¯ãããŸããã åè·¯ãèŠããšãããã«çµã¿ç«ãŠãŠè©ŠããŠã¿ãããšããèŠæãçããŸããããæäœã¢ã«ãŽãªãºã ãäœæããã®ã¯ç°¡åã§ã¯ãããŸããã ããããããèŠããšãããªãã¯ãããåéããã®ã«åœ¹ç«ããªãããšãç解ããŸãããã®ãããª7ã»ã°ã¡ã³ãã®åç©ã¯èªç¶ã«ã¯ååšããŸããïŒã»ãšãã©ã®å ŽåïŒã ãã¡ããäœæã§ããŸãããããã¯ç°ãªãã¬ãã«ã§ãã ãã®åŸãã¢ã€ãã¢ã¯ããè¯ãææãŸã§å»¶æãããŸããã
ãªããããã¯ïŒçµ±åããžãã¯ãæã€7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒããªãã®ã¯ãªãã§ããïŒ éçºè ã¯ã©ããèŠãŠããŸããïŒ ã€ã³ã¹ããŒã«ãšå¶åŸ¡ã®äŸ¿å©ã-2ã€ã®é»æºã¬ãã°ãš3ïŒ1ã2ïŒããŒã¿ã¬ãã°ã ãããŠçµå±ã®ãšããã圌ãã¯ãœé£ã«ããããïŒ490IP1ã490IP2ã 2ã4æ¡ã®æãäžè¬çãªã€ã³ãžã±ãŒã¿å ã«ã¯ããããã®ãã€ã¯ãåè·¯ãé 眮ããããã®ååãªã¹ããŒã¹ããããã·ããã¬ãžã¹ã¿ã®äŸ¡æ Œã¯ã±ãŒã¹ãšãšãã«0.064 cuã§ãã ãŸãã
ãããŠãç§ã¯åã³èããŸããã7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒã§äœæ¥ããããã®èã®æ°ãæžããæ¹æ³ïŒ ã³ã³ãããŒã©ãŒã®åºåã¯3ã€ã®ç¶æ ãåããŸãïŒå®éã«ã¯4ã§ãããä»ã§ã¯éèŠã§ã¯ãããŸããïŒã ããã䜿çšããæ¹æ³ã¯ãããŸããïŒ LEDã«é¢ãã2ã€ã®ç¶æ ããèŒããã®ã§ã¯ãªããèŒããã®ãšããŠã®ã¿è§£éã§ããå Žåã3ã€ã§ã¯ããå°ãèå³æ·±ããã®ã«ãªããŸãã 䜿çšæ¹æ³ã¯ãŸã ããããŸãããã次ã®ã¹ããŒã ãæãæµ®ãã³ãŸããã

ã³ã³ãããŒã©ãŒåºåããŒãç¶æ ã®å ŽåãLEDã¯ç¹ç¯ããŸããïŒããã¯æããã§ãïŒã
åºåããŠãããç¶æ ã®å ŽåãLEDãç¹ç¯ããŸããããããç解ã§ããŸãã
ãã ããåºåããŸã£ããåºåã§ã¯ãªããå ¥åã«åãæ¿ããããå Žåã2ã€ã®æµæãšLED HL1ã®åè·¯ã«é»æµãæµããæµæã®æ¥ç¶ç¹ã§çŽïŒ5-1.7ïŒ/ïŒ2.2 + 1.5ïŒã®é»å§éäžãçããŸã* 1.5 + 1.7 = 3.0Vãããã¯ãVD1_R3_HL2åè·¯ã«é»æµãæµãã«ã¯äžååã§ãïŒçŽ3.4 Vãå¿ èŠã§ãïŒã VD1ã¯ãã§ããŒãã€ãªãŒããšããŠäœ¿çšãããè¿œå ã®LEDã§ãïŒå®å®åšã®æ¹ãæ£ç¢ºã§ãïŒããããã£ãŠãæ··ä¹±ããªãããã«ãLEDãšã¯èŠãªããŸããã ãã€ã¯ãã³ã³ãããŒã©å éšã§ãã«ã¢ããæµæããªã³ã«ãªã£ãŠããŠãåé¡ãããŸããããã®æµæïŒ20 kOhmïŒã¯å®éã«ã¯ç¶æ³ã«åœ±é¿ããŸããã ããã«ãã®ãããªå®æ Œã«ã¯è³ããŸããã§ãããããã®åã«VD1ãšããŠéåžžã®ãã€ãªãŒãã䜿çšããŠã¿ãŸããããåãæµæåšR1ãšR2ã§ãååã«æ©èœããŸãã ãã ããR2ã®æ¹ãR1ã®çŽ1.5å倧ããæ¹ãè¯ãã§ãã ãããŠãç§ã¯æãéèŠãªããšãã»ãšãã©å¿ããŠããŸããã説æããããã¹ãŠã¯ãã€ã³ãžã±ãŒã¿ãšè¿œå ã®LEDã®äž¡æ¹ã§èµ€è² LEDã䜿çšããããšã«ãã£ãŠã®ã¿å¯èœã§ãã 極端ãªå Žåãã€ã³ãžã±ãŒã¿ãŸãã¯è¿œå ã®LEDãç·è²ã«é©çšã§ããŸãã ãŸãã4.5 Vã5 Vã®äŸçµŠé»å§ã§
æåŸã«äœããããŸããïŒ 3ã€ã®ç¶æ ïŒLEDãªãïŒ0ïŒãç¹ç¯ãHL1ïŒ1ïŒãç¹ç¯ããŸãã¯HL1ãšHL2ïŒ2ïŒãç¹ç¯ã äžå ç³»ã«éåžžã«äŒŒãŠããŸãã ãã ããHL1ãªãã§ã¯HL2ãç¹ç¯ã§ããŸãããããã¯èŠããŠããå¿ èŠããããŸãã ãããä»ã§ã¯ããã€ã¯ãã³ã³ãããŒã©ãŒã®4æ¬ã®èã®å©ããåããŠã8åã®LEDãå¶åŸ¡ã§ããŸãïŒç§ã¯ããæã£ãŠããŸããïŒã
次ã«ãã€ã³ãžã±ãŒã¿ãŒã»ã°ã¡ã³ãããã¢ã«åå²ããããšããŸããïŒå¹Œçšåã®ããã«ïŒç·ã®åãšå¥³ã®åïŒã äž»ãªæ¡ä»¶ã¯ãåãã¢ã§ã»ã°ã¡ã³ãã®1ã€ãããèªäœã§èŒãããšãã§ããªãããšã§ãããã®ãããªå·®å¥ã ããã«ç§ãåŸããã®ããããŸãïŒ

ã»ã°ã¡ã³ãã®4ã€ã®ãã¢ãå倧æåã§ãæ¯é çãªã»ã°ã¡ã³ãã瀺ãããŸããããã¯åç¬ã§æ©èœãã2çªç®ã®ã»ã°ã¡ã³ãã¯ããã®ã¿ã§æ©èœããŸãã ã»ã°ã¡ã³ã "a"ãäžåºŠã«2ã€ã§æªæãããã ããæªãç¹ã«éããŠããªãããšã«æ°ä»ããããããŸããã ããã¯äººçã®ããã«èŠããŸãïŒ
ãã ãããããã®ãã¢ã䜿çšãããšãïŒã»ãŒïŒãã¹ãŠã®æ°å€ã衚瀺ã§ããŸãã
åç

åãã¢ã¯ãç¬èªã®è²ã§ãã€ã³ããããŸãã æ°é ãã®ããèŠèŽè ã¯ããã¥ãŒã¹ã«äœãåé¡ãããããšã«æ°ä»ããŸããã ä»ã®ãšããããã«çŠç¹ãåãããŸããã ã»ã°ã¡ã³ããã°ã«ãŒãåããããã®ãªãã·ã§ã³ãããã€ãè©ŠããŠã¿ãŸãããã衚瀺ãããªãæ¹ãè¯ãã§ãããã ãã¶ã誰ããææ¡ããã§ãããã ããããããã¥ãŒã©ã«ãããã¯ãŒã¯ã§åŠçã§ããŸãã
å®éšã®ç¬¬2段éã§ã¯ãã¢ããŒããå ±éã®ã€ã³ãžã±ãŒã¿ãŒã䜿çšããå¿ èŠããããŸããã ãããã£ãŠãæçµçãªã¹ããŒã ã¯æ¬¡ã®ãšããã§ãã
ã¹ããŒã

誰ããå°ãããããããŸããïŒ100ãªãŒã ã®æµæã¯ã©ãã«è¡ããŸãããïŒ æ£ãã衚瀺ãããåçãªè¡šç€ºã«ãããé»æµå¶éæµæãçãããšãã§ããããšã¯é·ãéç¥ãããŠããŸãïŒãããŠç©æ¥µçã«äœ¿çšãããŠããŸãïŒã 誀ã£ãŠçŽåã«æ¥ç¶ããã2ã€ã®LEDã«ã³ã³ãããŒã©ãŒã®åºåããé»å§ãåžžã«å°å ãããŠãããã€ã¯ãã³ã³ãããŒã©ãŒãšLEDã¯éåžžããã«èããŸãããé»æµã¯MCå ã®é·ç§»æµæã«ãã£ãŠå¶éãããŸãã ãããŠãæµæåšã«ã€ããŠã®è©³çŽ°ã åã®ã¹ããŒã ã«åŸã£ãŠHL1ãæµããæ倧é»æµã¯çŽ2 mAã§ãããHL2ãæµããæ倧é»æµã¯25ã40 mAã§ãïŒããããããããã®æ°å€ãã©ãããæ¥ãã®ããåŸã§èª¬æããŸãïŒã ããã¯ãç°ãªãã»ã°ã¡ã³ãã®å åºåãç°ãªãããšãæå³ããŸãã ãã ããåçãªè¡šç€ºã䜿çšããããããã»ã°ã¡ã³ãã®è¡šç€ºæéãç°ãªããããããã¯ç°¡åã«è§£æ±ºã§ããŸãã
Arduino IDEã®Arduino Nanoã§è¡ã£ããã¹ãŠã®å®éšã åªãããããã¿ã€ãã³ã°ããŒãã§ããããã¬ããããŒãã§å¿å°ãããUSBçµç±ã§åé¡ãªããã©ãã·ã¥ãããŸãã äœãã倱æããŸãããïŒ ã¹ã±ãããä¿®æ£ããããã«æ°ãããã¡ãŒã ãŠã§ã¢ãã¢ããããŒãããŸããã ãããŠãã³ãŒãããããã°ãããšãATtiny13ã®ãã¡ãŒã ãŠã§ã¢ã«ç§»åã§ããŸãããããã§ãå°ãäœã®åããå¿ èŠã§ãã
ãšããã§ãç§ã¯Arduinoç°å¢ã§Arduinoã䜿çšããŠãã©ãã·ã¥ããŠããŸããããã«ãããééã£ããã¥ãŒãºã§MKãããã¯ããå¯èœæ§ãå®è³ªçã«ãªããªããã¯ããã«ç°¡åã«ãªããŸãã
ã³ãŒãã«æ°åã®4ã衚瀺ããäŸã次ã«ç€ºããŸãã
pinMode(f_a, INPUT); // f_a digitalWrite(f_a, 1); // F pinMode(d_e, OUTPUT); // d_e digitalWrite(d_e, 1); // 1, D E pinMode(b_a, INPUT); // b_a digitalWrite(b_a, 1); // B pinMode(c_g, OUTPUT); // c_g digitalWrite(c_g, 0); // 0, C, G delayMicroseconds (150); // F, B, C, G c 150 pinMode(c_g, INPUT); // c_g digitalWrite(c_g, 1); // G , delay (time_2); // F, B, C c 2
ååãšããŠããã¹ãŠã¯Arduinoã«ç²ŸéããŠããªãããã³ã³ãããŒã©ãŒã«ã€ããŠã¯å°ãç解ããŠãã人ã«ãšã£ãŠãæ確ã§ãªããã°ãªããŸããã 150ãã€ã¯ãç§ãš2ããªç§ã®æ°å€ã¯ãã»ã°ã¡ã³ãã®æããã«ãã£ãŠå®éšçã«éžæãããŸãã æçµçãªã³ãŒãã§ã¯ããããã°äžã«å€æŽã§ããããã«ãåå¥ã®å€æ°ã«é 眮ããå¿ èŠããããŸãã ãããã®å³ããã1ã€ã®ãã¢ã®2ã€ã®ã»ã°ã¡ã³ãã«ãŸãããé»æµã®å·®ã®é åºãè¿äŒŒçã«æ±ºå®ããããšãã§ããŸãã Gã»ã°ã¡ã³ãã¯ä»ã®ã»ã°ã¡ã³ããããçŽ13åãæãããåãèŒåºŠãæäŸããããããã®ã»ã°ã¡ã³ããæµããé»æµã¯ä»ã®ã»ã°ã¡ã³ãããã13å倧ãããšæ³å®ã§ããŸãã å®éãèŒåºŠã®é»æµäŸåæ§ã¯éç·åœ¢ã§ãããããé»æµã¯25åãã€ãŸã50 mAã«ãªããŸãã ãã®ãããªãã¥ãŒãã£ãµã€ã¯ã«ã䜿çšããããšã¯ãMKã®åºåã«ãšã£ãŠéåžžã«å®å šã§ãã ãšããã§ãå³2ã®åé¡ã解決ãããšãããã®é»æµã®éããæã«ããããŸããäžã§æžããããã«ãã»ã°ã¡ã³ãGã¯ã»ã°ã¡ã³ãCã§ã®ã¿ç §ããããšãã§ããŸããããããCãšG 1ãç¶æããããã«2ããªç§ãGã»ã°ã¡ã³ãã¯å®å šãªæããã§ãåäœãããCã»ã°ã¡ã³ãã¯åã150ãã€ã¯ãç§ã®éãããããªæéããç¹ç¯ããŸããã ã»ãŒ2ã€ã«ãªããŸãã ãããã£ãŠãç§ã¯èªåã§ç¢ºç«ããã«ãŒã«ãç Žãããšã«æåããŸããã 絶æããäœãã§ããªãã®ãã
ãã®ãããMKã®4æ¬ã®è¶³ã§äººç©ãç §ãããŸããã å®éãç§ã¯èªåã§ãã®ã¹ããŒãžãéããããã«2人ã®ãã£ã©ã¯ã¿ãŒã衚瀺ããŸããã ãããè¡ãã«ã¯ããã¯ãŒãã©ã¹ããã€ã³ãžã±ãŒã¿ãããã®1ã€ã®å ±éã¢ããŒãã®åºåãåæããMCã®å¥ã®ãã³ã«æ¥ç¶ããä»ã®æŸé»ã®ã¢ããŒãã次ã®åºåïŒæ¢ã«6ã¬ãã°ïŒã«æ¥ç¶ããŸãã 次ã«ãæäžäœæ¡ã®ã¢ããŒãã«1ãèšå®ããæäžäœæ¡ã®ãã£ãžããã衚瀺ãã次ã«æäžäœæ¡ã®ã¢ããŒãã«1ãèšå®ããæäžäœæ¡ã®ãã£ãžãããåã§è¡šç€ºããŸãã ãã®å®éšã¯Arduino Nanoã§å®æœããŸãããã足ã¯ååã§ãã åããŠã§ã¯ãªãããã¹ãŠã®ã³ãŒãããããã°ãããŸããã ãããŠãããã¯ããããã¹ãã ã£ãã
ã¹ããŒã

ã¢ããŒãã¯é çªã«æ¥ç¶ãããŠãããããåçŽãªæ¹è¯ã«ãããMKã®ãã1ã€ã®åºåã解æŸã§ããŸãã æŠèŠå³ã¯æ¬¡ã®ãšããã§ãã
ã¹ããŒã

åèš5èMKã䜿çšããŠã2æ¡ã®æ°åã衚瀺ããŸãã ãã®æç¹ã§ãããªãã¯ãã§ã«èµ€ã¡ããã®ATtinyã§è©Šãããšãã§ããŸãã ç§ããã£ãã ããããããã§ã¯ãããŸããã ATtiny13çšã«Arduinoç°å¢ã§ã³ã³ãã€ã«ãããã¹ã±ããã¯ãçŽ1.7 kBã®ã¡ã¢ãªãš1 kBã®ç©ºã容éãå æããŸããã ãµã€ãºãå°ããããã«ã¯ãããŒããçŽæ¥æå¹ã«ããå¿ èŠããããŸããããããã¯åŸã§è¡ããŸãã ãšããã§ãArduinoã§ã¯ãATtinyã§äœ¿çšããã®ãšåãããŒãã䜿çšããŸãããéåžžã«äŸ¿å©ã§ãã ãããã¯ãã§ã«æåŸã®å³ã«ç€ºãããŠããŸãã åŠçåŸãã³ãŒãã¯1ãããã€ãã倱ããŸããã
ATtiny13ã®çµæã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
ã³ãŒã
#define time_2 2 // , #define time_3 150 // , byte in1_; byte in2_; int disp_; int d_ = 0; void setup() { } void loop() { d_ = d_ + 1; if (d_ > 150) { // 150 1 d_ = 0; disp_ = disp_ + 1; if (disp_ > 99)(disp_ = 0); // 0 99 } in2_ = disp_ / 10; // - 10 in1_ = disp_ % 10; // 10 } switch (in1_) { case 0: DDRB = B00001111; PORTB = B00010000; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 1: DDRB = B00000111; PORTB = B00000110; delay (time_2); break; case 2: DDRB = B00011111; PORTB = B00000010; delayMicroseconds (time_3); DDRB = B00010011; PORTB = B00010010; delay (time_2); break; case 3: DDRB = B00011011; PORTB = B00000110; delayMicroseconds (time_3); DDRB = B00000011; delay (time_2); break; case 4: DDRB = B00010101; PORTB = B00001110; delayMicroseconds (time_3); DDRB = B00000101; delay (time_2); break; case 5: DDRB = B00011011; PORTB = B00001100; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 6: DDRB = B00011111; PORTB = B00001000; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 7: DDRB = B00001111; PORTB = B00010110; delayMicroseconds (time_3); DDRB = B00000111; delay (time_2); break; case 8: DDRB = B00011111; PORTB = B00000000; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 9: DDRB = B00011011; PORTB = B00000100; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; } switch (in2_) { case 0: DDRB = B00001111; PORTB = B00010001; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 1: DDRB = B00000111; PORTB = B00000111; delay (time_2); break; case 2: DDRB = B00011111; PORTB = B00000011; delayMicroseconds (time_3); DDRB = B00010011; PORTB = B00010011; delay (time_2); break; case 3: DDRB = B00011011; PORTB = B00000111; delayMicroseconds (time_3); DDRB = B00000011; delay (time_2); break; case 4: DDRB = B00010101; PORTB = B00001111; delayMicroseconds (time_3); DDRB = B00000101; delay (time_2); break; case 5: DDRB = B00011011; PORTB = B00001101; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 6: DDRB = B00011111; PORTB = B00001001; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 7: DDRB = B00001111; PORTB = B00010111; delayMicroseconds (time_3); DDRB = B00000111; delay (time_2); break; case 8: DDRB = B00011111; PORTB = B00000001; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 9: DDRB = B00011011; PORTB = B00000101; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; } DDRB = B00011111;// PORTB = B00011110; delay (5); }
äžèšã®ã³ãŒãã«ãããATtiny13ã¯0ãã99ãèªã¿åãããšãã§ããŸããMKã¬ãã°ãåå²ãåœãŠããå¯èœæ§ãæäŸããæ¹ãããé©åã§ãã ããã°ã©ãã³ã°ã®é人ã¯ãã³ãŒããæ°åæžããããšãã§ããŸãïŒ AVRã®Hello Worldã®æå°å¶éã¯ã©ãã§ããïŒ ïŒã
MKãæèçãªãã®ã衚瀺ããããã«ãå¿ èŠãªæ©èœãã³ãŒãã«è¿œå ã§ããŸãã 確ãã«ããã£ã³ãã¯ãã§ã«ãã¹ãŠã®è¶³ãå æããŠããŸãã å ¥å/åºåããŒããšããŠäœ¿çšã§ãããªã»ããã¬ãã°ããããŸãã ããããããã䜿çšããããšã¯æã£ãããå°é£ã§ããã ãããã£ãŠãç§èªèº«ã¯ãåŸã§ããæ®ããŸãã ãããã誰ããç¥ã£ãŠããããã§ã¯ãªãèå³æ·±ãæ©èœããããŸãã ADC0ã¢ããã°å ¥åã¯åãã¬ãã°ã«åºåãããæ©èœããŸãïŒ ç¢ºãã«ããã®é»å§ãé»æºé»å§ã®1/4æªæºã«ãªããšãMKã¯ãªã»ããã¢ãŒãã«ãªããŸãã ãããã1/4ããäŸçµŠé»å§ãŸã§ãå ¥åé»å§ã枬å®ããããšã¯ããªãå¯èœã§ãã ç§ã¯ãããå©çšããŸããïŒ
ã³ãŒã
#define time_2 2 // , #define time_3 150 // , byte in1_; byte in2_; int disp_; int d_ = 0; void setup() { } void loop() { d_ = d_ + 1; if (d_ > 50) { // 50 ... d_ = 0; disp_ = analogRead(A0) / 10; // ... , 10, . if (disp_ > 99)(disp_ = 99); in2_ = disp_ / 10; // - 10 in1_ = disp_ % 10; // 10 } switch (in1_) { case 0: DDRB = B00001111; PORTB = B00010000; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 1: DDRB = B00000111; PORTB = B00000110; delay (time_2); break; case 2: DDRB = B00011111; PORTB = B00000010; delayMicroseconds (time_3); DDRB = B00010011; PORTB = B00010010; delay (time_2); break; case 3: DDRB = B00011011; PORTB = B00000110; delayMicroseconds (time_3); DDRB = B00000011; delay (time_2); break; case 4: DDRB = B00010101; PORTB = B00001110; delayMicroseconds (time_3); DDRB = B00000101; delay (time_2); break; case 5: DDRB = B00011011; PORTB = B00001100; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 6: DDRB = B00011111; PORTB = B00001000; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 7: DDRB = B00001111; PORTB = B00010110; delayMicroseconds (time_3); DDRB = B00000111; delay (time_2); break; case 8: DDRB = B00011111; PORTB = B00000000; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 9: DDRB = B00011011; PORTB = B00000100; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; } switch (in2_) { case 0: DDRB = B00001111; PORTB = B00010001; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 1: DDRB = B00000111; PORTB = B00000111; delay (time_2); break; case 2: DDRB = B00011111; PORTB = B00000011; delayMicroseconds (time_3); DDRB = B00010011; PORTB = B00010011; delay (time_2); break; case 3: DDRB = B00011011; PORTB = B00000111; delayMicroseconds (time_3); DDRB = B00000011; delay (time_2); break; case 4: DDRB = B00010101; PORTB = B00001111; delayMicroseconds (time_3); DDRB = B00000101; delay (time_2); break; case 5: DDRB = B00011011; PORTB = B00001101; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 6: DDRB = B00011111; PORTB = B00001001; delayMicroseconds (time_3); DDRB = B00001001; delay (time_2); break; case 7: DDRB = B00001111; PORTB = B00010111; delayMicroseconds (time_3); DDRB = B00000111; delay (time_2); break; case 8: DDRB = B00011111; PORTB = B00000001; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; case 9: DDRB = B00011011; PORTB = B00000101; delayMicroseconds (time_3); DDRB = B00000001; delay (time_2); break; } DDRB = B00011111;// PORTB = B00011110; delay (5); }
çµéšã«ããã°ãã€ã³ãžã±ãŒã¿ãŒã21ãŸã§æžããããšãã§ããã®ã¯ãMKããªã»ããã¢ãŒãã«åãæ¿ãããçŽ25以äžã«æ»ã£ããšãã«æ©èœãå§ããããšã§ãã ãã®ããã枬å®å ¥åã«ãã£ãã€ããŒã䜿çšãããšã25ã99ãã«ãã®é»å§ã瀺ãããã®éåžžã«ééã£ããã€ã³ãžã±ãŒã¿ãŒããäœæããããšãã§ããŸãã
次ã«ãå®çšçãªã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠèª¬æããŸãã è·é¢ã»ã³ãµãŒããã®ããŒã¿ã衚瀺ãããšããåœåã®ã¢ã€ãã¢ã¯ã1ã€ã®ããžã¿ã«å ¥åãäžè¶³ããŠãããããããè¯ãææãŸã§å»¶æãããŸããã ã¢ã€ãã¢ãæ¥ããŸã§ããªãä»ã«ã¹ããŒã ãé©çšã§ããã®ã§ããããã ãã1ã€ã®æ³šæç¹ïŒåçæ§ã«çåã®äœå°ã¯ãããŸããã ãã¹ãŠã®ã»ã°ã¡ã³ããå®æžãããšããŠããæµæåšR2ã«ã¯2.5 mAã®é»æµãæµãïŒæåã®ã¹ããŒã ã«åŸã£ãŠïŒãåèš10 mAãã€ã³ãžã±ãŒã¿ã«æµããããã«ãã©ã³ãžã¹ã¿ã®å¶åŸ¡ã«ããçŽ5ãè¿œå ãããŸãã èšåããªãã£ãããã»ãŒãã¹ãŠã®pnpã®ãã©ã³ãžã¹ã¿ã¯è¿ä»£çã ã
䟿å®ã«ã€ããŠã 7ã€ã®ã»ã°ã¡ã³ãã«åºåããæãå®äŸ¡ãªãªãã·ã§ã³ã¯ãATtiny13ãš74HC595ã§ãã 2ã€ã®SMDã±ãŒã¹ã®è²»çšã¯çŽ0.50 cu æãåçŽãªã®ã¯ATmega8ïŒããã ãã§ããæµæåšã¯ãããŸããããã以äžïŒã0.68 cuã§ã ãŸããäžèšã®ãªãã·ã§ã³ã¯ATtinyã9åã®æµæã4åã®LEDããã©ã³ãžã¹ã¿ïŒãã¹ãŠSMDïŒã®ã³ã¹ãã§ããããã¯çŽ0.46 cuã§ãã ããã«ããã¹ãŠããŸãšããããšã¯ã以åã®ããŒãžã§ã³ãããè€éã§ãã
å®éãç§ãèŠãå¯äžã®ãªãã·ã§ã³ã¯ãããªããå®å šãªATtiny13ãæã£ãŠãããã©ããã§ãããããã§ãããªãã¯ATmegaã®åºã«è¡ãå¿ èŠããããŸãã 7ã»ã°ã¡ã³ãã€ã³ãžã±ãŒã¿ãŒãããã€ã¹ã®äž»èŠãªè£ 食ã§ããå Žåããã®ã¹ããŒã ã¯ãå§ãããŸããã衚瀺ã¯å®å šã§ã¯ãªããããã€ãã®çµã¿åããã§ã¯ãäžèŠãªã»ã°ã¡ã³ãããããã«åŒ·èª¿è¡šç€ºãããŸãã èšå®æã«å Žæã®è¡šç€ºãå¿ èŠãªå Žåããããå Žæèªäœãå¿ èŠãªå ŽåããããŸãã
äžè¬ã«ãç§ã¯æ°æ¥éç¡é§ã«éãããŸããã
æ¹å€ã«å ããŠãã³ãŒããæ¹åããŠã¹ããŒã ãç°¡çŽ åããããã®ææ¡ãåŸ ã£ãŠããŸãã ãŸãã¯ãè€éåããããšãªãæ©èœãæ¹åããŸããã ç§ãæãèå³ãæã£ãŠããã®ã¯ããã€ã³ããç §ããæ¹æ³ã§ããããã«ããç¯å²ãåºãããŸãã ããããé¢é£ãã5ã€ãã1ã€ã®çµè«ããªãªãŒã¹ã§ããã°ãããŒãã³ã°ãå¯èœã«ãªããŸãã
ç§ã®éæšæºã®ãœãªã¥ãŒã·ã§ã³ã誰ãã®å©çã«ãªããšããããä»ã¯ãã€ãã¯å¬ããã§ãã
UPDïŒCharliplexingã«ã€ããŠç¥ã£ãŠããŸãïŒ èšäºã®åé ã§åŒçšãããµãŒãããŒãã£ã®ã¹ããŒã ã¯ãCharliplexingã§ãã ãããŠãããã§Charliplexingãé©åã§ãªãçç±ãæžããŸããã
èšäºãæãã«èªãã å Žåã¯ã³ã¡ã³ããæžããªãã§ãã ããã