top of page

​電子警笛(ブレッドボード)

 ここではarduinoを用いた簡易の電子警笛鳴動器について書いていきます。

 右の動画はその警笛の音を出した時の様子になります。

​プログラムコードはまだ拙い製作当時のものなのでもっとスリムにできるはずです。各自でチャレンジしてみてください。

用意するもの

・Arduino UNO    x1   ※arduinoに搭載されたマイコンATMega328の機能を利用しているためarduino UNO以外のarduinoでは動かないものもあります。

・ジャンパワイヤ

・ブレットボード

動作のための回路

​電源はardouinoのUSBポートからとるのでardouinoをPCやモバイルバッテリーなどのUSB電源に接続。ardouinoの2番ピンのジャンパワイヤをGNDにつなぐと音が鳴ります。

​動作プログラム

下記のコードをardouino IDEに書き込んでください。

#include<avr/io.h>
#include<math.h>
float duty,duty1;
float val;
int frq,frq1;
void setup() {
  val=0;
  pinMode(2,INPUT_PULLUP); 
  pinMode(3,OUTPUT);
  pinMode(10,OUTPUT);
    TCCR2A = 0b00100001;
    TCCR2B = 0b00001110;
    TCCR1A = 0b01100001;
    TCCR1B = 0b00010010;
}


void loop() {
  while(digitalRead(2)==LOW){
   if(val<=900){
   val=val+0.15;
   }
   if(val>900){
   val=900;
   }
 
   duty=(float)val/1024;
   


   frq1=397; //周波数(数値の変更で音色が変化)
   frq=327;     //周波数(数値の変更で音色が変化)

                     //397Hzと327Hzの和音で警笛音を生成

 

 


   OCR2A = (unsigned int)(8000000 /256/ frq1);
   OCR2B = OCR2A*duty;
   OCR1A = (unsigned int)(1000000 / frq);
   OCR1B = (unsigned int)(1000000 / frq * duty);
  }
while(digitalRead(2)==HIGH){
   if(val>=0){
   val=val-0.05;
   }
   if(val<0){
   val=0;
   }
 
   duty=(float)val/1024;
   
   frq1=397;
   frq=327;  
   OCR2A = (unsigned int)(8000000 /256/ frq1);
   OCR2B = OCR2A*duty;
   OCR1A = (unsigned int)(1000000 / frq);
   OCR1B = (unsigned int)(1000000 / frq*duty);
   
  }
 

}  

ご意見などお気軽にお寄せください

メッセージが送信されました。

© 2023 トレイン・オブ・ソート Wix.comを使って作成されました

bottom of page