No.1ベストアンサー
- 回答日時:
圧電ブザーは他励式だと仮定して書かせてもらいます。
音は、圧電ブザーのON/OFFで出すことが可能ですが、周波数(音階)は1秒間に何回ON/OFFを繰り返せるかで周波数が決まります。例えば、周波数800Hzは、1秒にONとOFFを1組として800組繰り返します。
ようは、ONとOFFの時間が可変長な関数を作ってやれば色々な周波数を出すことができます。
[参考関数]
void sound( int time, int count )
{
int loop;
// 残り時間だけループを繰り返す。
for( ; time>0 ; time-=(count*2) ) {
// 圧電ブザーをONにする。ON時間はcountで決まる。
for( loop=0 ; loop<count ; loop++ ) {
圧電ブサーのポートをONに。
}
// 圧電ブザーをOFFにする。OFF時間はcountで決まる。
for( loop=0 ; loop<count ; loop++ ) {
圧電ブサーのポートをOFFに。
}
}
}
[説明]
timeでなり続ける時間を指定します。
countでON/OFFの周期を指定します。大きな数字ほど周波数が低くなります。0は音が鳴りません。
C言語だとアセンブラほど高速にON/OFFを繰り返せないので、アセンブラに比べると出せる周波数は低めになるかと思います。いろんな値を入れて実際にどんな音するか試してみてください。
それとこのプログラムはCPUを占有しますので、音を鳴らしながら平行して処理をしたい場合は、タイマー割り込みでブザーをON/OFFする方式に変更しないと実用性が低いかもしれません。
この回答への補足
対応ありがとうございます。
この記述は、CCS社のCコンパイラーに対応しているのでしょうか?
PIC用に動かしたいのですが、上記の記述は音を鳴らすことが出来ますか?
No.2
- 回答日時:
実はPICはアセンブラ専門でC言語もフリーの物しか使ったことがありません。
CCS社のCコンパイラが使ったことが無いので断言は出来ませんが一般のC言語としては問題ない書き方をしました。不安があるとすれば、intの値の範囲で十分に音階を制御できるかどうかですね。intで足りなければlongにする必要があります。
それとmain関数や圧電ブサーのポートをON/OFFの部分は書いてありませんので付け加えをお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 工学 汎用ブザーについて詳しい方、教えてください 1 2022/11/17 12:02
- 日本語 日本語のアクセント 1 2022/05/12 13:26
- 英語 下記のスペルを確認するとき 発音しやすく伝わりやすい言葉はなんですか? ※(AppleのAとか) C 5 2023/08/23 21:08
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- iPad iPad Proにマイク付きイヤホンを繋いでも端末マイクになってしまう理由 2 2023/07/16 02:28
- タブレット 世のスマホやタブレットからイヤホンジャックが廃止されていくのはなぜですか?… 5 2023/08/04 15:05
- 楽器・演奏 楽譜のドイツ語読みは全楽器共通ではなかったの? 15 2022/05/07 13:52
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- 日本語 日本語の「-3の規則」 1 2022/05/12 13:14
- 作詞・作曲 或る曲の楽譜のコード進行の中に"F onA"なるものがありました。これはどんな和音ですか? 7 2023/05/22 00:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
アセンブラのリンカのダウンロ...
-
アセンプラ16ビット8086
-
PC-9801でマシン語を学習するに...
-
SHの命令の意味について
-
アセンブリ言語について。
-
PICのPCL
-
バイナリの実行ファイルをgccを...
-
実行ファイルからソースはみれる?
-
アセンブラNASMで扱える命令に...
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
ビットシフトってどんな時使うの?
-
コンピュータ言語とプログラミ...
-
一般のソフトで画像を扱う場合...
-
8ビットのデータの、先頭ビット...
-
fortran
-
03分22秒36のような時間の単位...
-
シーケンス制御についての質問...
-
パチンコやスロットについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ライン数とステップ数の違いは?
-
Windowsはオープンソースですか?
-
アセンブラからC言語に変換する...
-
実行ファイルからソースはみれる?
-
アセンブラ言語がわかりません。
-
アセンブラエディタ
-
PICに書き込むプログラムや変数...
-
SHの命令の意味について
-
このアセンブラの意味を教えて...
-
void __cdeclなど_
-
GCCの.cfi_系について
-
PC-9801でマシン語を学習するに...
-
アセンブラのLA
-
アセンブラで割り算
-
汎用レジスタのワーキングビッ...
-
エンディアンについて。
-
C to 68000アセンブラ
-
PICはアセンブラとC言語のどち...
-
素朴な疑問 (C言語とアセン...
-
アセンブラwordという単位
おすすめ情報