Код для кнопки стоп
Я хочу написать код для игры, и в ней будет функция остановки, позволяющая игроку выйти из игры или перезапустить ее.
Как мне написать код для этой кнопки остановки? Поместить его в отдельный цикл while под циклом void?
@newmember, 👍0
Обсуждение3 ответа
Существует множество возможных подходов. Одной из возможностей было бы настроить ваш код примерно так:
enum { STOPPED, PLAYING } flag;
void setup() {
// настраиваем материал...
flag = STOPPED;
}
void loop() {
while (flag == STOPPED)
{
// ждем кнопки запуска
if (start button pressed)
{
// инициализируем игру...
flag = PLAYING;
}
}
while (flag == PLAYING)
{
// играть в игру
if (stop button pressed)
{
flag = STOPPED;
}
}
}
И мне нужно поместить этот код в начало цикла()..?, @Sonali_B
Один из самых простых способов перезапустить игру — использовать встроенную строку сброса. Arduino Uno/Due/M0/101 имеет физическую кнопку сброса рядом с разъемом USB. Для некоторых других плат, таких как Arduino Mega, он ближе к чипу в середине платы.
Линия сброса удерживается высоким нагрузочным резистором. Эта кнопка замыкает контакт сброса на Gnd, перезагружая микроконтроллер.
После сброса микроконтроллер снова запускается, как если бы он был только что включен. Преимущество этого заключается в экономии на добавлении кода для обработки сброса игры.
Обратите внимание, что линия сброса также доступна на контактном разъеме, что может быть удобно, если OP предпочитает подключать свою собственную кнопку., @Edgar Bonet
Если вы кодируете свой цикл без задержки() или циклов занятости, то это довольно просто:
void loop(){
if(DigitalRead(RESET_BUTTON)){
// Переинициализировать состояние игры
}
//остальная игровая логика.
}
- Как объявить массив переменного размера (глобально)
- Программирование Arduino с использованием Python, а не C/C ++
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Как справиться с rollover millis()?
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Можно ли сделать несколько функций loop() с помощью Arduino Uno?
- Какие накладные расходы и другие соображения существуют при использовании структуры по сравнению с классом?
- устаревшее преобразование из строковой константы в 'char*'
Вы можете использовать функцию прерывания. https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/, @Haytham