Ошибка в скетче

Тема в разделе "Arduino & Shields", создана пользователем eg12, 22 мар 2018.

  1. eg12

    eg12 Нуб

    Я новичок написал вот такой скетч ( со строки {int Hours_62193421_1; компиляция c flprog)
    Код (C++):

    #include <TM1637.h>

    const int butSPin = 2;

    int butSState = 0;

    void setup() {
    pinMode (butSPin , INPUT);

    }

    int flag=0;

    void loop(){
    if(digitalRead(butSState)==HIGH&&flag==0)

    {int Hours_62193421_1;
    int Mins_62193421_1;
    bool Sec_62193421_1;
    int Brightness_62193421_1;
    TM1637 tm1637_62193421_1(7 , 8);
    int8_t TimeDisp_62193421_1[] = {0x00,0x00,0x00,0x00};
    int _gtv1;
    int _gtv2;
    bool _gtv4;
    int _gtv5;
    bool _gtv6;
    bool _gtv7;
    bool _gtv8;
    bool _gtv9;
    bool _trgrt6 = 0;
    bool _trgrt6I = 0;
    bool _trgrt5 = 0;
    bool _trgrt5I = 0;
    bool _tim1I = 0;
    bool _tim1O = 0;
    unsigned long _tim1P = 0UL;
    bool _bounseInputD4S = 0;
    bool _bounseInputD4O = 0;
    unsigned long _bounseInputD4P = 0UL;
    bool _gen1I = 0;
    bool _gen1O = 0;
    unsigned long _gen1P = 0UL;
    bool _changeNumber1_Out = 0;
    int _changeNumber1_OLV;
    bool _trgrt4 = 0;
    bool _trgrt4I = 0;
    bool _trgs1 = 0;
    bool _trgrt3 = 0;
    bool _trgrt3I = 0;
    bool _trgrt1 = 0;
    bool _trgrt1I = 0;
    bool _count1I = 0;
    int _count1P = 0;
    bool _trgrt2 = 0;
    bool _trgrt2I = 0;
    bool _gen2I = 0;
    bool _gen2O = 0;
    unsigned long _gen2P = 0UL;
    bool _trgt1 = 0;
    bool _trgt1I = 0;
    void setup()
    {
    pinMode(4, INPUT);
    digitalWrite(4, HIGH);
    pinMode(9, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(13, OUTPUT);

    _bounseInputD4O =  digitalRead(4);
    tm1637_62193421_1.set();
    tm1637_62193421_1.init();
    }
    void loop()
    {int _tempVariable_int;// здесь ошибка ============================================

    bool  _bounceInputTmpD4 =  (digitalRead (4));

    if (_bounseInputD4S)
        {
         if (millis() >= (_bounseInputD4P + 40))
             {_bounseInputD4O= _bounceInputTmpD4; _bounseInputD4S=0;}
         }
    else
        {
         if (_bounceInputTmpD4 != _bounseInputD4O )
             {_bounseInputD4S=1; _bounseInputD4P = millis();}
          }




    //Плата:1
    if (!(_bounseInputD4O)) { if (_trgrt5I) { _trgrt5 = 0;} else {_trgrt5 = 1; _trgrt5I = 1;} } else {_trgrt5 = 0; _trgrt5I = 0;};
    bool  _tmp1 = ( (_trgrt5) || (( (_gtv6) && (_gtv7) )) );
    if (_tmp1)  { if (! _trgt1I) _trgt1 = ! _trgt1; }
    _trgt1I = _tmp1;
    _gtv6 = _trgt1;
    digitalWrite(6, !(_gtv6));
    digitalWrite(5, _gtv6);
    digitalWrite(13, ( (_gtv6) && (_gtv4) ));
    if (_gtv6) { if (! _gen2I) { _gen2I = 1; _gen2O = 1; _gen2P = millis(); } } else { _gen2I = 0 ; _gen2O= 0;}
    if (_gen2I) {  if ( _isTimer ( _gen2P , 30000 )) { _gen2P = millis(); _gen2O = ! _gen2O;}}
    _gtv8 = _gen2O;

    //Плата:2
    if (!(0)) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
    if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}
    _gtv4 = _gen1O;
    if (_gen1O) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;};
    if (_trgrt1) {
    _gtv5 = (map(( (analogRead (0))), (0), (1023), (0), (300)));
    }
    if (_changeNumber1_Out) {_changeNumber1_Out = 0;} else {_tempVariable_int = _gtv5;
    if (_tempVariable_int != _changeNumber1_OLV) {_changeNumber1_OLV = _tempVariable_int; _changeNumber1_Out = 1;}
    }
    if (!(0)) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;};
    if (_gtv7) { if (_trgrt3I) { _trgrt3 = 0;} else {_trgrt3 = 1; _trgrt3I = 1;} } else {_trgrt3 = 0; _trgrt3I = 0;};
    if(( (( (!(_gtv6)) && (_changeNumber1_Out) )) || (_trgrt2) || (_trgrt3) )) _count1P = (_gtv5);
    if (( (!((_gtv5) < (1))) && (_gtv8) ))
       {
       if (! _count1I)
          {
           _count1P = _count1P-1;
           _count1I = 1;
          }
       }
    else
       {
       _count1I=0;
       }
    if ((_count1P) < (1)) { if (_trgrt4I) { _trgrt4 = 0;} else {_trgrt4 = 1; _trgrt4I = 1;} } else {_trgrt4 = 0; _trgrt4I = 0;};
    _gtv7 = _trgrt4;
    _gtv1 = _count1P;

    //Плата:3
    //Наименование:Дисплей
    _gtv2 = ((_gtv1)/(60))*(60);
    Hours_62193421_1 = (_gtv1)/(60);
    Mins_62193421_1 = (_gtv1)-(_gtv2);
    Sec_62193421_1 = ( (_gtv4) && (_gtv6) );
    Brightness_62193421_1 = 5;
    TimeDisp_62193421_1[0] = Hours_62193421_1 / 10;
    TimeDisp_62193421_1[1] = Hours_62193421_1 % 10;
    TimeDisp_62193421_1[2] = Mins_62193421_1 / 10;
    TimeDisp_62193421_1[3] = Mins_62193421_1 % 10;
    if ( Sec_62193421_1 ) tm1637_62193421_1.point(HIGH); else tm1637_62193421_1.point(LOW);
    tm1637_62193421_1.set(Brightness_62193421_1);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
    tm1637_62193421_1.display(TimeDisp_62193421_1);


    //Плата:4
    if(_gtv6) _trgs1 = 1;
    if(_gtv9) _trgs1 = 0;
    if (( (_trgs1) && (_gtv7) )) { if (_trgrt6I) { _trgrt6 = 0;} else {_trgrt6 = 1; _trgrt6I = 1;} } else {_trgrt6 = 0; _trgrt6I = 0;};
    _gtv9 = _trgrt6;
    if(_trgrt6) {_tim1O = 1; _tim1I = 1;} else { if(_tim1I) {_tim1I = 0; _tim1P = millis();} else { if (_tim1O) {if ( _isTimer(_tim1P, 5000)) _tim1O = 0;}}}
    digitalWrite(9, ( (_gtv4) && (_tim1O) ));




    }
    bool _isTimer(unsigned long startTime, unsigned long period )
      {
      unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
      }


       flag = 0
         }

         

          if(digitalRead(butSState)==LOW&&flag==1)

            flag=0;

         }

    }

     

    выдаёт ошибку
    Arduino: 1.8.5 (Windows 7), Плата:"Arduino Nano, ATmega328P"

    C:\Users\Татьяна\Documents\Arduino\sketch_mar22a\sketch_mar22a.ino: In function 'void loop()':

    sketch_mar22a:63: error: a function-definition is not allowed here before '{' token

    sketch_mar22a:76: error: a function-definition is not allowed here before '{' token

    sketch_mar22a:184: error: expected '}' at end of input

    sketch_mar22a:184: error: expected '}' at end of input

    exit status 1
    a function-definition is not allowed here before '{' token

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"


    заранее спасибо!!!
     
    Последнее редактирование: 23 мар 2018
  2. mcureenab

    mcureenab Гуру

    Дважды
    void loop объявлена
    И внутри первой loop торчит объявление void setup.

    Разберите внимательно всю эту кашу. И читайте что говорит компилятор.
     
    eg12 нравится это.
  3. eg12

    eg12 Нуб

    как избежать дважды loop
     
  4. mcureenab

    mcureenab Гуру

    Убрать лишнее объявление
    void loop().
    И не повторять эту ошибку.
     
  5. mcureenab

    mcureenab Гуру

    После функции

    Код (C++):
    bool _isTimer(unsigned long startTime, unsigned long period )
    {
      unsigned long currentTime;
      currentTime = millis();
      if (currentTime>= startTime)
      {
        return (currentTime>=(startTime + period));
      } else
      {
        return (currentTime >=(4294967295-startTime+period));
      }
    }
     
    Идёт ещё какой то код.

    Такое ощущение что ты втыкал куски кода куда попало.
     
  6. eg12

    eg12 Нуб

    а тут что ??????
    Код (C++):
    #include <TM1637.h>
    int Hours_62193421_1;
    int Mins_62193421_1;
    bool Sec_62193421_1;
    int Brightness_62193421_1;
    TM1637 tm1637_62193421_1(7 , 8);
    int8_t TimeDisp_62193421_1[] = {0x00,0x00,0x00,0x00};
    int _gtv1;
    int _gtv2;
    bool _gtv4;
    int _gtv5;
    bool _gtv6;
    bool _gtv7;
    bool _gtv8;
    bool _gtv9;
    bool _trgrt6 = 0;
    bool _trgrt6I = 0;
    bool _trgrt5 = 0;
    bool _trgrt5I = 0;
    bool _tim1I = 0;
    bool _tim1O = 0;
    unsigned long _tim1P = 0UL;
    bool _bounseInputD4S = 0;
    bool _bounseInputD4O = 0;
    unsigned long _bounseInputD4P = 0UL;
    bool _gen1I = 0;
    bool _gen1O = 0;
    unsigned long _gen1P = 0UL;
    bool _changeNumber1_Out = 0;
    int _changeNumber1_OLV;
    bool _trgrt4 = 0;
    bool _trgrt4I = 0;
    bool _trgs1 = 0;
    bool _trgrt3 = 0;
    bool _trgrt3I = 0;
    bool _trgrt1 = 0;
    bool _trgrt1I = 0;
    bool _count1I = 0;
    int _count1P = 0;
    bool _trgrt2 = 0;
    bool _trgrt2I = 0;
    bool _gen2I = 0;
    bool _gen2O = 0;
    unsigned long _gen2P = 0UL;
    bool _trgt1 = 0;
    bool _trgt1I = 0;
    const int butSPin = 2;
    int butSState = 0;
    void setup()
    {
    pinMode(4, INPUT);
    digitalWrite(4, HIGH);
    pinMode(9, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(13, OUTPUT);

    _bounseInputD4O =  digitalRead(4);
    tm1637_62193421_1.set();
    tm1637_62193421_1.init();
    pinMode (butSPin , INPUT);

    }

    int flag=0;

    void loop(){
    if(digitalRead(butSState)==HIGH&&flag==0)
    {

    int _tempVariable_int;

    bool  _bounceInputTmpD4 =  (digitalRead (4));

    if (_bounseInputD4S)
        {
         if (millis() >= (_bounseInputD4P + 40))
             {_bounseInputD4O= _bounceInputTmpD4; _bounseInputD4S=0;}
         }
    else
        {
         if (_bounceInputTmpD4 != _bounseInputD4O )
             {_bounseInputD4S=1; _bounseInputD4P = millis();}
          }




    //Плата:1
    if (!(_bounseInputD4O)) { if (_trgrt5I) { _trgrt5 = 0;} else {_trgrt5 = 1; _trgrt5I = 1;} } else {_trgrt5 = 0; _trgrt5I = 0;};
    bool  _tmp1 = ( (_trgrt5) || (( (_gtv6) && (_gtv7) )) );
    if (_tmp1)  { if (! _trgt1I) _trgt1 = ! _trgt1; }
    _trgt1I = _tmp1;
    _gtv6 = _trgt1;
    digitalWrite(6, !(_gtv6));
    digitalWrite(5, _gtv6);
    digitalWrite(13, ( (_gtv6) && (_gtv4) ));
    if (_gtv6) { if (! _gen2I) { _gen2I = 1; _gen2O = 1; _gen2P = millis(); } } else { _gen2I = 0 ; _gen2O= 0;}
    if (_gen2I) {  if ( _isTimer ( _gen2P , 30000 )) { _gen2P = millis(); _gen2O = ! _gen2O;}}
    _gtv8 = _gen2O;

    //Плата:2
    if (!(0)) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;}
    if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis(); _gen1O = ! _gen1O;}}
    _gtv4 = _gen1O;
    if (_gen1O) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;};
    if (_trgrt1) {
    _gtv5 = (map(( (analogRead (0))), (0), (1023), (0), (300)));
    }
    if (_changeNumber1_Out) {_changeNumber1_Out = 0;} else {_tempVariable_int = _gtv5;
    if (_tempVariable_int != _changeNumber1_OLV) {_changeNumber1_OLV = _tempVariable_int; _changeNumber1_Out = 1;}
    }
    if (!(0)) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;};
    if (_gtv7) { if (_trgrt3I) { _trgrt3 = 0;} else {_trgrt3 = 1; _trgrt3I = 1;} } else {_trgrt3 = 0; _trgrt3I = 0;};
    if(( (( (!(_gtv6)) && (_changeNumber1_Out) )) || (_trgrt2) || (_trgrt3) )) _count1P = (_gtv5);
    if (( (!((_gtv5) < (1))) && (_gtv8) ))
       {
       if (! _count1I)
          {
           _count1P = _count1P-1;
           _count1I = 1;
          }
       }
    else
       {
       _count1I=0;
       }
    if ((_count1P) < (1)) { if (_trgrt4I) { _trgrt4 = 0;} else {_trgrt4 = 1; _trgrt4I = 1;} } else {_trgrt4 = 0; _trgrt4I = 0;};
    _gtv7 = _trgrt4;
    _gtv1 = _count1P;

    //Плата:3
    //Наименование:Дисплей
    _gtv2 = ((_gtv1)/(60))*(60);
    Hours_62193421_1 = (_gtv1)/(60);
    Mins_62193421_1 = (_gtv1)-(_gtv2);
    Sec_62193421_1 = ( (_gtv4) && (_gtv6) );
    Brightness_62193421_1 = 5;
    TimeDisp_62193421_1[0] = Hours_62193421_1 / 10;
    TimeDisp_62193421_1[1] = Hours_62193421_1 % 10;
    TimeDisp_62193421_1[2] = Mins_62193421_1 / 10;
    TimeDisp_62193421_1[3] = Mins_62193421_1 % 10;
    if ( Sec_62193421_1 ) tm1637_62193421_1.point(HIGH); else tm1637_62193421_1.point(LOW);
    tm1637_62193421_1.set(Brightness_62193421_1);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
    tm1637_62193421_1.display(TimeDisp_62193421_1);


    //Плата:4
    if(_gtv6) _trgs1 = 1;
    if(_gtv9) _trgs1 = 0;
    if (( (_trgs1) && (_gtv7) )) { if (_trgrt6I) { _trgrt6 = 0;} else {_trgrt6 = 1; _trgrt6I = 1;} } else {_trgrt6 = 0; _trgrt6I = 0;};
    _gtv9 = _trgrt6;
    if(_trgrt6) {_tim1O = 1; _tim1I = 1;} else { if(_tim1I) {_tim1I = 0; _tim1P = millis();} else { if (_tim1O) {if ( _isTimer(_tim1P, 5000)) _tim1O = 0;}}}
    //  here   erorr   выше строка

    //===============================================
    digitalWrite(9, ( (_gtv4) && (_tim1O) ));




    }
    bool _isTimer(unsigned long startTime, unsigned long period )
      {
      unsigned long currentTime;
    currentTime = millis();
    if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
      }

       flag = 0
         }

         

          if(digitalRead(butSState)==LOW&&flag==1)

            flag=0;

         }

    }
     

    вот ошибка
    Arduino: 1.8.5 (Windows 7), Плата:"Arduino Nano, ATmega328P"

    C:\Users\Татьяна\Documents\Arduino\sketch_mar22a\sketch_mar22a.ino: In function 'void loop()':

    sketch_mar22a:100: error: '_isTimer' was not declared in this scope

    sketch_mar22a:105: error: '_isTimer' was not declared in this scope

    sketch_mar22a:154: error: '_isTimer' was not declared in this scope

    sketch_mar22a:162: error: a function-definition is not allowed here before '{' token

    sketch_mar22a:180: error: expected '}' at end of input

    exit status 1
    '_isTimer' was not declared in this scope

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
     
  7. mcureenab

    mcureenab Гуру

    Всё написано в сообщениях об ошибке

    : '_isTimer' was not declared in this scope

    Функции и переменные нужно объявлять до их использования, а не где попало.
     
  8. eg12

    eg12 Нуб

    капец я туплю
     
  9. eg12

    eg12 Нуб

    спс
     
  10. mcureenab

    mcureenab Гуру

    В строке 162 какая то функция объявлена неожиданно

    sketch_mar22a:162: error: a function-definition is not allowed here before '{'
     
  11. mcureenab

    mcureenab Гуру

    И вероятно фигурные скобки не сбалансированы. Где то не хватает закрывающей скобки.

    Понять это можно когда файл с программой весь прочитан, а скобки так и нет.

    sketch_mar22a:180: error: expected '}' at end of input
     
  12. eg12

    eg12 Нуб

    наконец то

    компиляция завершена
    скетч использует 4360 байт
     
  13. eg12

    eg12 Нуб

    было ооочень много ошибок
     
  14. eg12

    eg12 Нуб

    что поделаешь мне всего 12 лет:)
     
  15. mcureenab

    mcureenab Гуру

    Чаще скетч проверяй компилятором по ходу написания.
    Поменял строчку. Проверил. Так гораздо проще ошибку найти.
     
    Tomasina нравится это.
  16. fogary

    fogary Гик

    eg12
    В этом фрагменте кода:
    Код (C++):
    currentTime = millis();
      if (currentTime>= startTime)
      {
    значение startTime может находится в будущем? Иначе проверка не имеет смысла.

    Для общего развития, советую ознакомиться.
     
    arkadyf нравится это.