この2つを同じ意味合いにしていますがコンパイルは通り動作が違います‼️
どこをどのように変えればいいですか?
動作成功
Arduino
1#define F_CPU 8000000UL 2#include<avr/io.h> 3#include<util/delay.h> 4const uint8_t tempo = 100; /*記憶*/ 5void playTone(uint16_t tone, uint16_t duration) { 6 for (uint32_t i = 0; i < duration * 1000L; i += tone * 2 / 10) {/*duration=期間*/ 7 PORTC = 0x0000001; 8 for (uint16_t j = 0; j < tone / 10; j++) { 9 _delay_us(1); /*X ミリ Oマイクロ*/ 10 } 11 PORTC = 0x0000000; 12 for (uint16_t j = 0; j < tone / 10; j++) { 13 _delay_us(1); 14 } 15 } 16 17 return; 18}
動作失敗
※このプログラムを動作同じにしていくこと
Arduino
1#define F_CPU 8000000UL 2#include<avr/io.h> 3#include<util/delay.h> 4#include <avr/interrupt.h> 5const uint8_t tempo = 100; //char 6const byte PIN_BUZZLE = 10; 7const byte PIN_INTERRUPT = 23; 8volatile byte state = LOW; 9void playTone(uint16_t tone, uint16_t duration) { 10 pinMode( PIN_BUZZLE, OUTPUT ); 11 digitalWrite( PIN_BUZZLE, state ); 12 13 attachInterrupt( 14 digitalPinToInterrupt(PIN_INTERRUPT), 15 toggle_BUZZLE, FALLING ); 16} 17 void duration() { 18 digitalWrite( PIN_BUZZLE, state ); 19} 20 void toggle_BUZZLE(){ 21 state != state; 22 _delay_us(1); 23 }
なにをハードウエアに置き換えるというはなしでしょうか
ブザーとスイッチとの時間で動作するプログラムをハードウェアに置換えるという話をです
その中のどれをハードウエアで置き換えるんでしょうか。
質問が意味不明です
なので回答しようにもやりようがないという状況
Tmr0レジスタを使って割り込みを行うこと考えています
そして音楽みたいになるべく正確にしていくようなタイマーを考えています。
レジスタはそもそもハードウェアですが?(ついでに言えばスイッチもブザーもハードウェア)
タイマーペリフェラルを使うことを「ハードウェア」と言っているのだと想像はしていますが...
よくわからない言葉を無理に間違って使うより、平易な言葉でもやりたいことをちゃんと主語述語を揃えて表現したほうが伝わると思います。
[事象1]から[事象2]までの時間をできるだけ正確に1秒にしたい。そのためにはタイマーを使うのが解になると思われる。そうすると以下のプログラムをどう変更するのか
という質問なのかなぁ。ただ、質問には事象1/事象2が何なのか明らかにされていないのですよ。なにが1秒?
あと、「ピン番号は変えないで行うこと 」が課題感を醸し出して、意欲を削ぎますね。
thkanaさん何言っているのか分からないので答え方が分かりません‼️
結局、
thkanaさんは曲をシャウト(TTJ)に置換えたいということかなぁ❔
だったらよろしくお願いします
「[事象1]から[事象2]までの時間をできるだけ正確に1秒にしたい。そのためにはタイマーを使うのが解になると思われる。そうすると以下のプログラムをどう変更するのか」
これで質問の趣旨が合っているなら、事象1と事象2を説明して下さい、ということです。事象というのは、「何かが、変化する」ということです。
事象1: なにが、どうなること
事象2: なにが、どうなること
その間が1秒、という話になるでしょう。
そういう質問でないのなら、そう言っていただければまた考えますが。
やっと理解した。
1.ledのランダムの曲からブザーが鳴るまでの時間を正確にすること
2.押しボタンをたたいてledとブザーが鳴るまでの時間を正確にすること
を考えています。
事象1と事象2をそれぞれ置き換えて、
[ledのランダムの曲からブザーが鳴るまでの時間を正確にすること]から[押しボタンをたたいてledとブザーが鳴るまでの時間を正確にすること]までの時間をできるだけ正確に1秒にしたい。そのためにはタイマーを使うのが解になると思われる。そうすると以下のプログラムをどう変更するのか」
ということですか?
ledのランダムの曲からブザーが鳴るまでの時間と,押しボタンをたたいてledとブザーが鳴るまでの時間をできるだけ正確に1秒にしたい。そのためにはタイマーを使うのが解になると思われる。そうすると以下のプログラムをどう変更するのか」
ということです。
「ledのランダムの曲からブザーが鳴るまでの時間」というのはわかりかねますが、
「押しボタンをたたいてledとブザーが鳴るまでの時間をできるだけ正確に1秒」というのは
もしかして、前者の(これまでの質問で育ててきた)プログラムとは全く関係なく、
「参考」と称するプログラムを原型としてスイッチをONにしてからタイマーでカウントして1秒後にLEDが点灯してブザーが鳴る動作をするプログラムをArduino環境で作成すればよい、ということですか?
Yes
ぎゃふん。
参考のプログラムには押しボタンスイッチはないですがどうしましょう。
そもそもないのでは
> ※ピン番号は変えないで行うこと
という条件を満たしようがないです。
ピン番号は変えなかったら大丈夫です
> 回答1に表して置きました
それは、
「参考」と称するプログラムを原型としてスイッチをONにしてからタイマーでカウントして1秒後にLEDが点灯してブザーが鳴る動作をするプログラム
とは似ても似つかぬものなのですが...
質問のところに置きました
そしてこれ以上の質問は分かりません