Как только у вас кнопка заработает, вы захотите сделать какие-либо действия, основанные на том, сколько раз нажата кнопка. Чтобы сделать это, вы должны знать, когда кнопка меняет состояние с выключенного на включенное, и посчитать, сколько раз это изменение состояния происходит. Это называется состояние обнаружения изменений.
Необходимое оборудование
Цепь
Схема
Скетч постоянно читает состояние кнопки. Затем он сравнивает состояние кнопки с предыдущем состоянием через цикл. Если текущее состояние кнопки, отличается от последнего состояния кнопки и текущее состояние кнопки включено, то кнопка изменилась с выключено на включено. Скетч затем увеличивает счетчик кнопки.
Скетч также проверяет значение счетчика кнопки, и если оно кратно четырем, то включает светодиод на контакте 13. В противном случае, он выключает его.
Код
const int buttonPin = 2;
const int ledPin = 13;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
}
else {
Serial.println("off");
}
}
lastButtonState = buttonState;
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
const int ledPin = 13;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
}
else {
Serial.println("off");
}
}
lastButtonState = buttonState;
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
http://hwmanblog.blogspot.com/2013/08/attiny13.html
ОтветитьУдалить