初めに
こんにちは!
授業でArduinounoとAtmega328を触っているものです。現在、成果物として、サンプル曲をledで光らすようにするプログラムを作成中です。ソフトウェアに対応するシステムが出来上がっているのですが、これをハードウェアで鳴らしたいときにどうすれば良いのか分からずに困っています‼️
そして同じ動作をさせたいです。
プログラムコード
動作成功
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 }
このコードで実行したいこと
現在、ArduinounoとAtmega328を使っています。ソフトウェアは成功していますがハードウェアはledと音を鳴らすのが困難になっています。
最終的に達成したいこと
課題の提出がもう休みあけに出さないといけないので焦っています‼️