Indoor airplane world
 





 ArduinoでATtinyにスケッチが書き込めるかとテストしてみました。ATtinyにスケッチを書き込むための段取りは、ネットを検索するとたくさん見つかるのでここでは省略します。



 以前購入してあったATtiny45Vと新たに購入したATtiny85が手元にあるので、とりあえずLチカテストで動作確認しました。



 そして実際の使用を前提に、ATtiny45Vに赤外線送信機のスケッチを書いて動作を確認してみました。



 ピンとポートの関係は上図のようになっています。そして使えるコマンドは以下の通り。

pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()

 スケッチを書き込んだ後、ジョイスティックを繋いで出力端子D0の出力波形をオシロで確認してみました。



 波形は38kHzの変調波と3チャンネル分の出力で、左からエルロン、エレベータ、スロットルの順。



 ジョイスティックのエルロンは中央で、スロットルを一番上に上げた状態。



 ジョイスティックのスロットルは中央で、エルロンを一番左に倒した状態。



 ジョイスティックのスロットルは中央で、エルロンを一番右に倒した状態。エレベータは固定。

 以下に今回のスケッチを載せましたが、このプログラムをアセンブラで書くことを考えたら、Arduino IDEの方が簡単です。

 今回は左右上下ともにセンターに戻るタイプのジョイスティックなので、スロットルはセンターから上だけを使うように設定。このような設定はmapコマンドが便利です。

thr = map(thr, 525, 1023, 0, 1023);





// ATtiny45用2チャンネル赤外線送信機

void setup(){
pinMode(0, OUTPUT); // 5Pin(PWM Pin0)出力
}

void Modulation(){
for (int i = 0; i < 23; i++){ // 38kHz変調
PORTB = B00000001;
delayMicroseconds(9); // on
PORTB = B00000000;
delayMicroseconds(17); // off
}
digitalWrite(0, LOW);
delayMicroseconds(400);
}

void SignalOut(){
Modulation();
}

void loop(){
int ail = analogRead(A1); // 7Pin(analog input 1)
int thr = analogRead(A2); // 3Pin(analog input 2)
thr = map(thr, 525, 1023, 0, 1023); // スロットルの中央から上だけを使用
if (ail <= 0) ail = 1;
if (thr <= 0) thr = 1;

SignalOut(); // start
delayMicroseconds(ail);
SignalOut(); // ail
delayMicroseconds(500); // fix
SignalOut(); // ele
delayMicroseconds(thr);
SignalOut(); // thr
delay(15);
}

コメント ( 0 ) | Trackback (  )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする


« Arduino Pro m... ウォータジェ... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。