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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Atmel Studio

Atmel Studioは、マイクロチップ・テクノロジー社が製造しているマイコンであるAVRやSAMのプログラミングを容易にするための統合開発環境です。同社が無料で提供しており、以前はAVR Studioと呼ばれていました。

Arduino

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

Q&A

解決済

2回答

1309閲覧

プログラムでAVRを動かしたい????

jyojyo

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Atmel Studio

Atmel Studioは、マイクロチップ・テクノロジー社が製造しているマイコンであるAVRやSAMのプログラミングを容易にするための統合開発環境です。同社が無料で提供しており、以前はAVR Studioと呼ばれていました。

Arduino

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

0グッド

1クリップ

投稿2021/01/26 05:26

編集2021/01/26 23:06

実行したいこと
プログラムがあっていると思うけどAvrを動かしたいけど動かないです‼️
なのでプログラムがあっている分からないです????
動いたArduinoプログラムのコードが欲しいです????
※学校の課題ではありません

Arduino

1const uint8_t tempo = 100; /*記憶*/ 2 3uint8_t notes [2] [50] = {"gdefedccegfeddefgecc facbagdgfeddefgecc n", 4 "afgefdc afgeegba n"}; /* 音の速度 スペースは休憩を表します*/ 5uint8_t level [2] [50] = {{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 6 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0}, 7 {4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0}};/*音の高さ*/ 8uint8_t beat [2] [50] = {{ 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2+1, 9 2, 1, 2, 1, 1, 3, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2}, 10 {4, 4, 4, 4, 4, 4, 4, 4+1, 4, 4, 4, 4, 2, 2, 4, 4, 4}};/*ビート*/ 11uint8_t line [] = {0,0,1};/*行*/ 12 13 14void playTone(uint16_t tone, uint16_t duration) { 15 for (uint32_t i = 0; i < duration * 1000L; i += tone * 2 / 10) {/*duration=期間*/ 16 PORTC = 0x0000001; 17 for (uint16_t j = 0; j < tone / 10; j++) { 18 _delay_us(1); /*X ミリ Oマイクロ*/ 19 } 20 PORTC = 0x0000000; 21 for (uint16_t j = 0; j < tone / 10; j++) { 22 _delay_us(1); 23 } 24 } 25 26 return; 27} 28 29void playNote(uint8_t note, uint16_t level, uint16_t duration) { 30 uint8_t names[] = {'c', 'd', 'e', 'f', 'g', 'a', 'b'}; //ドレミファソラシ 31 uint16_t tones[] = { 19111, 17026, 15169 + 1, 14317, 12755, 11364, 10124}; 32 /* 33 / * 34 timeHigh =期間/ 2 = 1 /(2 * toneFrequency) 35 ここで、さまざまなトーンは次のように説明されています。 36 音符 頻度 期間 高い時間 37 do4 261.63 Hz 3830 1911.0958223445323548522722929328 (261->1915=1915.7088122605363984674329501916) 38 re4 293.66 Hz 3400 1702.6493223455697064632568276238 (294->1700=1700.6802721088435374149659863946) 39 mi4 329.63 Hz 3038 1516.8522282559233079513393805175 (329->1519=1519.7568389057750759878419452888) 40 fa4 349.23 Hz 2864 1431.7212152449674999284139392378 (349->1432=1432.6647564469914040114613180516) 41 so4 392 Hz 2550 1275=1275.5102040816326530612244897959 42 ra4 440 Hz 2272 1136=1136.3636363636363636363636363636 43 si4 493.88 Hz 2028 1012.3916740908722766663966955536 (493->1014=1014.1987829614604462474645030426) 44 do5 523.25 Hz 1912 955.566172957477305303392259914 (523->956=956.02294455066921606118546845124) 45 */ 46 /*音名に対応した音を再生します*/ 47 for (uint8_t i = 0; i < 7; i++) { 48 if (note == names[i]) { 49 uint8_t a = level - 4; 50 playTone(tones[i] / pow(2, a), duration); 51 } 52 } 53 54 return; 55} 56 57void setup(){ 58 DDRC = 0x0000001; /* 出力:ブザー(PORTC0)*/ 59 DDRB = 0x00; /*入力:スィッチ(PINB5)*//* <iom328.h> #define PINB5 5*/ 60 DDRD = 0x7F; /* DDRB 出力ピン対応ビットはセット、入力ピン対応ビットはクリア */ 61 PORTD = 0xFF; /* 入力ピンに対応するビットに1を書き込み、内蔵プルアップ指定 */ 62 DDRB = 0x00; /* I/ o:key(PORT0-7)*/ 63 PORTB = 0xFF; /* 入力時にプルアップする必要があります。*/ 64} 65 void loop(){ 66 static bool a_mode = 0; /*0-手動、1-自動*/ 67 main_loop: 68 if (bit_is_clear(PORTD, PORTD7)) /* スイッチが閉じると成立 */ 69 PORTB = PORTB & ~_BV(PB1); /* ここではPD0をクリアしてLED点灯 */ 70 if (a_mode) { //auto(PIND == 0b00100000) 71 DDRB = 0xff; //出力のみ 72 73 for (uint8_t i = 0; i < 3; i++) { /*行数*/ 74 for (uint8_t j = 0; ; j++) { 75 if (notes[line[i]][j] == ' ') { 76 for (uint16_t k = 0; k < beat[line[i]][j] * tempo; k++) { 77 _delay_ms(1); //rest(milli) 78 } 79 } 80 else if (notes[line[i]][j] == 'n') { /*(j <length [i])の場合、for {}は続行します。*/ 81 break; 82 } 83 else{ 84 uint8_t k; 85 if (notes[line[i]][j] == 'c') { 86 if (level[line[i]][j] == 4) { 87 k = 0; 88 } 89 else { 90 k = 7; 91 } 92 } 93 else if (notes[line[i]][j] == 'a') { 94 k = 5; 95 } 96 else if (notes[line[i]][j] == 'b') { 97 k = 6; 98 } 99 else { 100 for (k = 0; k < 5; k++) { 101 if (notes[line[i]][j] == 'c' + k) { 102 break; 103 } 104 } 105 } 106 107 PORTD ^= _BV(k); 108 playNote(notes[line[i]][j], level[line[i]][j], beat[line[i]][j] * tempo); 109 PORTD ^= _BV(k); 110 }//if 111 if (!(PINB & _BV(5))) { //auto(PINB is 0x00) 112 a_mode = 0; 113 goto main_loop; 114 } 115 }//for 116 117 }//for 118 119 }//auto 120 else { /*手動(PIND == 0x00)*/ 121 DDRB = 0x00; /*入力のみ*/ 122 PORTB = 0xff; /*プルアップ*/ 123 switch (PINB) { 124 case 0b11111110: 125 do { 126 playNote('c', 4, 1 * tempo); 127 } while (PINB == 0b11111110); 128 break; 129 130 case 0b11111101: 131 do { 132 playNote('d', 4, 1 * tempo); 133 } while (PINB == 0b11111101); 134 break; 135 136 case 0b11111011: 137 do { 138 playNote('e', 4, 1 * tempo); 139 } while (PINB == 0b11111011); 140 break; 141 142 case 0b11110111: 143 do { 144 playNote('f', 4, 1 * tempo); 145 } while (PINB == 0b11110111); 146 break; 147 148 case 0b11101111: 149 do { 150 playNote('g', 4, 1 * tempo); 151 } while (PINB == 0b11101111); 152 break; 153 154 case 0b11011111: 155 do { 156 playNote('a', 4, 1 * tempo); 157 } while (PINB == 0b11011111); 158 break; 159 160 case 0b10111111: 161 do { 162 playNote('b', 4, 1 * tempo); 163 } while (PINB == 0b10111111); 164 break; 165 166 case 0b01111111: 167 do { 168 playNote('c', 5, 1 * tempo); 169 } while (PINB == 0b01111111); 170 break; 171 172 default: 173 break; 174 } 175 176 if (PINB & _BV(5)) { //manual(PINB is 0x20) 177 a_mode = 1; 178 } 179 180 }/*マニュアル*/ 181 182 }

試したこと
動くか分からないです????
ですが????を見て、一様質問して見てArduinoプログラムの作成をしました。
参考
参照先のコードでAtmel Studio(Microchip Studio)でビルドして書きこんだら動きました。
(あれ? 手元でいじったつもりなかったけどFuse設定間違ったか分からない。再プログラムできなくなっちゃった。12V掛けなきゃダメか?)
thaKnaさんより
[プログラム]
http://www.club.konan-u.ac.jp/hp/KSWL/tech/hard/cam50Manual/GccApplication1.cpp)
[回路図]
(http://www.club.konan-u.ac.jp/hp/KSWL/tech/hard/cam50Manual/electric_organ.html)

しなぷすのハード
Arduino用ブートローダ/スケッチライター

※前と同じ質問ではありません❗❗

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

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

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

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

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

thkana

2021/01/26 11:33

> 動かないです > 分からないです なるほど、今回は現状報告だけで「質問」にすらなってませんね。 現状報告にしても、回答者が全く同じことを試せるぐらいの詳しさ・具体性をもって情報を書いてください。 参照先ページで動いた実績があるのなら、多分プログラムは合っていると考えられるのではないですか。
jyojyo

2021/01/26 11:53 編集

コメントありがとうございます‼️ 参考動画はなく動くのか分からない なので動いた動画をください‼️ できたらコードも
thkana

2021/01/26 23:05

> 一様質問して見て 一様->一応ですか? > Arduinoプログラムの作成をしました。 作成したArduinoのプログラムはどこ? これまで掲載されているのはもとのソースをちょっとだけ変えたものだけですよね? どうでもいいけど、絵文字とか意味のない感嘆符が連発されている質問文章ってイライラします(個人の感想です)。それって書いている方は楽しいのでしょうか?
jyojyo

2021/01/26 23:15

I'm writing in the code‼️ I'm frustrated because the answer is incorrect. So I wrote an emoji ❗ Do you have anything❔
thkana

2021/01/26 23:27

そうした方が欲しい回答が得られるという判断ですか?
thkana

2021/01/27 00:18 編集

あ、https://teratail.com/questions/317322 のnac_tnkさんのを引っ張ってたのか。そこは勘違い。ごめんなさい。 一言言えば、「同じではありません」ではなくて「ここが違います」を書いてあれば誤解しなかったかも、とは思いますが。
jyojyo

2021/01/27 03:21

Do you get it‼️ Correct the answer Write the code
thkana

2021/01/27 10:39

それはそれ、これはこれ。 コードよこせはteratailのヘルプに書いてある非推奨。 そう言えば、「どういう動作を期待している」というのは一度も書かれていなかったような? 参照先サイトとはピンアサインとか変えてますよね? 私見落としてますか?
nac_tnk

2021/01/27 14:28

今、元スケッチ→UNOで動いたけど、コレを入れても曲は鳴ってもキーボードは動かないね。 なんか変なとこ書き換えた? 悪い箇所探すより、元スケッチから始めた方が良さそう。
jyojyo

2021/01/27 22:37 編集

「AVRを動かしたい????」にもう飛んでいただければありがたいです????
thkana

2021/01/28 00:00

この質問も新しく立てた質問も、質問への低評価が5以上になったので[アクティブ]のリストには載らなくなってますね。"一応"言っておくと、私は低評価は入れていません。非推奨の質問だと思った人が他にも少なからずいた、ということ。
nac_tnk

2021/01/28 14:00

なんだ、ここあったんだ。消えたから削除されたのかと思った。 なるほど、『質問への低評価が5以上になったので[アクティブ]のリストには載らな』くなるのですか。 一気に-7まで行っていますね。 って、新スレは-11!!! まぁそれは兎も角、jyojyoさんは、一体何のためにこんな書き換えをしているの? AVRマイコン単体で使いたいのならそのままATMEL Studioでコンパイルしたのを書き込めばいいじゃん。 Unoに書き込むにしても、ATMEL Studioでコンパイルしないとオリジナルと動作が違っちゃう可能性があるよ。裏でArduinoのスケッチも動くんだから。 で、コンパイルしたhexファイルをUnoに書き込まないと。
guest

回答2

0

動かないです

動くか分からないです

どっち?

動画をください

面倒。別に「動く」ものじゃないから動画は意味ないでしょう?

参照先のコードでAtmel Studio(Microchip Studio)でビルドして書きこんだら動きました。
(あれ? 手元でいじったつもりなかったけどFuse設定間違ったかな...再プログラムできなくなっちゃった。12V掛けなきゃダメか?)

コードが欲しいです

(質問を誤読していましたので、この部分削除します。)
というわけで、そのコードでAVRで動きます。どうぞ。

~~Arduinoのプログラムではないのでそれなりに書き換えないとArduino IDEでは動きません(コンパイルできない)。
~~
ここは、他人にコードをもらう場ではありません。推奨していない質問
何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
自分で勉強して頑張ってわからないところがある、というなら手伝うのもありですが。


プログラム内容も追ってみましたが、参照先から変えている部分(ポート設定)で、PB6,PB7はArduinoではハード的に他に使用(X'talを接続)しているので、そのプログラムはArduinoではちゃんとは動作しません。
Auto/Manualの切り替えについても操作が矛盾しています。
他にもあるかも知れませんが、追っていません。
(それと、元のプログラムからなんですが、どうも音程は16MHz動作で正しくなっている気がします。ちゃんと検証はしていませんが)

ハードの仕様を再定義しない限りソフト的な対応では完全な動作は不可能です。つまり、現状では動くコードは作成できません。
以上。

投稿2021/01/26 14:16

編集2021/01/27 01:05
thkana

総合スコア7639

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

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

thkana

2021/01/26 23:07

「何かを作りたいのでコードを書いてほしい」と「学校の課題を解いてほしい」は並列です。学校の課題でなくても、「コードを書いてほしい」は非推奨の質問だということなのですが理解できますか?
jyojyo

2021/01/27 22:47

「AVRを動かしたい????」にもう飛んでいただければありがたいです????
guest

0

ベストアンサー

プログラムを見てみましたけど、特にタイマー絡みのレジスタ操作をしていないようです。
つまり、Arduinoボードでも(16MHzのものでも)問題無く動きそうです。
前回の私のあげたスケッチで動くように思います。

※ただしUNOでは動いても、NANOやPRO MINIでは動きません。1kΩあたりでD13を外部でプルアップして下さい。nanoやPRO MINIはオンボードLEDが付いているので内部プルアップではHIGHにはなりません。
素のチップなら内蔵8MHzにヒューズを変えれば動くのでは?

※動画はお断りします。

投稿2021/01/27 09:56

nac_tnk

総合スコア463

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

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

jyojyo

2021/01/27 22:46

「AVRを動かしたい????」にもう飛んでいただければありがたいです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問