58æ²ã¡ããã£ICãArduinoã§å¶å¾¡ããï¼2æ¡7ã»ã°ã¡ã³ãLEDã§æ²æ°è¡¨ç¤ºå¯¾å¿ï¼
58æ²ã®ã¡ããã£ãå ¥ã£ããM8058Sãã¨ããè¶ å°åã¡ããã£ICãããã¾ãã
SOP8ããã±ã¼ã¸ã¨ãããã¨ã§ããªãå°åã§ãã
åã®äººå·®ãæã®å ã«ä¹ãã¦æ®ã£ã¦ã¿ãåçãããã

Â
é«å質ãªã¡ããã£ã58æ²ãå ¥ã£ã¦ãã¦ãé»åãªã«ã´ã¼ã«ã¨ãã¦ã¯ããªã髿©è½ã§å°åãªãã®ãä½ãã¾ããããã150åã
ãã®ã¾ã¾ãµã³ãã«åè·¯éãçµç·ãã¦ã楽ãããã®ã§ããããã®åè·¯ã§ã¯ä¸æ²ãã¤é¸ãã§åçããæ©è½ãããªãã58æ²ç®ãè´ãããã«ã¯ããªããã¿ã³ãæ¼ãã¾ãããªãã¨ãã©ãçããã¨ãã§ãã¾ãããã¾ããããããã®æ²ã®ä¸ãããä½çªç®ã®æ²ã鏿ãã¦ããã®ããç¶æ ã確èªãããã¨ãã§ããªãã®ãæ©ã¿ã©ããã§ãã
ãã®ICã«ã¯ããã¤ã³ã³ããã®ã·ãªã¢ã«å ¥åã§ã³ãã³ããéã£ã¦é¸æ²ããæ©è½ãããã®ã§ãæ²æ°è¡¨ç¤ºã¨ãããã¦Arduinoã§å¶å¾¡ãã¦ã¿ããã¨ã«ãã¾ãã
Â
ç®æ¬¡
- ç®æ¬¡
- ã¾ãã¯58æ²ã¡ããã£ICã®é³æ¥½ãåçãã¦ã¿ã
- Arduino pro miniã§å¶å¾¡ãã
- åè·¯å³
- Arduinoã®åI/Oãã³ã®ä½¿ãæ¹
- 58æ²ã¡ããã£ICãM8058Sãããã¤ã³ã³ããã³ãã³ãå¶å¾¡ãã
- ããªã¥ã¼ã åå¯å¤æµæã¨ãã¿ã³å ¥åãä¸ã¤ã®ã¢ããã°å ¥åã§èªã¿è¾¼ã
- 2æ¡7ã»ã°ã¡ã³ãLEDã§æ²çªå·ã¨ã¡ããã£åçç¶æ ã表示ãã
- ã¾ã¨ã
- 鍿ãªã¹ã
Â
ã¾ãã¯58æ²ã¡ããã£ICã®é³æ¥½ãåçãã¦ã¿ã
Â
æåã«ãICã®ã¡ããã£ã¨æ©è½ç¢ºèªã®ããã«ããªãã¡ã¬ã³ã¹å®è£ éãã«ãã¬ãããã¼ãã§åããã¦ã¿ã¾ããã
Â
åè·¯ã¯aitendoããã®ãã¼ã ãã¼ã¸ã«ããã¾ãã
å¼ç¨ããã®ã¯ãã¡ãã

Â
é³è²ãè¯ãæãã§ãã
ãã ãå ¨é¨è´ãã®ã大å¤ã»ã»ã»ã
ãã¤ã³ã³ï¼Arduinoï¼ã§ç¶æ 表示ã¨ãã³ãã³ãå¶å¾¡ãããã¨ã«ãã¾ãã
Â
Arduino pro miniã§å¶å¾¡ãã
58æ²ã¡ããã£ICM8058Sã¨Arduino pro miniããã¬ãããã¼ãã§æ¥ç¶ããæ§åããã¡ãã

Â
Arduino pro miniã§å¶å¾¡ããããã®åè·¯å³ã¨ã½ã¼ã¹ã³ã¼ããgithubã«ã¦å ¬éãã¾ããã
ããã§ã¯ãåãã¤ã³ãã ã解説ãã¦ãããã¨æãã¾ãã
Â
- 7ã»ã°ã¡ã³ãLEDã«é¸æ²çªå·ã表示ãã
- 鏿²ã¯ããªã¥ã¼ã åã®å¯å¤æµæã§è¡ãããã«ãã
- ãã¿ã³ãæ¼ãããåçã»åæ¢ãè¡ããããã«ãã
- å°åã»å¤æ©è½ãªã«ã´ã¼ã«ããã¯ã¹ãæçµã´ã¼ã«ã¨ããããã1ãã³ã®ã¢ããã°å ¥åã¨4ãã³ã®ãã¸ã¿ã«IOã®ã¿ã§å¶å¾¡ã§ããããã«å¶å¾¡ãã³ãæå°åãã
ç¹ã«ã4çªããã¤ã³ãã§ãã
Arduinoã ã¨ååãªæ°ã®GPIOãããã®ã§å¶å¾¡ã¯å®¹æã§ããããã®ãã¨ãå°ååã®ããã«ATTiny85ã«ç§»æ¤ãã¾ããATTiny85ã§ã¯ã5ãã³ããå¶å¾¡ãã³ãç¡ãã®ã§ããã¿ã³ããããã«GPIOã使ã£ã¦ãã¨7ã»ã°ã¡ã³ãLEDã¨ã¡ããã£ICå¶å¾¡ãè¡ãããã®ãã³ãè¶³ããªããªãã¾ããä»åã1ã¤ã®ã¢ããã°å ¥åã§é¸æ²ç¨ã®ããªã¥ã¼ã å¯å¤æµæã®èªã¿è¾¼ã¿ã¨ãã¿ã³ã®ç¶æ èªã¿è¾¼ã¿ãã¾ã¨ãã¦å¶å¾¡ãããã¨ã«ãããATTiny85ã«ã対å¿ããããã«ãªã£ã¦ãã¾ãã
Â
åè·¯å³
æ¥ç¶ã®åè·¯å³ã§ãã

Arduinoã®åI/Oãã³ã®ä½¿ãæ¹
Arduinoã®åI/Oãã³ã®ä½¿ãæ¹ã¯ä»¥ä¸ã®éãã
- D2ï¼ã¡ããã£ICï¼M8058Sï¼ã¸ã®ã³ãã³ãéä¿¡ç¨ã
ã¡ããã£ICã®7çªãã³ã«æ¥ç¶ããã - D3ï¼7ã»ã°ã¡ã³ãLEDå¶å¾¡ç¨ï¼LATCHï¼ã
ã·ããã¬ã¸ã¹ã¿ï¼74HC595ï¼ã®LATCHãã³ã«æ¥ç¶ããã - D4ï¼7ã»ã°ã¡ã³ãLEDå¶å¾¡ç¨ï¼ã·ããã¬ã¸ã¹ã¿ç¨ã¯ããã¯ï¼ã
ã·ããã¬ã¸ã¹ã¿ï¼74HC595ï¼ã®RCLKãã³ã«æ¥ç¶ããã - D5ï¼7ã»ã°ã¡ã³ãLEDå¶å¾¡ç¨ï¼ã·ãªã¢ã«å
¥åï¼ã
ã·ããã¬ã¸ã¹ã¿ï¼74HC595ï¼ã®SERï¼ã·ãªã¢ã«å ¥åï¼ãã³ã«æ¥ç¶ããã -  A0ï¼å
¥åç¶æ
å¤å®ç¨ã¢ããã°å
¥åã
鏿²ç¨ããªã¥ã¼ã å¯å¤æµæã¨ãã¿ã³ã§æ§æãããè¤åæµæãèªã¿è¾¼ãã§å ¥åå¤å®ããã®ã«ä½¿ç¨ããã
Â
58æ²ã¡ããã£ICãM8058Sãããã¤ã³ã³ããã³ãã³ãå¶å¾¡ãã
M8058Sã®VOLãã¿ã³ãæ¥ç¶ãã¦ã7çªãã³ã«ããã¼ã¿ã·ã¼ãã®ã¿ã¤ãã³ã°ã®éãã«ã³ãã³ããéãã°ãã¡ããã£é¸æ²ãé³é調æ´ãåçã»åæ¢ãåçã¢ã¼ããªã©ãå¯è½ã§ããArduinoã®D2ãã³ã«ã¤ãªãã§ããã¼ã¿ã·ã¼ãã«è¨è¼ããã¦ããã¿ã¤ãã³ã°ã§ã·ãªã¢ã«ãã¼ã¿ãéãã¾ããÂ

ãã®ã³ãã³ãéä¿¡ã®ããã®Arduinoã®ã½ã¼ã¹ã³ã¼ãã¯githubã御覧ãã ããã
void send_melody_command(int command) {
int i=0;// Initialize port
digitalWrite(PIN_MELODYIC_CTRL, LOW);// Send header to melody IC
digitalWrite(PIN_MELODYIC_CTRL, HIGH);
delay(6);
digitalWrite(PIN_MELODYIC_CTRL, LOW);// Send DATA
for(i=0;i<8;i++){
if( ((command>>i)&0x1) == 1){
delayMicroseconds(500);
digitalWrite(PIN_MELODYIC_CTRL, HIGH);
delayMicroseconds(1500);
} else {
delayMicroseconds(1500);
digitalWrite(PIN_MELODYIC_CTRL, HIGH);
delayMicroseconds(500);
}
digitalWrite(PIN_MELODYIC_CTRL, LOW);
}
return 0;
}
Â
 éä¿¡ã§ããã³ãã³ãã¯æ¬¡ã®ã¨ããã§ãã
aitendoã®ãã¼ã ãã¼ã¸ããå¼ç¨ã
ï¼16鲿°ã³ãã³ãï¼
ã»æ²ãæå®ãã
0X00ï¼ã¡ããã£1
0X01ï¼ã¡ããã£2
...
0X3Aï¼ã¡ããã£58ã»åä½ã¹ãã¼ã¿ã¹
0XE8ï¼ã¡ããã£åçï¼LEDç¹æ»
0XE9ï¼ã¡ããã£åçã®ã¿
0XEAï¼LEDç¹æ» ã®ã¿
0XEBï¼ã¡ããã£åçï¼LED常æç¹ç¯ã»åºåé³éã¬ãã«è¨å®
0XF0ï¼é³éã¬ãã«1
0XF1ï¼é³éã¬ãã«2
0XF2ï¼é³éã¬ãã«3
0XF3ï¼é³éã¬ãã«4
0XF4ï¼é³éã¬ãã«5
0XF5ï¼é³éã¬ãã«6
0XF6ï¼é³éã¬ãã«7
0XF7ï¼é³éã¬ãã«8
0XE8ï¼é³éã¬ãã«9ã»åä½ãå¶å¾¡ãã
0XFBï¼åç
0XFCï¼æ¬¡ã®æ²
0XFDï¼åã®æ²
0XFEï¼é³é
0XFFï¼åç忢Â
Â
ããªã¥ã¼ã åå¯å¤æµæã¨ãã¿ã³å ¥åãä¸ã¤ã®ã¢ããã°å ¥åã§èªã¿è¾¼ã
Arduinoã ã¨ååãªæ°ã®GPIOãããã®ã§ãããªãã¨ãããå¿ è¦ã¯ç¡ãã£ãã®ã§ããããã®ãã¨ãå°ååã»çé»ååï¼ããã«ã¯ä½ã³ã¹ãåï¼ã®ããã«ATTiny85ã«ç§»æ¤ãè¡ãã¾ãã
ATTiny85ã§ã¯ã5ãã³ããå¶å¾¡ãã³ãç¡ãã®ã§ããã¿ã³ããããã«GPIOã使ã£ã¦ãã¨7ã»ã°ã¡ã³ãLEDã¨ã¡ããã£ICå¶å¾¡ãè¡ãããã®ãã³ãè¶³ããªããªãã¾ããä»åã1ã¤ã®ã¢ããã°å ¥åã§é¸æ²ç¨ã®ããªã¥ã¼ã å¯å¤æµæã®èªã¿è¾¼ã¿ã¨ãã¿ã³ã®ç¶æ èªã¿è¾¼ã¿ãã¾ã¨ãã¦å¶å¾¡ãããã¨ã«ãããATTiny85ã«ã対å¿ããããã«ãªã£ã¦ãã¾ãã
ä»åããã®è¤åå ¥åæµæãæ§æããããã«ã次ã®ãããªåè·¯æ§æãçµãã§ãã¾ãã

Â
- Arduinoã®ã¢ããã°å ¥åãã³ã2.2kΩã§ãã«ã¢ãããã¾ãã
- ããªã¥ã¼ã åå¯å¤æµæã¯æå¤§10kΩã®ãã®ã使ç¨ãã¦ãã¾ããããã«2.2kÎ©ã®æµæãç´åã«ã¤ãªããæå°æµæ2.2kΩãæå¤§æµæ12.2kΩã®ã©ã¤ã³ãæ§æãã¾ãã
- å¯å¤æµæã¨ä¸¦åã«ãæ¼ããã1kΩã®ã©ã¤ã³ã¨ãã忢ãã¿ã³æ©è½ãå²ãæ¯ãã¾ãã
- å¯å¤æµæã¨ä¸¦åã«ãæ¼ããã150Ωã®ã©ã¤ã³ã¨ããåçãã¿ã³æ©è½ãå²ãæ¯ãã¾ãã
Â
ä¸è¨ã®åè·¯æ§æã«ãããå¯å¤æµæã®ä½ç½®ã»ãã¿ã³ã®æ¼ä¸ç¶æ³ã«ãããã¦ãã¢ããã°å ¥åã«ã¯æ¬¡ã®å¤ãå¾ããããã¨ãç®åºã§ãã¾ããÂ

çµæãããªã¥ã¼ã å¯å¤æµæã®èªã¿åãå¤ã¨ããã¿ã³ã®æ¼ä¸ç¶æ³ã¯ã次ã®ã¢ããã°å ¥åå¤ã«ãã£ã¦å¤å®ãå¯è½ã¨ãªãã¾ãã
- ããªã¥ã¼ã å¯å¤æµæã¯ã¢ããã°èªã¿è¾¼ã¿å¤512ï½867ã®å¤ãåããï¼å¤å°ã®èª¤å·®ãããã®ã§ãã¼ã¸ã³ããã¤å¿ è¦ã¯ãããï¼ãããã¡ããã£æ²æ°ã§å²ãã°ã鏿²ã«ä½¿ç¨ã§ããã
- åçãã¿ã³ãæ¼ããã¨ãã¯ã65ä»è¿ã®å¤ãåããããã§ãåçãã¿ã³ãæ¼ããããã©ããå¤å®ã§ããã
- 忢ãã¿ã³ãæ¼ããã¨ãã¯320ãããã®å¤ãåããããã§ã忢ãã¿ã³ãæ¼ããããã©ããå¤å®ã§ããã
Â
githubã®ã½ã¼ã¹ã³ã¼ãã¯ãå¤å°ã®æµæã®ã°ãã¤ããèæ ®ããå¤ã«ãã¥ã¼ãã³ã°ãã¦ããã¾ãã
Â
2æ¡7ã»ã°ã¡ã³ãLEDã§æ²çªå·ã¨ã¡ããã£åçç¶æ ã表示ãã
ä»åãç¾å¨é¸æ²ãã¦ããæ²çªå·ã®è¡¨ç¤ºã¯å°åã®2æ¡7ã»ã°ã¡ã³ãLEDï¼ã¢ãã¼ãã³ã¢ã³ï¼ã使ç¨ãã¾ãããããã§ãããã³ã®ç¯ç´ã工夫ãã¦ãã¾ãã
ãã¤ã³ã³å´ã¯5ãã³ã®å¶ç´ã§è¨è¨ãã¦ãããããä¸è¿°ã®ã¡ããã£ICã®å¶å¾¡ã§1ãã³ããã¼å ¥åã»é¸æ²ã§1ãã³ä½¿ãã¨ãæ®ã3ãã³ã¨ãªãã¾ããä»å使ç¨ãã7ã»ã°ã¡ã³ãLEDã¯10ãã³ããããã8ãããã®ã·ããã¬ã¸ã¹ã¿ã使ã£ã¦ã2ã¤è¶³ãã¾ãããããã§ãä»åã¯æ¬¡ã®ãã¤ã³ãã工夫ãã¦ãã¾ãã
- ãã¤ã³ã³ï¼Arduinoï¼ãã表示ããã®ã¯ãæ°å¤è¡¨ç¤ºã®7ãããã¨ããDPç¨ã®LEDã¯ãã¡ããã£ICï¼M8058Sï¼ã®åçç¶æ 表示LEDã®è¡¨ç¤ºå ´æã¨ãã¦æ´»ç¨ããã
- 7ã»ã°ã¡ã³ãLEDã®è¡¨ç¤ºæ¡é¸æãã³ï¼6çªãã³ã¨9çªãã³ï¼ããã·ããã¬ã¸ã¹ã¿ã«éããã¼ã¿ã®æä¸ä½ãããã«å²ãæ¯ãããã®ç¶æ ã«ãã£ã¦è¡¨ç¤ºæ¡åãæ¿ããè¡ãã
Â
1ã¤ãã®å·¥å¤«ã¯ãã¡ããã£ICã®åçç¶æ 表示LEDç¨ã®8çªãã³ãã7ã»ã°ã¡ã³ãLEDã®DP表示ç¨ãã³ï¼5çªãã³ï¼ã«æ¥ç¶ããã°OKãåçä¸ã¯ã7ã»ã°ã¡ã³ãLEDã®DPï¼å°æ°ç¹ï¼ã®æ¡ããã«ãã«ãã¦åçç¶æ ããããããã«ãªãã¾ãã
Â
2ã¤ç®ã®7ã»ã°ã¡ã³ãLEDã®è¡¨ç¤ºæ¡ãå¶å¾¡ããããã«ã8ãããã·ããã¬ã¸ã¹ã¿ã®åºåæä¸ä½ãããã®ç¶æ ã¯ãå¿ ãæ¬¡ã®ãããªç¶æ ã«ããå¿ è¦ãããã¾ãã
- 鏿²çªå·ã®1ã®ä½ã表示ããï¼æä¸ä½ãããã0ã®ã¨ãï¼ï¼
7ã»ã°LEDã®6çªãã³ã«HIGHãåºåã9çªãã³ã«LOWãåºå - 鏿²çªå·ã®10ã®ä½ã表示ããï¼æä¸ä½ãããã1ã®ã¨ãï¼ï¼
7ã»ã°LEDã®6çªãã³ã«LOWãåºåã9çªãã³ã«HIGãåºå
 ã¤ã¾ãã7ã»ã°ã¡ã³ãLEDã®6çªã¨è«çãéã®ä¿¡å·ã9çªãã³ã«åºåããå¿ è¦ãããã¾ãããã®ãããã·ããã¬ã¸ã¹ã¿ã®æä¸ä½ãããã¯7ã»ã°ã¡ã³ãLED6çªãã³ã«æ¥ç¶ããåºåä¿¡å·ã®ä»ã«ãè«çãéã®åºåï¼NOTåè·¯ï¼ãä½ã£ã¦7ã»ã°ã¡ã³ãLEDã®9çªãã³ã«æ¥ç¶ãã¦ãã¾ãã
åè·¯å³ã§ã¯ããã®é¨åã«ãªãã¾ãã
Â

ãã®åè·¯ã«ããã鏿²çªå·è¡¨ç¤ºã¯æ¬¡ã®ãããªã½ã¼ã¹ã³ã¼ãã§å¶å¾¡ãã¦ãã¾ãã
void display_melody_num(int number) {
char num1, num2, dispnum;num1 = number / 10;
num2 = number % 10;if(led_digit == 0) {
dispnum = data[num1] | 0x01;
led_digit = 1;
} else {
dispnum = data[num2] & 0xFE;
led_digit = 0;
}
digitalWrite(PIN_LATCH, LOW);
shiftOut(PIN_SER, PIN_RCLK, LSBFIRST, dispnum);
digitalWrite(PIN_LATCH, HIGH);}
Â
7ã»ã°ã¡ã³ãLEDã¯åæ¡ã®è¡¨ç¤ºå¦çããã§ããªãã®ã§ã表示å¦çãåã£ã¦ãããã¨ã«ã表示æ¡ãåãæ¿ãã¦ãæ®åãè¦ãããã¨ã§å ¨æ¡è¡¨ç¤ºãã¦ããããã«è¦ãã¦ãã¾ãã
Â
ã¾ã¨ã
Arduinoã«æ¸ãè¾¼ãã§åä½ã確èªãã¦ããåç»ããã¡ããÂ
58æ²ã¡ããã£ICãArduinoã§å¶å¾¡ããï¼2æ¡7ã»ã°ã¡ã³ãLEDã§æ²æ°è¡¨ç¤ºå¯¾å¿ï¼
Â
 58æ²ã®ã¡ããã£ããããªã¥ã¼ã åã®ãããã§èªç±ã«é¸æ²ãã¦åçããããã¨ãã§ãã¾ãã
éçºç¨ã«Arduinoã§å¶å¾¡ãã¾ããããæçµçã«ã¯ãã®ã½ã¼ã¹ã³ã¼ããATTiny85ã«ç§»æ¤ãã¦åä½ããã¾ããArduinoã®è±å¯ãªI/Oã使ãã°ãããããªå·¥å¤«ã¯ä¸è¦ã§ãããã¢ããã°å ¥åãã·ããã¬ã¸ã¹ã¿ãè«çåè·¯ã使ã£ãI/Oã®ç¯ç´å¶å¾¡ã¯ä»ã«ãæ´»ç¨ã§ããã¨æãã¾ãã®ã§ãåèã«ãã¦ããã ããã°ã¨æãã¾ãã
ATTiny85ã§åä½ãããããã®ç¶ãã®è¨äºã¯ 次ã®ããã¯ã§è¨è¼ãã¾ãã
Â
Â
鍿ãªã¹ã
主è¦ãªé¨åãªã¹ãã§ãã
- 58æ²ã¡ããã£ICã»M8058S
 Â
- Arduino pro miniäºæãã¼ã
waves Arduino Pro Mini äºæãã¼ã 328 5V 16MHz å½å é é 5å+USBã·ãªã¢ã« ã»ãã
- ã¡ãã£ã¢: ããã¡ãï¼ããã¼
Â
- å°å7ã»ã°ã¡ã³ãLED2æ¡è¡¨ç¤ºã»ã¢ãã¼ãã³ã¢ã³
Â
- 8ãããã·ããã¬ã¸ã¹ã¿ã»74HC595Â
SODIAL(R) 5ï½SN74HC595N 74HC595 8-ãããã·ããã¬ã¸ã¹ã¿DIP-16 IC
- ã¡ãã£ã¢: ã¨ã¬ã¯ãããã¯ã¹
 Â
- ãã¤ãããã¯ã¹ãã¼ã«ã¼
Â
- ããªã¥ã¼ã åå¯å¤æµæï¼10kΩï¼Â
Â
Â
-  NPNãã©ã³ã¸ã¹ã¿
Â
Â
- Â æµæ
Â
Â
Â
- ã¹ã¤ããÂ
Â
Â





