にわか技術部(´・ω・`)

アラフォーがウン十年ぶりに電子工作やってます。 他に物忘れが激しいのでいろいろメモとして残しておきます。 そして、詳しい方、ぜひお友達になってくださいっ!

技術部

arduinoのボタンを押すとカウントする

投稿日:2012年11月21日 更新日:

せっかく勉強しても忘れてしまうのでメモを残しておきます。
できあがったあとに無計画にブログなんか作ったから途中のものはありません・・・。

ランプを点滅くらいはサンプルスケッチでできるわけですが、

今回はボタンを押したらランプを点灯して、カウントをするというものです。

回路は

これ。o0421043812295608430
ボタン押した瞬間に一瞬オフになるというチャタリングという症状がでます。

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() );
}

これでボタンを押した瞬間だけカウントします。
出力はシリアル・ポートね。

なんて便利。

test1

test1

-技術部
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

型取りセットと樹脂ポチッたったw

思わずamazonでポチってしまったw まとめて注文だしたけど、あとで見たら全部業者が違って別々に発送されるのね・・・。 amazon商品は1品だけ。 粘土200円なのに送料400円w 6000円くら …

docomoの急速充電器の端子が壊れたので100円ショップにあるUSBケーブルを挿せるように改造してみた

夏休みである。 すっかりほったらかしになっていたこのブログを更新しますw 麻雀卓を直さなきゃいけないし、動画も作らなきゃいけない、 だけど気力がない・・・この夏休みでいろいろやることにしよう。 &nb …

arduinoで4桁7セグLEDカウンター

青色7セグLEDを買ってみた。BQ-N51BJRD これね。     で、今日はこっちを参考につくってみた。 http://garretlab.web.fc2.com/arduin …

複数無線回線(docomo,softbank,au,WiMAXなど)を使用したHDハイビジョンライブ配信ができるシステムがすごい。業務用なので単体では配信できないのがあれですが・・・。

ライブのネット配信で重要なのがやはりネット回線。 光回線のある環境なら全く問題ないが、屋外やネット環境のない場所では 無線回線が必要になってきます。

LCDの動作とライブラリ”shiftreglcd”

前回の続き。 とりあえず、hello,world!は表示されたわけですが、 shiftreglcdライブラリを使用しているため、簡単に表示できます。 表記はこれ。 #include <Shift …