itsukichang

フロントエンドが得意なエンジニア.ダーツと旅行とギターが好き

Daily Arduino×Flash #5

絶賛期末試験中ですが,暇見つけてチマチマなんか作ったりしてます.
今回は,ちょっとがんばって回路組んでみたよ!
オーディオパワーアンプとかはじめて使ったよ!

#5 コンデンサマイクFlash

コンデンサマイクから取ってくる値を増幅して出力させる回路を組んで,
その値をFlash取得 → とりあえず視覚的に.
みたいな感じです.プログラムは非常に簡単です.

プログラム
  • Main.as
//Main.as
package {

	import flash.display.Sprite;
	import flash.events.Event;
	import funnel.*;
	
	public class Main extends Sprite {
		
		private var _bar:Bar;
		private var _pin:Pin;
		private var _arduino:Arduino;
		
		public function Main() {
			_arduino = new Arduino(Arduino.FIRMATA);
			_pin = _arduino.analogPin(0); //アナログ入力0番ピンにコンデンサマイク回路からの出力を接続
			init();
		}
		
		private function init():void {
			_bar = new Bar(100, 50, 0x2255ee);
			_bar.x = 0;
			_bar.y = stage.stageHeight / 2 - 25;
			addChild(_bar);
			_bar.addEventListener(Event.ENTER_FRAME, onLoop);
		}
		
		private function onLoop(e:Event):void {
			var n:Number = Math.abs(_pin.value * 1000 - 512);
			trace(n);
			var w:Number = n;
			_bar.wid = w;
		}
	}
}
  • Bar.as //バーを生成するクラス
//Bar.as
package {
	
	import flash.display.Sprite;
	
	public class Bar extends Sprite {
		
		private var _sp:Sprite;
		private var _w:Number;
		private var _h:Number;
		private var _col:uint;
		
		public function Bar(w:Number, h:Number, col:uint = 0x0) {
			_w = w;
			_h = h;
			_col = col;
			init();
		}
		
		private function init():void {
			_sp = new Sprite();
			_sp.graphics.beginFill(_col);
			_sp.graphics.drawRect(0, 0, _w, _h);
			_sp.graphics.endFill();	
			addChild(_sp);
		}
		
		public function set wid(w:Number):void {
			_w = w;	
			reDraw();
		}
		
		private function reDraw():void {
			_sp.graphics.clear();
			_sp.graphics.beginFill(_col);
			_sp.graphics.drawRect(0, 0, _w, _h);
			_sp.graphics.endFill();	
		}
	}
}

.

動作してる図(動画とか)

回路の画像と,
マイクを叩いて実際に音拾ってそれが棒の伸び縮みで分かる様子.
動画取るの大変ですね(片手塞がる的な意味で)

余談

とりあえず値とってそれを表示しただけです.これ使ってもうちょっと面白いことしたいですね><