質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

4304閲覧

Arduinoの割り込み処理

Yoshikun_0945

総合スコア224

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2016/11/29 01:21

#作成していること
下記コード処理から改変して、スイッチを押すと音楽停止、音楽停止中にスイッチを押すと再び音楽が流れるプログラムを作成しています。
自力で作成していますが、割り込み処理が分からず、作成がストップしています。
分かるかた、お助けお願いします

##プログラムの仕様
○ 割り込み処理を使用して作成すること
○ スイッチにはチャタリング処理を入れること
○ 割り込み関数 setup()に設定する
○ スイッチは2番ピンに接続
○ スピーカーは、12番ピンとGNDに接続

###改変前の処理

//グローバル変数など #define SOUND_DO 262 //ド #define SOUND_RE 294 //レ #define SOUND_MI 330 //ミ #define SOUND_FA 349 //ファ #define SOUND_SO 392 //ソ #define SOUND_RA 440 //ラ #define SOUND_SI 494 //シ #define SOUND_DO_HIGH 523 //高いド #define SOUND_LENGTH 500 // 音を鳴らす長さ #define SOUND_PIN 12 // 圧電ブザーを接続ポート int length1 = 600; // 音符の間隔のミリ秒 int length2 = 600; // 音符の間隔ミリ秒 int i = 0; void setup() { //初期値の設定など } void loop() { //繰り返し処理 i = 1; out(length1,length2); delay(1000); i = 2; out(length1, length2); delay(1000); } void out(int length1,int length2) {// if(i == 1) { //ミュージックホーンの前半 tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_DO_HIGH,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_DO_HIGH,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_DO_HIGH,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); } else if(i == 2) { //ミュージックホーンの後半 tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_DO_HIGH,SOUND_LENGTH); delay(length1); tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_MI,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_DO_HIGH,SOUND_LENGTH); delay(length2); tone(SOUND_PIN,SOUND_RA,SOUND_LENGTH); } }

####開発環境
開発ソフト:Arduino 1.7.11
ボード:Arduino UNO

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasahikoHirata

2016/12/01 09:34

これはまだ解決していないのでしょうか?もし回答に問題があれば指摘して頂きたく思います。
guest

回答1

0

ベストアンサー

arduinoではハードウエアの割り込みは質問にありますように、2番ピンの変化を用いることができます。
分かりやすい参考ページはArduinoでの割り込み処理です。
このピンの変化には立ち上がり(0→1)、立下り(1→0)で質問の中にはそれは明示されていないので、参考ページの図を見られて確かめられることをお勧めします。
また割り込み内で使う変数の宣言もご注意ください。

投稿2016/11/29 02:22

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問