以下のソースで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 件のコメント:
コメントを投稿