Код для кнопки стоп

Я хочу написать код для игры, и в ней будет функция остановки, позволяющая игроку выйти из игры или перезапустить ее.

Как мне написать код для этой кнопки остановки? Поместить его в отдельный цикл while под циклом void?

, 👍0

Обсуждение

Вы можете использовать функцию прерывания. https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/, @Haytham


3 ответа


1

Существует множество возможных подходов. Одной из возможностей было бы настроить ваш код примерно так:

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


2

Один из самых простых способов перезапустить игру — использовать встроенную строку сброса. Arduino Uno/Due/M0/101 имеет физическую кнопку сброса рядом с разъемом USB. Для некоторых других плат, таких как Arduino Mega, он ближе к чипу в середине платы.

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

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

,

Обратите внимание, что линия сброса также доступна на контактном разъеме, что может быть удобно, если OP предпочитает подключать свою собственную кнопку., @Edgar Bonet


0

Если вы кодируете свой цикл без задержки() или циклов занятости, то это довольно просто:

void loop(){

    if(DigitalRead(RESET_BUTTON)){
       // Переинициализировать состояние игры

    }

    //остальная игровая логика.

}
,