РЕШЕНО Ошибка таймера на пустом месте. expected ')' before ';' token

Тема в разделе "Arduino & Shields", создана пользователем evgkhlopotov, 5 май 2020.

Метки:
  1. evgkhlopotov

    evgkhlopotov Нерд

    Здравствуйте.
    Помогите, пожалуйста, разобраться.


    С видео напечатал код в IDE. Выдаёт ошибку expected ')' before ';' token

    Причём, две одинаковых строчки, но с разницей только, что одна про минуты, а вторая про секунды, но как их не меняй местами, всегда ругается именно на ту, что с секундами:

    int seconds = numberOfSeconds(timeRemaining);


    Полный текст ошибки:

    Код (C++):
    C:\Arduino\2 min\sketch_may05a\sketch_may05a.ino: In function 'void countdown()':

    sketch_may05a:30:49: error: expected ')' before ';' token

         int seconds = numberOfSeconds(timeRemaining);

                                                     ^

    exit status 1
    expected ')' before ';' token

     

    Вот этот кусок кода в видео:

    [​IMG]


    А вот этот же кусок кода после компиляции у меня:

    [​IMG]

    Если поменять порядок на


    Код (C++):
        int minutes = numberOfMinutes(timeRemaining);
        int seconds = numberOfSeconds(timeRemaining);  
     
    то он откомпилирует строчку с минутами и будет ругаться на вторую строчку с секундами.




    Код целиком:


    Код (C++):
    #define numberOfSeconds(_time_) ((_time_ / 1000%60)
    #define numberOfMinutes(_time_) (((_time_ / 1000) / 60) % 60)

    #include <TM1637Display.h>

    const uint8_t OFF[] = {0, 0, 0, 0};
    const uint8_t PLAY[] = {B01110011, B00111000, B01011111, B01101110};

    TM1637Display display(2, 3); // Clock pin, Data pin

    unsigned long timeLimit = 3600000;


    void setup() {
      Serial.begin(9600);
      //set brightness
      display.setBrightness(0x0c);
      //clear the display
      display.setSegments(OFF);

    }

    void countdown() {

      unsigned long timeRemaining = timeLimit - millis();

      while (timeRemaining > 0) {
     
        int seconds = numberOfSeconds(timeRemaining);
        int minutes = numberOfMinutes(timeRemaining);


        display.showNumberDecEx(seconds, 0, true, 2, 2);
        display.showNumberDecEx(minutes, 0x80 >> 3, true, 2, 0);

        timeRemaining = timeLimit - millis();

      }
    }

    void loop() {
      countdown();

    }
     
    Последнее редактирование: 5 май 2020
  2. NikitOS

    NikitOS Public enemy Администратор

    В первой строке в коде пропущена скобка.

    Нужно так:
    Код (C++):
    #define numberOfSeconds(_time_) ((_time_ / 1000%60))
     
    arkadyf и evgkhlopotov нравится это.
  3. evgkhlopotov

    evgkhlopotov Нерд


    Это помогло. Очень благодарен!)) Спасибо.
     
    NikitOS нравится это.