Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Сравнивать переменные с элементами массива

Вт сен 12, 2023 07:30:45

Доброго времени друзья! Помогите решить задачку. Смысл работы кода такой:
На запоминание
Зажечь светодиод, через определенное время нужно нажать кнопки, соответствующие светодиоду в правильной последовательности. С каждой итерацией увеличивать количество диодов на 1.
На пример:
Зажги 3 - нужно нажать 3. Зажги 2, 7 - нужно нажать 2, 7 и т.д.
Вначале циклом я набираю массив, далее нужно нажимать кнопки и сравнить номер кнопки с элементом массива. Но запрограммировать ардуино ждать нажатия не могу. Есть идеи?
Код:
int key() {
  int val = analogRead(0);
  if (val < 50) return 3;
  else if (val < 513) return 4;
  else if (val < 683) return 5;
  else if (val < 768) return 6;
  else if (val < 819) return 7;
  else return 0;
} //int key()
int r, c, n, i, j, q, w, u, l;
int arr[50];
long randNumber;
void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(17));
  n = 0;
}

void loop()
{
  for (q = 0; q < 1000; q++) { // Цикл1 который увеличивает количество диодов на 1
    n++;
    Serial.println("----------"); delay(1000);
    // Serial.print("Цикл1-n:");
    // Serial.println(n);
    for (i = 0; i < n; i++) { // Цикл2 который набирает массив
label:
      randNumber = random(3, 7);
      if (r == randNumber) {
        goto label;
      }
      r = randNumber;
      arr[i] = randNumber;
      digitalWrite(randNumber, HIGH);
      delay(200);
      digitalWrite(randNumber, LOW);
      //  Serial.print("randNumber:");
      //  Serial.println(randNumber);
      // return arr;
    }  delay(1500);
    //   for (l = 0; l < 1111; l++){ //Цикл таймер
    for (w = 0; w < n; w++) { // Цикл3 должен ждать нажатия кнопки, и сравнить значение из key() с элементом массива
      int k = arr[w];
      if (k == key()) {
        Serial.println("OK"); // Вся загвоздка здесть. Цикл пролетает и не ожидает нажатия
      }
      else
      {
        Serial.println("NO");
      }

    }//}//Цикл таймер
  }
}

Re: Сравнивать переменные с элементами массива

Вт сен 12, 2023 11:50:32


https://www.viralsciencecreativity.com/ ... emory-game

Добавлено after 12 minutes 14 seconds:
+
https://github.com/TechWithOmid/Arduino ... ree/master
https://github.com/simonprickett/arduin ... ree/master
https://github.com/yanaki/arduino-memor ... y-Game.ino
https://github.com/arnegiacomo/Arduino_ ... /tree/main
...
Ответить