木曜日, 11月 23, 2017

Arduino: アナログからデジタルへ

大抵のセンサーの出力はアナログです。光セル、音声マイク、赤外線距離センサーなど。Arduino ならアナログでもアナログ端子があるので使えるんですが、これを割り込み操作で使おうと思うとデジタルな値が欲しい場合があります。

オペアンプでセンサーの出力をデジタル化できます。



この回路は赤外線距離センサーの出力を増幅し、オペアンプでコンパレータ回路を実現したものです。基準値は非反転入力で調整します。

これでアナログの束縛から解放されますね。

割り込みを使った Arduino 用のプログラムはこちらです。

#include <avr/sleep.h>
int ledPin = 13;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void lightOff()
{
digitalWrite(ledPin, LOW);
}
void lightOn()
{
digitalWrite(ledPin, HIGH);
}
void sleepNow()
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0, lightOff, FALLING);
attachInterrupt(1, lightOn, RISING);
sleep_mode();
sleep_disable();
detachInterrupt(0);
detachInterrupt(1);
}
void loop() {
sleepNow();
}
view raw wakup.ino hosted with ❤ by GitHub

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...