Сбросить счетчик в ноль

Не могу сообразить как написать скетч, чтобы после сброса в ноль, счетчик продолжил считать нажатие кнопки с нуля.

"'const int buttonPin = 10; // Пин, к которому подключена кнопка
int buttonState = 0; // Текущее состояние кнопки
int lastButtonState = 0; // Предыдущее состояние кнопки
int count = 0; // Счетчик нажатий

void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
buttonState = digitalRead(buttonPin);
if (Serial.available() == 1)
{count = 0;
delay(100);}

else if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
count++;
Serial.println(“Button pressed “);
Serial.println(count);
Serial.println(” times”);
Serial.print(‘.’);
}
delay(50); // Задержка для устранения дребезга контактов
}
lastButtonState = buttonState;
}
//Эта программа считывает состояние кнопки с кнопкой 2 и увеличивает счетчик нажатий каждый раз, когда кнопка нажата. Результат выводится в порт порт на скорости 9600 бод. Помните, что для проведения экспериментов вам понадобится подключить кнопку к плате Arduino.'"

ChatGPT у меня нет.

Для начала сделайте так

а еще расскажите, при каких условиях вы ожидаете сброса счетчика в 0?

const int buttonPin = 10; // Пин, к которому подключена кнопка
int buttonState = 0; // Текущее состояние кнопки
int lastButtonState = 0; // Предыдущее состояние кнопки
int count = 0; // Счетчик нажатий

void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
buttonState = digitalRead(buttonPin);
if (Serial.available() == 1)
{count = 0;
delay(100);}

else if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
count++;
Serial.println(“Button pressed “);
Serial.println(count);
Serial.println(” times”);
Serial.print(‘.’);
}
delay(50); // Задержка для устранения дребезга контактов
}
lastButtonState = buttonState;
}
//Эта программа считывает состояние кнопки с кнопкой 2 и увеличивает счетчик нажатий каждый раз, когда кнопка нажата. Результат выводится в порт порт на скорости 9600 бод. Помните, что для проведения экспериментов вам понадобится подключить кнопку к плате Arduino.

Дак а зачем ему дальше считать, там при 0 же взрывается всё.

1 лайк

хочу отправить цифру один из сериал монитора в микроконтроллер и счетчик сбросился в ноль.

а как правильно сбросить счетчик, что бы после сброса, он начал новый цикл счета?

Очевидно же, программу написать в соответствии с заданным алгоритмом. Есть у тебя алгоритм?

баюс, что вот это не так работает, как ты думаешь

Вы знаете, я вот другого не понимаю.

А как можно неправильно сбросить в ноль, чтобы он потом не начал новый отсчёт? По мне так, как ни сбрасывай, всё равно начнёт.

Из любопытства заглянул в код. Ничего не понял.

Скажите пожалуйста, что у Вас написано в строке №13. Только по-русски, нормальными словами. Что там написано?

=======================

И, да, кстати, Вы, вроде, вчера обещали:

И чего не нашли? Что случилось? Что-то не срослось? Не пофартило? А сессия припекает?

Если отправить из монитора порта единицу, то Serial.available() будет возвращать число больше 0, до тех пор, пока не будет прочитано то, что там “available”. И едва ли оно будет равно 1, т.к. кроме единицы будет передан еще символ(или 2) конца строки.

Вам, наверное, нужно написать что-то вроде

while (Serial.available()) {
	if (Serial.read() == '1') {
		count = 0;
		delay(100); // Зачем тут delay?
	}
}

вместо 13-15 строк

Здравствуйте, спасибо за поправки. Я посчитал что задержка поможет обновить запрос, но понимаю что ошибался.

Я же нашел прошлый раз. Но я пытаюсь создать счетчик, что бы в процессе научиться создавать проекты в Ардуино. И так как у вас отвечают и поправляют, что очень приятно, я и пишу Вам. Пусть хоть и с издевкой, но так везде.

Извиняюсь, не перепроверил себя прежде отправил.

А ответ на мой вопрос будет?

Спасибо Вам, немного понял, Serial.availabel() это буфер. Нужно дальше было создать переменную приравненную к Serial.read() и с полученными данными уже работать.

Ничего, Билл Гейтс тоже когда-то начинал))

Какой -то беззубый новичок пошел… А где же обиды и рассуждения о том, зачем нужен форум?
Не, так неинтересно…

1 лайк