Ошибка при попытке создания многомерного массива

Тема в разделе "Arduino & Shields", создана пользователем CR_Est, 27 июл 2017.

  1. CR_Est

    CR_Est Нуб

    Код (C++):

    #include <IRremote.h>

    IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

    decode_results results;


    void setup() {
      Serial.begin(9600);
      irrecv.enableIRIn(); // запускаем прием
    }

    void loop() {
       constexpr long unsigned int a[2][3] =    //база с кодами кнопок
    {0xFFA25D,0xFF629D,0xFFE21D},{0xFFA25D,0xFF629D,0xFFE21D};
      if ( irrecv.decode( &results )) { // если данные пришли
        switch(results.value){
          case a[0][0]:
            Serial.print("1");
            break;
          case a[0][1]:
            Serial.print("2");
            break;
        }
        irrecv.resume(); // принимаем следующую команду
      }
    }
    Работаю с ИК приёмником и пультом. Для удобства хотел сделать массив "a" с кодами кнопок, но при попытке его создания выходит ошибка:
    error:expected unqualified-id before '{' token
    {0xFFA25D,0xFF629D,0xFFE21D},{0xFFA25D,0xFF629D,0xFFE21D};
    ________________________________^
     
  2. ostrov

    ostrov Гуру

    Двух и более мерный массив нельзя заполнить при декларировании.
     
  3. mcureenab

    mcureenab Гуру

    Да ладно! )))
     
  4. mcureenab

    mcureenab Гуру

    Всё вместе нужно в фигурные скобки взять.
     
  5. NikitOS

    NikitOS Король шутов Администратор

    Наверное:rolleyes:
     
  6. ostrov

    ostrov Гуру

    По сути любой массив одномерен. )
     
  7. ostrov

    ostrov Гуру

    Пример:
    Код (C++):
    const unsigned int iALARM[6][16] = { // расписание [порядковый номер][режим]
      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      830, 835, 835, 920, 930, 1015, 1035, 1120, 1140, 1225, 1240, 1325, 1335, 1420, 1430, 1515,
      830, 900, 905, 945, 955, 1035, 1055, 1135, 1155, 1235, 1250, 1330, 1340, 1420, 1430, 1510,
      830, 915, 930, 1005, 1020, 1055, 1115, 1150, 1210, 1245, 1300, 1335, 1345, 1420, 1430, 1505,
      830, 910, 925, 1005, 1020, 1100, 1115, 1155, 1210, 1250, 1300, 1340, 1350, 1430, 3000, 3000,
      830, 905, 920, 955, 1010, 1045, 1100, 1135, 1150, 1225, 1235, 1310, 1320, 1355, 3000, 3000,
    };
     
  8. Limoney

    Limoney Гик

    Можно заполнять двухмерный массив
    Код (C++):

    unsigned long array [2][3] = { {0xFFA25D,0xFF629D,0xFFE21D},
                                   {0xFFA25D,0xFF629D,0xFFE21D} };
     
     
    Последнее редактирование: 27 июл 2017
  9. mcureenab

    mcureenab Гуру

    Это вы дисковому массиву расскажите.
     
  10. ostrov

    ostrov Гуру

    Осталось прикрутить его к Ардуино.
     
  11. Limoney

    Limoney Гик

    Для чего записывать коды кнопок в двухмерный массив? Достаточно одномерного массива.
     
  12. Neu

    Neu Нерд

    +
    Тем более, что значения в нем почему-то просто повторяются:
    Код (C++):
    {0xFFA25D,0xFF629D,0xFFE21D}, {0xFFA25D,0xFF629D,0xFFE21D}
     
  13. CR_Est

    CR_Est Нуб

    Спасибо, помогло
     
  14. CR_Est

    CR_Est Нуб

    Это пока просто так, для теста, дальше будет клавиатура 3х7 с разными кодами
     
    Последнее редактирование: 28 июл 2017
  15. CR_Est

    CR_Est Нуб

    Для удобства, чтоб был [ряд][столбец]
     
  16. Limoney

    Limoney Гик

    клавиатура 3х7 с разными кодами на ИК пульт. Просто по коду кнопки определяется какая была нажата кнопка. Хотя зависит от задачи.
     
  17. Limoney

    Limoney Гик

    Кстати, пример ostrov рабочий