編集履歴一覧に戻る
masayasanのアイコン画像

masayasan が 2021年10月11日19時41分26秒 に編集

コメント無し

本文の変更

1. 概要 ガチャポンケースで何か電子工作が出来ないか考えた結果、MP3プレイヤーを制作することにしました。 私が子供の頃は100円タイプのガチャポンしかなかったが、今は300~500円のガチャポンもあり、ケースも結構大きいものがあります。 単4乾電池3本ケースくらいなら余裕でカプセル内に入れることが可能です。 1. 主な部品 ・PICマイコンPIC16F18323  特にマイコンの種類は何でも良いのですがMCCで設定出来るものが楽です。 ・DFplayer mini  秋月やアマゾン等で購入可能、aliexpress が最安かも。 ・RGB LED  動作確認用に。 ・タクトスイッチ  音楽停止用 ・スライドスイッチ  電源入切り用 ・スピーカー 50φ  40φのが秋月にあったのでそちらを使った方が収まりやすいでしょう。 1. 回路図 ![キャプションを入力できます](https://camo.elchika.com/3d0a5790aa3228715d1ed207a00d238def348910/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f30616136623534622d373537662d346665372d623235612d303561353266356532653732/) 1. MCC設定 ![キャプションを入力できます](https://camo.elchika.com/8c331614020dcb753ff7c23352bada3cf6737dbb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f34383638336462382d303137352d343165362d386530332d323730353232643838386333/) ![キャプションを入力できます](https://camo.elchika.com/7f666587e07355a7e88233901e0b25751560c910/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f30353035343764312d376534372d343966352d386630342d336236313065363630363338/) ![キャプションを入力できます](https://camo.elchika.com/38eb2b9b2931fe42c91b58421cb5a27676f5ec8f/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f66643561343666642d303236342d343033612d383566342d626233383066393633356539/) ![キャプションを入力できます](https://camo.elchika.com/4fc4501ee0f85c61998cdf3a5cbdf4ac9d385fb8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f61373135386234612d646333352d343565622d383665342d623138616633653737636263/) ![キャプションを入力できます](https://camo.elchika.com/50168c403a66d7fffd70e94c507d9dd120d152cb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f61303631306264612d646366652d346462612d396162372d333833343464666162613633/) ![キャプションを入力できます](https://camo.elchika.com/d97732159566b51a97ed0e8b3cfa45a87f449d80/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f39353635313063612d666263612d346333362d383339622d633731643633343964626665/) ![キャプションを入力できます](https://camo.elchika.com/e3ab152c25b3bf3b7613d914cb841b0f7b00be37/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f64376533653730382d333663352d343165642d613333332d616136386331653630346535/) ![キャプションを入力できます](https://camo.elchika.com/ce38ee42f4bff21262fcd2e8cc4ad83da77c74a0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f30313631343636342d383631612d346366632d616235332d616635323336666331396537/) 1. プログラムソース ```ガチャポンMP3プレイヤー

+

#include "mcc_generated_files/mcc.h" #include "stdio.h" void play(uint8_t num) { EUSART_Write(0x7E); //$S EUSART_Write(0xFF); //VER EUSART_Write(0x06); //Len EUSART_Write(0x0F); //CMD EUSART_Write(0x00); //Feedback EUSART_Write(0x01); // para1 EUSART_Write(num); //para2z EUSART_Write(0xEF); //end

+

} void volume(uint8_t num) { EUSART_Write(0x7E); //$S EUSART_Write(0xFF); //VER EUSART_Write(0x06); //Len EUSART_Write(0x06); //CMD EUSART_Write(0x00); //Feedback EUSART_Write(0x00); //para1 EUSART_Write(num); //para2 EUSART_Write(0xEF); //end } void Pause() { EUSART_Write(0x7E); //$S EUSART_Write(0xFF); //VER EUSART_Write(0x06); //Len EUSART_Write(0x0E); //CMD EUSART_Write(0x00); //Feedback EUSART_Write(0x00); // para1 EUSART_Write(0x00); //para2 EUSART_Write(0xEF); //end } void Standby() { EUSART_Write(0x7E); //$S EUSART_Write(0xFF); //VER EUSART_Write(0x06); //Len EUSART_Write(0x0A); //CMD EUSART_Write(0x00); //Feedback EUSART_Write(0x00); // para1 EUSART_Write(0x00); //para2 EUSART_Write(0xEF); //end } void Reset() { EUSART_Write(0x7E); //$S EUSART_Write(0xFF); //VER EUSART_Write(0x06); //Len EUSART_Write(0x0B); //CMD EUSART_Write(0x00); //Feedback EUSART_Write(0x00); // para1 EUSART_Write(0x00); //para2 EUSART_Write(0xEF); //end } void main(void) { SYSTEM_Initialize(); PWM1_LoadDutyValue(10); PWM2_LoadDutyValue(10); PWM3_LoadDutyValue(10); __delay_ms(200); int CNTTIM1 = TMR0_ReadTimer(); Pause(); while (1) { int CNTTIM2 = TMR0_ReadTimer() - CNTTIM1; int Val = ADC_GetConversion(channel_ANA4); int Val1; int Val2; int Val3;

+

int playmusic;

-

if (Val > 10) { CNTTIM1 = TMR0_ReadTimer(); Val1 = Val / 100; Val2 = Val % 100; Val2 = Val2 / 10; Val3 = Val % 10;

+

if (Val <= 30) { Val = 0; } Val1 = Val / 100; Val2 = Val % 100; Val2 = Val2 / 10; Val3 = Val % 10; playmusic = Val % 100; if(playmusic==0){ playmusic=1; }else if(playmusic>77){ if(Val3==0){ Val3=1; } playmusic=Val3; } if (Val > 30) {

if (Val3 == 0) { Val3 = 1; }

-

volume(0x15);

+

volume(0x1A);

__delay_ms(2);

-

play(Val3);

+

play(playmusic);

__delay_ms(100); }

+

if (RA2 == 0) { CNTTIM1 = TMR0_ReadTimer(); }

-

// printf("Val,%d\n", Val);

+

// printf("Val,%d\n", Val);

// printf("Val1,%d\n", Val1); // printf("Val2,%d\n", Val2); // printf("Val3,%d\n", Val3);

-

Val1 = Val1 * 10; Val2 = Val2 * 10; Val3 = Val3 * 10;

+

Val1 = Val1 * 1; Val2 = Val2 * 1; Val3 = Val3 * 1;

PWM1_LoadDutyValue(Val1); PWM2_LoadDutyValue(Val2); PWM3_LoadDutyValue(Val3); if (RA3 == 0) { Pause(); }

-

if (CNTTIM2 > 500 && RA2 == 1) { RA5 = 0;

+

if (CNTTIM2 > 100 && RA2 == 1) {

PWM1_LoadDutyValue(0); PWM2_LoadDutyValue(0); PWM3_LoadDutyValue(0); Standby();

-

SLEEP(); //電源入切り復帰

+

SLEEP(); //MCLRリセット

}

+

} } ``` 6. 写真動画 スライドスイッチは電源入切り用。タクトスイッチは音楽停止。 ビスネジに触れると皮膚抵抗値に合わせた音楽が流れます。 音楽停止状態で数秒放置しておくとスリープモードになります。 復帰はスライドスイッチで電源再起動。 ![キャプションを入力できます](https://camo.elchika.com/b8a529d58c661e9b08b9c49db581f534e24c8d82/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f30396361633962642d643539632d343834662d616235312d373337393231383866633730/) ![キャプションを入力できます](https://camo.elchika.com/a8995d851e1d9fc73320d59a8afe0b74054da50e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f30346663373762312d613166612d343430312d386564352d303639323333316564353434/) ![キャプションを入力できます](https://camo.elchika.com/c8b7a649c16f69712af5f2022dd178b193b4fce9/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f34333666366364382d653066322d343235632d626237652d343732316639316334356165/) ![キャプションを入力できます](https://camo.elchika.com/be90e1a55c3736dbe801f0c22ef54827ebe46c18/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f32366436383234302d653537302d346437632d393665332d3033656337373035313139352f32326661323434302d666662382d346662302d616532372d346463653634323035633463/) @[youtube](https://youtu.be/4jwrDzmVv5o) 6. まとめ  出来るだけ部品点数を少なくしたかったが、DFplayerのStandby modeからの復帰方法が電源リセットでしか復帰出来なかったのでスライドスイッチを追加しました。 PICのMCLRに使用していたタクトスイッチは音楽停止ボタンに機能変更。 折角LEDがあるので音楽に合わせて点灯させても良かったかも。