Я новичок написал вот такой скетч ( со строки {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 Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции" заранее спасибо!!!
Дважды void loop объявлена И внутри первой loop торчит объявление void setup. Разберите внимательно всю эту кашу. И читайте что говорит компилятор.
После функции Код (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)); } } Идёт ещё какой то код. Такое ощущение что ты втыкал куски кода куда попало.
а тут что ?????? Код (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 Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"
Всё написано в сообщениях об ошибке : '_isTimer' was not declared in this scope Функции и переменные нужно объявлять до их использования, а не где попало.
В строке 162 какая то функция объявлена неожиданно sketch_mar22a:162: error: a function-definition is not allowed here before '{'
И вероятно фигурные скобки не сбалансированы. Где то не хватает закрывающей скобки. Понять это можно когда файл с программой весь прочитан, а скобки так и нет. sketch_mar22a:180: error: expected '}' at end of input
Чаще скетч проверяй компилятором по ходу написания. Поменял строчку. Проверил. Так гораздо проще ошибку найти.
eg12 В этом фрагменте кода: Код (C++): currentTime = millis(); if (currentTime>= startTime) { значение startTime может находится в будущем? Иначе проверка не имеет смысла. Для общего развития, советую ознакомиться.