カテゴリ:マイクロチップ
センサの右から移動したときと、左から移動したときで出力の変位の仕方が変わるので、 2色LEDをキティの耳の部分につけて、青と赤を光らせています。たまに変位が同じになるので、そのときは、両耳が黄色に光ります。 液晶表示器のルーチンをそのまま残したサンプルスケッチは、次のとおりです。 括弧は半角にしてください。 #include <LiquidCrystal.h> #include <MsTimer2.h> // LiquidCrystal display with: // rs on pin 12 // rw on pin 11 // enable on pin 10 // d4, d5, d6, d7 on pins 5, 4, 3, 2 int inc = 0; int dec = 0; int now = 0; int before = 0; int count = 10; int leddec = 0; int ledinc = 0; int val = 0; int analogPin = 0; static boolean leftled = HIGH; static boolean rightled = HIGH; LiquidCrystal lcd(7, 8, 9, 10, 11, 12, 13); void flash() { if (inc - ledinc > dec - leddec ){ leftled = HIGH; rightled = LOW; } else if (inc - ledinc < dec - leddec ) { leftled = LOW; rightled = HIGH; } else if (inc - ledinc > 0) { leftled = HIGH; rightled = HIGH; } else { leftled = LOW; rightled = LOW; } digitalWrite(2, leftled); digitalWrite(3, rightled); ledinc = inc; leddec = dec; } void setup() { // Print a message to the LCD. pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); int analogPin = 0; lcd.print("hello, world!"); analogReference(INTERNAL); MsTimer2::set(2000, flash); // MsTimer2::start(); } void loop() { before = now; now = analogRead(analogPin); // count = count - 1; if (count < 1) { count=count + 1; if (now > before + 3) { inc = inc + 1; } if (now < before - 3) { dec = dec + 1; } } val = analogRead(analogPin); // lcd.clear(); lcd.setCursor(0, 0); lcd.print("cnt="); lcd.print(count); lcd.setCursor(8, 0); lcd.print("now="); lcd.print(now); lcd.setCursor(0, 1); lcd.print("inc="); lcd.print(inc); lcd.setCursor(8, 1); lcd.print("dec="); lcd.print(dec); delay(200); } お気に入りの記事を「いいね!」で応援しよう
最終更新日
2010年01月19日 00時29分51秒
コメント(0) | コメントを書く
[マイクロチップ] カテゴリの最新記事
|
|