0

私は宿題のコードを書いています。課題の一部は、16x2 LCD に arduino がオンになっている時間を示す時計を表示させることです。このクロックは、タイマー割り込みで実行する必要があります。私はその部分を機能させましたが、割り当ての 2 番目の部分は、クロックをすべて 0 にリセットする別の割り込み (信号としての外部ボタン) を持つことです。現在、ISR は何もしていないようです。何か案は?

#include <LiquidCrystal.h>
#include <TimerOne.h>

int buttonPin = 2;
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
int secs, tens, minutes, tenminutes, hours, tenhours;
volatile long counter = 0;

void setup() {
  Timer1.initialize(100000);
  Timer1.attachInterrupt(timerISR);
  pinMode(buttonPin, INPUT_PULLUP);
  attachInterrupt(0, buttonPressISR, CHANGE);
  lcd.begin(16, 2);
  lcd.setCursor(0,1);
  lcd.print("0");
  lcd.setCursor(1,1);
  lcd.print("0");
  lcd.setCursor(2, 1);
  lcd.print(":");
  lcd.setCursor(3,1);


lcd.print("0");
  lcd.setCursor(4,1);
  lcd.print("0");
  lcd.setCursor(5, 1);
  lcd.print(":");
  lcd.setCursor(6,1);
  lcd.print("0");
  lcd.setCursor(7,1);
  lcd.print("0");

}

void loop() {
  secs = (counter/10) % 10;
  tens = (counter/100) % 6;
  minutes = (counter/600) %10;
  tenminutes = (counter/6000) %6;
  hours = (counter/36000) %10;
  tenhours = (counter/360000) %10;
  lcd.setCursor(7, 1);
  lcd.print(secs);
  lcd.setCursor(6,1);
  lcd.print(tens);
  lcd.setCursor(4, 1);
  lcd.print(minutes);
  lcd.setCursor(3, 1);
  lcd.print(tenminutes);
  lcd.setCursor(1, 1);
  lcd.print(hours);
  lcd.setCursor(0, 1);
  lcd.print(tenhours);

}

void buttonPressISR() {
  counter = 0;
}

void timerISR() {
  counter++;
}
4

1 に答える 1

0

Arduino に関する質問のための Arduino Stack Exchange ベータ サイトがあることをご存知ですか?

コードに明らかなエラーは見当たりません。コードの割り込みピン 0 が、実際には Arduino のデジタル ピン 2 であることをご存知ですか?

于 2015-02-05T16:32:42.480 に答える