以下のソースでIO14に挿してみたがカウントされなかった。
手で触ったり、USBのシールドに繋ぐとカウントされるのでESP8266だとダメなのかも?
(カウントされるけど秒単位以上の速さです。。。)
#include <ESP8266WiFi.h>
#define AcPin 14 // 対象ピンに5cmくらいの線を差す
// 商用電源の周波数でカウント
volatile int cntAcHz = 0;
volatile long sec = 0;
void blink() {
cntAcHz++;
if(cntAcHz==50) {
cntAcHz=0;
sec++;
}
}
void setup() {
Serial.begin(115200);
// Wifi OFF
WiFi.mode(WIFI_OFF);
pinMode(AcPin, INPUT);
attachInterrupt(AcPin, blink, RISING);
Serial.println("AcHzCount PIN=" + AcPin);
}
int wkSec = 0;
void loop() {
if (wkSec != sec) {
Serial.print("AC Hz Sec = ");
Serial.println(sec);
wkSec = sec;
}
}
UNOでも試してみる。線を差すピンと割り込み番号の指定が違うのでsetup内を以下のように変更。
pinMode(2, INPUT); attachInterrupt(0, blink, RISING);
こっちはカウントされた。
5cmだとスピードが早かったので15cmくらいのをつけた。
電源周りが悪いのかも?
0 件のコメント:
コメントを投稿