2016年2月23日火曜日

高精細な3Dバーサライタその4

こんばんは

 先日、ドットマトリクスが1周期あたり1回しか表示されない問題があり、マイクロスイッチをもう一つ取り付けることによって改善すると投稿しました。

 しかし、よくよく考えてみると、作成していたプログラムは2回目の表示が終わった後、無限ループに突入し、その無限ループがスイッチの検出によって抜けられるという使用になっていました。そのため、1回目のドットマトリクスの表示中、2回目の表示までの間、2回目の表示中にスイッチが押された場合、その押された信号をとり逃していました。

 そこで、結論としましては、スイッチの検出を割り込みによって実現することにしました。考えてみればすごく単純なことなのですが、なぜか今まで気が付きませんでした。なんにせよ、スイッチ一つでも、きちんと1周期あたり2回の表示ができるようになりました。



とりあえず、このように表示されるようになりました。少し、2重になってしまっているところがあるのは、タッチセンサが完全に終端で検出するわけではないためです。きれいに表示させるためには、タッチセンサが触れてからの待ち時間を調節する必要があります。
 これで、一応プログラムの方は大方完成となります。ただ、たまに、予期しない表示があったりするため、その点を直したら、ソースを公開しようと考えています。
 
一応、割り込み部分のソースをあげておきます。
#include <avr/pgmspace.h>

void setup() {                
  
  //ピン設定

  attachInterrupt(2, change_sw, RISING);//割り込み(21番ピン)
}

volatile int state = 0;

void loop() {

  //処理

}

void change_sw()
{
  state = 1;
  delay(30);//チャタリング防止
}
 
 
参考にしたサイト
Arduinoリファレンス attachInterrupt()


2 件のコメント:

  1. 高精細な3Dバーサライタを製作した時、いくらかかりましたか?作ってみたいと思っているので、参考までに聞きたいです。

    返信削除
  2. コメントありがとうございます。

    廃材を使っている部分もあるので、詳細は分かりませんが、

    シフトレジスタ、トランジスタアレイ、ドットマトリクスなどの電気部品で4000円程度
    スライドブッシュやシャフト、モータなどで7000円程度
    アクリル板とアルミの角パイプや棒材で2000円程度
    後、私は持っていたのでそのまま使ったのですが、Arduino Megaの互換機で1000円程度で買ったと記憶しています。

    それ以外に、配線などを含めて16000円くらいだと思います。
    特にモータやスライドブッシュが高いので、もう少し安い部品を使ったり、中国の通販サイトなどを探せば、もう少し安くなると思います。

    返信削除