2018年5月19日土曜日

商用電源で秒数カウント

こちらのブログ AC 50HzのクロックでLEDピカピカ その2 の商用電源でカウントするのをESP8266でできないか試してみた。


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

コメントを投稿