real sound humikiri
Dependencies: mbed ck_humikiri
main.cpp
00001 #include "mbed.h" 00002 00003 /* 踏切を再現するプログラム */ 00004 /* 配線の仕方 */ 00005 /* https://kohacraft.com/archives/1035056914.html */ 00006 00007 00008 DigitalOut sp(dp1); //スピーカーをつなぐピンを出力に設定 00009 DigitalIn sw(dp2); //スイッチをつなぐピンを入力に設定 00010 DigitalOut led1(dp14); //LED1をつなぐピンを出力に設定 00011 DigitalOut led2(dp18); //LED2をつなぐピンを出力に設定 00012 00013 int main() { 00014 //低い方の音 00015 double MIonTime = (1.0/678)/4; //ミ 00016 double MIoffTime = (1.0/678)/4; 00017 double MISyuuki = MIonTime + MIoffTime; 00018 00019 //高い方の音 00020 double DOonTime = (1.0/761)/4; //ファ# 00021 double DOoffTime = (1.0/761)/4; 00022 double DOSyuuki = DOonTime + DOoffTime; 00023 00024 while(1) { 00025 00026 //両方のLEDを消す 00027 led1 = 0; 00028 led2 = 0; 00029 00030 //スイッチが押されている間は踏切が鳴る 00031 while( sw == 1 ) 00032 { 00033 00034 //片方のLEDだけを点灯 00035 led1 = 1; 00036 led2 = 0; 00037 00038 for( int i=0 ; i<1000 ; i+=5 ) 00039 { 00040 //音をだんだん小さくするための計算 00041 double duty = (i / 1000.0)/2; 00042 double MIonTimeNow = MIonTime - (MISyuuki * duty); 00043 double MIoffTimeNow = MIoffTime + (MISyuuki * duty); 00044 double DOonTimeNow = DOonTime - (DOSyuuki * duty); 00045 double DOoffTimeNow = DOoffTime + (DOSyuuki * duty); 00046 00047 sp = 1; //低い方の音をちょっと出す 00048 wait(MIonTimeNow); 00049 sp = 0; 00050 wait(MIoffTimeNow); 00051 sp = 1; //高い方の音ちょっと出す 00052 wait(DOonTimeNow); 00053 sp = 0; 00054 wait(DOoffTimeNow); 00055 00056 } 00057 wait (0.1); 00058 00059 //もう片方のLEDだけを点灯 00060 led1 = 0; 00061 led2 = 1; 00062 00063 for( int i=0 ; i<1000 ; i+=5 ) 00064 { 00065 //音をだんだん小さくするための計算 00066 double duty = (i / 1000.0)/2; 00067 double MIonTimeNow = MIonTime - (MISyuuki * duty); 00068 double MIoffTimeNow = MIoffTime + (MISyuuki * duty); 00069 double DOonTimeNow = DOonTime - (DOSyuuki * duty); 00070 double DOoffTimeNow = DOoffTime + (DOSyuuki * duty); 00071 00072 sp = 1; //低い方の音をちょっと出す 00073 wait(MIonTimeNow); 00074 sp = 0; 00075 wait(MIoffTimeNow); 00076 sp = 1; //高い方の音ちょっと出す 00077 wait(DOonTimeNow); 00078 sp = 0; 00079 wait(DOoffTimeNow); 00080 00081 } 00082 wait (0.1); 00083 00084 } 00085 00086 } 00087 00088 }
Generated on Sun Jul 24 2022 20:01:36 by 1.7.2