せっかく勉強しても忘れてしまうのでメモを残しておきます。
できあがったあとに無計画にブログなんか作ったから途中のものはありません・・・。
ランプを点滅くらいはサンプルスケッチでできるわけですが、
今回はボタンを押したらランプを点灯して、カウントをするというものです。
回路は
これ。
ボタン押した瞬間に一瞬オフになるというチャタリングという症状がでます。
1ミリ秒ほどdelayで待ち時間をつくればいいんだけど、そのあいだは他のどうさは一切出来ません。
これを解決するのがライブラリDebounce。
http://www15.atwiki.jp/arduino/pages/24.html
からの
http://www.arduino.cc/playground/Code/Debounce
zipをダウンロードしてarduinoのインストール先のhardware/libraries/Debounceに展開する。
librariesフォルダはなかったので作る。
■今日のエラーその1
サンプルを実行させてもWProgram.hが無いみたいなエラーがでる。
旧バージョンは WProgram.h で
現在は Arduino.h に変更になったらしい。
#if defined(ARDUINO) && ARDUINO >= 100
#include “Arduino.h”
#else
#include “WProgram.h”
#endif
こんなふうにしておけばいいらしい。
■今日のエラーその2
コンパイル終了時に
avrdude: stk500_getsync(): not in sync: resp=0×00
とでてしまう。
調べてみると、基板のリセットスイッチを押しながらUSB抜き差しがいいらしいが
だめだった。
原因はCOM1になっていて通信ができていなかった。本来はCOM4。
#include
const int buttonPin = 9;
const int ledPin = 2;
int buttonState = 0;
int count = 0; //count
Debounce sw_red = Debounce(20, buttonPin);
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (sw_red.update() && sw_red.read()==HIGH ){
Serial.println( count++);
}
digitalWrite(ledPin, sw_red.read() );
}
これでボタンを押した瞬間だけカウントします。
出力はシリアル・ポートね。
なんて便利。