Ошибка expected at end of input

ошибка expected '}' at end of input C++ Решение и ответ на вопрос 1972313

Лизаветка

1 / 1 / 0

Регистрация: 01.05.2017

Сообщений: 34

1

01.05.2017, 21:41. Показов 35983. Ответов 13

Метки нет (Все метки)


Посмотрите, пожалуйста. Выдает ошибку expected ‘}’ at end of input, но скобки везде попарно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
int main()
{
    setlocale(LC_ALL, "Russian");
    inform();
    getch();
    system("cls");//новая страница
    char zapros_menu, vspom_zapr;
    glavnoe_menu();
    vspom_zapr=zapr_menu();
    int otvet;
    while (vspom_zapr!='0')
    {
        zapros_menu=vspom_zapr;
        system("cls");
        switch (zapros_menu)
        {
        case '1':
            {
                svedenia_po_program();
            }
        case '2':
            {
                otvet=TEORIA::demonstrate();
            }
        case '3':
            {
 
            }
        case '4':
            {
 
            }
        case '5':
            {
 
            }
        };
        getch();
        system("cls");
        glavnoe_menu();
        if (otvet==0)
        {
            vspom_zapr=0;
        } else
        {
            vspom_zapr=zapr_menu();
        };
    };
    return 0;
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 21:53

2

а на какой строке вылетает ошибка?



0



284 / 232 / 114

Регистрация: 07.09.2016

Сообщений: 584

01.05.2017, 21:57

3

привыкайте нормально код форматировать. черт ногу сломит в такой писанине.
по ошибке: если это студия и в начале файла нет #include «stdafx.h» — то в этом может быть причина.
может есть другой код, который вы не написали тут, но он есть. например тут нед вообще ни
одного инклуда, что там у вас еще есть, чего вы не запостили известно только вам.



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 21:59

4

Во-первых, если операция только одна, то операторные скобки необязательны (хотя бы не запутаетесь)
Во-вторых, так как Вы не привели полный код программы, откуда нам знать, что эта ошибка не возникает во всяких подпрограммах типа zapr_menu()?



0



Лизаветка

1 / 1 / 0

Регистрация: 01.05.2017

Сообщений: 34

01.05.2017, 22:07

 [ТС]

5

вот полный код программы, выдает ошибку в последней строке, пробовала убирать частично код программы, ошибка уходит, если только убрать строки #include «teoria.h» и #include «teoria.cpp, выходит ошибка в них

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdlib.h>
#include <string>
 
#include "teoria.h"
 
#include "teoria.cpp"
 
using namespace std;
 
void inform()
{
    cout << "n"
    "        Астраханский государственный технический университетn"
    "          Институт Информационных технологий и коммуникацийnnn"
    "                                                Кафедраn"
    "                                                Автоматизированных системn"
    "                                                бработки информации и управленияnnnnn"
    "                     Курсовая работа по дисциплинеn"
    "                   'Программирование и информатика'n"
    "        Учебно - демонстрационная программа <<Сортировка Бэтчера>>nnnn"//свет
    "                                                Выполнила: студентка группы ДИНРб-11n"
    "                                                Бондаренко Е. М.n"//свет
    "                                                Руководитель работыn"
    "                                                Ст. преп. Толасова В. В.nnnnn"
    "                          г.АСТРАХАНЬ  2017г.nn ";
};
 
void glavnoe_menu()
{
    cout << "nn     Учебно-демонстрационная программа <<Cортировка Бэтчера>> n";//свет
    cout << "nnn*************************";
    cout << "<Главное Меню>";//свет
    cout <<    "****************************nn" <<endl;
    cout << "                                                   клавишаnn";
    cout << "            Сведения о работе программы..............";
    cout << " 1nn";//свет
    cout << "            Теоретический материал...................";
    cout << " 2nn";//свет
    cout << "            Пошаговая демонстрация сортировки........";
    cout << " 3nn";//свет
    cout << "            Тест по пройденному материалу............";
    cout << " 4nn";//свет
    cout << "            Зайти как администратор..................";
    cout << " 5nn";//свет
    cout << "            Выход....................................";
    cout << " 0nn";//свет
};
 
char zapr_menu()
{
    char zapr;
    cin >> zapr;
    while (zapr!='0' && zapr!='1' && zapr!='2' && zapr!='3' && zapr!='4' && zapr!='5')
    {
        cout << "nНекорректный ввод! Повторите!n";
        cin >> zapr;
    };
    return zapr;
};
 
void svedenia_po_program()
{
    ifstream out("svedenia.txt");
    if(out.is_open())
    {
        while (!out.eof())
        {
            string stroka;
            getline(out, stroka, 'n');
            cout << "n   " << stroka;
        }
    };
    out.close();
};
 
int main()
{
        setlocale(LC_ALL, "Russian");
    inform();
    getch();
    system("cls");//новая страница
    char zapros_menu, vspom_zapr;
    glavnoe_menu();
        vspom_zapr=zapr_menu();
         int otvet;
    while (vspom_zapr!='0')
        {
             zapros_menu=vspom_zapr;
             system("cls");
             switch (zapros_menu)
            {
            case '1':
                {
                       svedenia_po_program();
                }
            case '2':
               {
                      otvet=TEORIA::demonstrate();
                }
            case '3':
               {
 
                }
            case '4':
               {
 
                }
             case '5':
               {
 
                }
        };
        getch();
        system("cls");
        glavnoe_menu();
        if (otvet==0)
        {
            vspom_zapr=0;
        } else vspom_zapr=zapr_menu();
    };
    return 0;
}



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 22:11

6

Цитата
Сообщение от Лизаветка
Посмотреть сообщение

#include «teoria.cpp»

что значит #include исходный код C++? Вы подключаете и хедер teoria.h и исходник teoria.cpp



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 22:12

7

И учитесь уже обрамлять код тегами [CPP]

Миниатюры

ошибка expected '}' at end of input
 



0



1 / 1 / 0

Регистрация: 01.05.2017

Сообщений: 34

01.05.2017, 22:15

 [ТС]

8

спасибо, впредь буду оформлять нормально, это мои первые 15 минут на данном форуме)



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 22:16

9

Лизаветка, ну а насчет инклюдов Вы поняли?



0



Лизаветка

1 / 1 / 0

Регистрация: 01.05.2017

Сообщений: 34

01.05.2017, 22:20

 [ТС]

10

нет. я подключаю и то и то, без хедера ошибка остается.
вот что у меня представляет teoria.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "teoria.h"
 
#include <iostream>
#include <fstream>
#include <ctime>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
namespace TEORIA
{
 
    void mini_menu()
    {
        cout << "nn                                          клавишаnn";
        cout << "            Назад...........................";
        cout << " 1n";//свет
        cout << "            Вперед..........................";
        cout << " 2n";//свет
        cout << "            Главное меню....................";
        cout << " 3n";//свет
        cout << "            Выход...........................";
        cout << " 0n";//свет
    }
 
    char numb_menu()
    {
        char zap;
        cin >> zap;
        while(zap!='1' && zap!='2' && zap!='3' && zap!='0')
        {
            cout << "nНекорректный ввод! Повторите!n";
            cin >> zap;
        };
        return zap;
    }
 
    void display_str(char* name)
    {
        ifstream str(name);
        if(str.is_open())
        {
            while (!str.eof())
            {
                string stroka;
                getline(str, stroka, 'n');
                cout << "n   " << stroka;
            }
        };
        str.close();
    }
 
    int demonstrate()
    {
        char dop_zapr='1';
        char zapros_menu='1';
        int otvet;
        do
        {
            switch (dop_zapr)
            {
            case '1':
                {
                    char name[20]="teor_1.txt";
                    display_str(name);
                }
            case '2':
                {
                    char name[20]="teor_2.txt";
                    display_str(name);
                }
            case '3':
                {
                    char name[20]="teor_3.txt";
                    display_str(name);
                }
            case '4':
                {
                    char name[20]="teor_4.txt";
                    display_str(name);
                }
            }
            mini_menu();
            zapros_menu=numb_menu();
            if (zapros_menu=='1')
            {
                dop_zapr++;
            } else dop_zapr--;
        } while (zapros_menu!='3' && zapros_menu!='0' && dop_zapr!='5' && dop_zapr!='0');
        if (zapros_menu=='0') otvet=0; else otvet=1;
        return otvet;
}

и вот teoria.h

C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef TEORIA_H_INCLUDED
#define TEORIA_H_INCLUDED
 
namespace TEORIA
{
    void mini_menu();
    char numb_menu();
    void display_str(char name);
    int demonstrate();
}
#endif // TEORIA_H_INCLUDED

Что нужно убрать?



0



Джоуи

1073 / 635 / 240

Регистрация: 05.05.2015

Сообщений: 3,546

Записей в блоге: 2

01.05.2017, 22:22

11

Лизаветка, вопрос остается прежним: на какой строке и в каком файле возникает ошибка? Можно скриншот скинуть, если сами не разбираетесь



0



DU3

284 / 232 / 114

Регистрация: 07.09.2016

Сообщений: 584

01.05.2017, 22:24

12

Лучший ответ Сообщение было отмечено Лизаветка как решение

Решение

нормально форматируйте не только тут на форуме, но и у себя в редакторе и такого рода проблем будет на порядок меньше.
подозреваю что в teoria.cpp нет закрывающей скобки от

C++
1
2
namespace TEORIA
{



1



Joey

01.05.2017, 22:29

Не по теме:

DU3, ждем ебилдов ТС



0



1 / 1 / 0

Регистрация: 01.05.2017

Сообщений: 34

01.05.2017, 22:35

 [ТС]

14

Спасибо за ответы) ошибка выволилась на последней строке основной программы, оказалось нет закрывабщейся скобки в файле teoria.cpp , спасибо за вопросы, буду работать над оформлением��



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

01.05.2017, 22:35

Помогаю со студенческими работами здесь

Ошибка: Expected END but received ELSE
Всем привет , кто может помочь?!) строка 59 ругается на else. (expected END but received ELSE).

Ошибка: ‘END’ expected but ‘ELSE’ found
Задание:
Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3…

Ошибка: ‘END’ expected but ‘UNTIL’ found
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,…

Ошибка ‘Expected END but recieved’
Понимаю,что ошибка связанная с begin и end,но я не догоняю,где пропущеноunit Unit2;

interface

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

14

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*Base DMA Methods*/
baseDMA::baseDMA(const char* l, int r) {
        label = new char[std::strlen(l) + 1];
        std::strncpy(label, l);
        rating = r;
}

baseDMA::baseDMA(const baseDMA & rs) {
        label = new char[std::strlen(rs.label) + 1];
        std::strncpy(label, rs.label);
        rating = rs.rating;
}

baseDMA::~baseDMA() {
        delete [] label;
}
baseDMA & baseDMA::operator=(const baseDMA & rs) {
        if(this == &rs)
                return *this;
        delete [] label

        label = new char[std::strlen(rs.label) + 1];
        std::strcpy(label, rs.label);
        rating = rs.rating;
        return *this;
}

std::ostream & operator<<(std::ostream & os, const baseDMA & rs) {
        os << "Label: " << rs.label << std::endl;
        os << "Rating: " << rs.rating << std::endl;
        return os;
}

/*lacksDMA Methods*/
lacksDMA::lacksDMA(const char * c, const char* l, int r) : baseDMA(l,r) {
        std::strncpy(color, c, 39);
        color[39] = '';
}

lacksDMA::lacksDMA(const char* c, const baseDMA & rs) : baseDMA(rs) {
        std::strncpy(color, c, COL_LEN - 1);
        color[COL_LEN] = '';
}

std::ostream & operator<<(std::ostream & os, const lacksDMA & ls) {
        os << (const baseDMA &) ls;
        os << "Color: " << ls.color << std::endl;
        return os;
}

/*hasDMA Methods*/
hasDMA::hasDMA(const char* s, const char* l, int r) : baseDMA(l, r) {
        style = new char [std::strlen(s) + 1];
        std::strcpy(style, s);
}

hasDMA::hasDMA(const char* s, const baseDMA & rs) : baseDMA(rs) {
        style = new char[std::strlen(hs.style) + 1];
        std::strcpy(style, hs.style);
}

hasDMA::~hasDMA() {
        delete [] style;
}
hasDMA & hasDMA::operator=(const hasDMA & hs) {
        if(this == &hs)
                return *this;
        baseDMA::operator=(hs); /*Copying base portion*/
        style = new char[std::strlen(hs.style) + 1];
        std::strcpy(style, hs.style);
        return *this;
}

std::ostream & operator<<(std::ostream & os, const lacksDMA & ls) {
        os << (const baseDMA &) ls;
        os << "Style: " << hs.style << std::endl;
        return os;
}
}; /*For those reading this, the error was directed here, as there was a missing brace. g++ mistakenly took it for the main function. Probably due to the destructor. */

Aramil of Elixia, thank you for asking me to put this up, I wouldn’t have spotted the failure at the end without you. Thanks

Ребят, нашел в инете код, подходящий для моего проекта, но попытавшись скопмелировать его, напоролся на ошибки, которые уже битых 4 часа не могу осмыслить и убрать. Помогите пожалуйста, а то руки опускаются

#include <EEPROM.h>

#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#define LEFT 0
#define CENTER 1
#define RIGHT 2

#define RelayModesCount 4
#define KeyFirst 2
#define KeyLast 6

LiquidCrystal_I2C lcd (0x27,20,4);
RTC_DS1307 RTC; // RTC Modul
DHT dht(7, DHT21); // pin, type
volatile boolean Blinker = true;
volatile long BlinkerTime;
volatile byte ButtonPress[8];
const String RelayModeNames[] = {"OFF", "ON", "Once", "Daily"};

int aKey1 = 0;
int aKey2 = 0;

DateTime NowDate;

boolean DoBlink(void)
{
boolean Result = false;
long NBlinkerTime = millis();
if (Blinker)
{
if (NBlinkerTime - BlinkerTime > 200)
{
digitalWrite(8, HIGH);
BlinkerTime = NBlinkerTime;
Blinker = false;
Result = true;
}
}
else
{
if (NBlinkerTime - BlinkerTime > 300 )
{
digitalWrite(8, LOW);
BlinkerTime = NBlinkerTime;
Blinker = true;
}

}
return Result;
}
String BlinkString(String string, byte Cur, byte ItemsCount)
{
String result = string;
byte len = string.length();
if (!Blinker && Cur == ItemsCount)
{
for (byte i = 0; i < len; i++) result.setCharAt(i, ' ');
}
return result;
}

/********************************************************************************************************/
/********************************** Объявление классов *********************************************/
/********************************************************************************************************/

class TMenu
{
public:
byte _ItemsCount;
TMenu *Parent;
String *MenuName;
boolean ItemIsValue;
byte CurrentItem;

TMenu **Items;
String *ItemsName;
// byte ItemsCount(void);
byte ItemsCount(void) {
return _ItemsCount;
};
bool AddItem(TMenu *NewItem);

virtual void Print(void);
void OnKey(byte KeyNum);
void ChangeItem(byte value);

virtual void Increment(void);
virtual void Decrement(void);

virtual void OnSet(void);
DateTime CheckDateTime(DateTime OldDate, int Increment, byte DatePart);
};

class TNoMenu: public TMenu
{
public:
void Print(void);
TNoMenu(TMenu *ParentMenu) {
MenuName = 0;
CurrentItem = 0;
_ItemsCount = 0;
Parent = ParentMenu;
Items = 0;
ItemsName = 0;
ItemIsValue = false;
};
void Increment(void) {};
void Decrement(void) {};
void OnSet(void) {};

};

class TSelectMenu: public TMenu
{
public:
void Print(void);
TSelectMenu(TMenu *ParentMenu, String NewName) {
MenuName = new String(NewName);
CurrentItem = 0;
_ItemsCount = 0;
Parent = ParentMenu;
Items = 0;
ItemsName = 0;
ItemIsValue = false;
};
void Increment(void) {};
void Decrement(void) {};
void OnSet(void) {};
};

class TTimeMenu: public TMenu
{
public:
void Print(void);
DateTime *SetDateTime;
long OldDateTime;
TTimeMenu(TMenu *ParentMenu, String NewName, DateTime *ParamDate) {
MenuName = new String(NewName);
CurrentItem = 0; _ItemsCount = 6; Parent = ParentMenu; Items = 0; ItemsName = 0;
ItemIsValue = true; OldDateTime = millis();
SetDateTime = ParamDate;
};
void Increment(void) {
*SetDateTime = CheckDateTime (*SetDateTime, 1, CurrentItem);
};
void Decrement(void) {
*SetDateTime = CheckDateTime (*SetDateTime, -1, CurrentItem);
};
void OnSet(void) {
RTC.adjust(*SetDateTime);
};
void SecondTimer(void) {
long TmpDateTime = millis(); if (TmpDateTime - OldDateTime > 1000) {
OldDateTime = TmpDateTime;
*SetDateTime = *SetDateTime + 1;
};
};
};
class TRelayMenu: public TMenu
{
public:
byte RelayNumber;
byte RelayMode;
// byte Shedule=0;
boolean OnceBit;
DateTime RelayOn;
DateTime RelayOff;
TRelayMenu(TMenu *ParentMenu, byte NewNumber, String NewName) {
MenuName = new String(NewName);
CurrentItem = 0; _ItemsCount = 11; Parent = ParentMenu; Items = 0; ItemsName = 0; ItemIsValue = true, OnceBit = false;
RelayNumber = NewNumber;
RelayMode = 0;
RelayOn = DateTime(2015, 1, 1, 23, 00, 00);
RelayOff = DateTime(2015, 1, 1, 07, 00, 00);
};
void Print(void);
void Increment(void) {
if (!CurrentItem) {
RelayMode++;
if ( RelayMode >= RelayModesCount) RelayMode = 0;
}
else if (CurrentItem < 6) RelayOn = CheckDateTime (RelayOn, 1, CurrentItem - 1);
else RelayOff = CheckDateTime (RelayOff, 1, CurrentItem - 6);
};
void Decrement(void) {
if (!CurrentItem) {
RelayMode--;
if ( RelayMode > 127) RelayMode = RelayModesCount - 1;
}
else if (CurrentItem < 6) RelayOn = CheckDateTime (RelayOn, -1, CurrentItem - 1);
else RelayOff = CheckDateTime (RelayOff, -1, CurrentItem - 6);
};

boolean CheckDaily(void);

void OnSet(void) {
///// здесь надо записать реле в память

byte p_address = RelayNumber * 16;
EEPROM.write(p_address, RelayMode);

EEPROM.write(p_address + 1, byte(RelayOn.year() - 2000));
EEPROM.write(p_address + 2, byte(RelayOn.month() ));
EEPROM.write(p_address + 3, byte(RelayOn.day() ));
EEPROM.write(p_address + 4, byte(RelayOn.hour() ));
EEPROM.write(p_address + 5, byte(RelayOn.minute() ));

EEPROM.write(p_address + 6, byte(RelayOff.year() - 2000));
EEPROM.write(p_address + 7, byte(RelayOff.month() ));
EEPROM.write(p_address + 8, byte(RelayOff.day() ));
EEPROM.write(p_address + 9, byte(RelayOff.hour() ));
EEPROM.write(p_address + 10, byte(RelayOff.minute() ));
};
};

/********************************************************************************************************/
/******************************** Конец объявления классов ******************************************/
/********************************************************************************************************/

TMenu *CurrentMenu = 0;
TNoMenu *NoMenu = 0;
TSelectMenu *SelectMenu;
TTimeMenu *TimeMenu;

TRelayMenu *RelayMenu[4];

/********************************************************************************************************************************************/
/********************************************************************************************************************************************/
/********************************************************************************************************************************************/
void setup()
{
NoMenu = new TNoMenu(0);
SelectMenu = new TSelectMenu (NoMenu, "NoMenu");
TimeMenu = new TTimeMenu(SelectMenu, "Time Setup", &NowDate);

SelectMenu->AddItem(TimeMenu);

byte p_address;
DateTime DTFlesh;
for (int i = 0; i < 4; i++)
{
// здесь надо добавить загрузку параметров из флеша
RelayMenu[i] = new TRelayMenu (SelectMenu, i, "Relay " + String(i + 1));
SelectMenu->AddItem(RelayMenu[i]);

p_address = i * 16;

RelayMenu[i]->RelayMode = EEPROM.read(p_address);

DTFlesh = DateTime(int(EEPROM.read(p_address + 1) + 2000), EEPROM.read(p_address + 2), EEPROM.read(p_address + 3), EEPROM.read(p_address + 4), EEPROM.read(p_address + 5), 0 );
RelayMenu[i]->RelayOn = RelayMenu[i]->CheckDateTime(DTFlesh, 0, 0);

DTFlesh = DateTime(int(EEPROM.read(p_address + 6) + 2000), EEPROM.read(p_address + 7), EEPROM.read(p_address + 8), EEPROM.read(p_address + 9), EEPROM.read(p_address + 10), 0 );
RelayMenu[i]->RelayOff = RelayMenu[i]->CheckDateTime(DTFlesh, 0, 0);
}

for (byte i = KeyFirst; i < KeyLast; i++)
{
pinMode(i, INPUT); //Keypad 2-«menu» 3-"-" 4-"+" 5-«SET»
digitalWrite(i, HIGH); //setup Resistor input2Vcc
ButtonPress[i] = true;
}
pinMode(8, OUTPUT); //LED
pinMode(9, OUTPUT);
for (byte i = 10; i < 14; i++)
{
pinMode(i, OUTPUT); // relay i
digitalWrite(i, HIGH);
}

pinMode (A2, INPUT_PULLUP);
pinMode (A3, INPUT_PULLUP);

Serial.begin(9600); // Used to type in characters
digitalWrite(8, LOW);
digitalWrite(9, HIGH);

lcd.begin(20, 4); // initialize the lcd for 20 chars 4 lines and turn on backlight
RTC.begin();

lcd.noBacklight();
delay(150);
lcd.backlight();

NowDate = RTC.now();
//проверка времени
if ( NowDate.year() > 2000 && NowDate.year() < 2114 &&
NowDate.month() > 0 && NowDate.month() < 13 &&
NowDate.day() > 0 && NowDate.day() < 32 &&
NowDate.hour() >= 0 && NowDate.hour() < 24 &&
NowDate.minute() >= 0 && NowDate.minute() < 60 &&
NowDate.second() >= 0 && NowDate.second() < 60 )
{
CurrentMenu = NoMenu;
}
else
{
lcd.setCursor(2, 1);
lcd.print("Clock Failure!");
delay(700);
RTC.adjust(DateTime(2015, 1, 1, 00, 00, 00));
CurrentMenu = TimeMenu;
}



void loop()
 {       
        /********* KEYPAD BUNCLE, 5 keys, from 2 to 6 *********/
        byte NButtonPress[8] = {0, 0, 0, 0, 0, 0, 0, 0};
        byte NButtonRelease[8] = {0, 0, 0, 0, 0, 0, 0, 0};
        const byte ButtonTry = 3;
        
        aKey1 = analogRead (2);
        aKey2 = analogRead (3);
        byte aKeyNum=0;
        
        /**************** check for key pressed or released ****************/
        for (byte i = 0; i < 3; i++)
                  {
                  delay(15);
                  if (aKey1< 64) aKeyNum=2;//AnalogKey 1 = Dig2
                  else if (aKey1<128) aKeyNum=6;//Analog key 3 = D4
                  else if (aKey1<256) aKeyNum=4;//key 5=d6
                  else if (aKey2< 64) aKeyNum=1;//key 6 = menu
                  else if (aKey2<128) aKeyNum=3;//analogkey 2 = D3
                  else if (aKey2<256) aKeyNum=5;//key 4 =d5
                  else aKeyNum=0; // no key
                  
                  for (byte j = KeyFirst; j < KeyLast; j++) // Read ports 2...6
                          {
                          if (digitalRead(j) == LOW || aKeyNum==j)
                                {
                                NButtonPress[j]++;
                                NButtonRelease[j] = 0;
                                }
                                else
                          {
                          NButtonPress [ j ] = 0;
                          NButtonRelease[j]++;
                          delay(5);
                    }
                          }


/*************** Do key process ******************/
// byte m;

for (byte j = KeyFirst; j < KeyLast; j++)
{
if (NButtonPress[ j ] >= ButtonTry  ButtonPress[ j ] == false)
{
ButtonPress[j] = true;
CurrentMenu->OnKey(j);
}
else
{
if (NButtonRelease[j] >= ButtonTry && ButtonPress[j] == true)
{
ButtonPress[j] = false;
}
}
}
/***************** Relay Check *********************/

CurrentMenu->Print();
DoBlink();
}

void LcdPrint(byte string, String str, byte Align)
{
byte StrTrim1;
byte StrTrim2;
lcd.setCursor(0, string); //Start at character 0 on line 0
switch (Align)
{
case RIGHT:

break;

case CENTER:
StrTrim1 = byte((20 - str.length()) / 2);
StrTrim2 = 20 - str.length() - StrTrim1;
for (byte k = 0; k < StrTrim1; k++) lcd.print(" ");
lcd.print(str);
for (byte k = 0; k < StrTrim2; k++) lcd.print(" ");
break;

default:
lcd.print(str);
StrTrim1 = 20 - str.length();
for (byte k = 0; k < StrTrim1; k++) lcd.print(" ");
}
}

void TNoMenu::Print(void)
{
NowDate = RTC.now();
String Ddate;
Ddate = " R1-" + RelayModeNames[RelayMenu[0]->RelayMode] + " R2-" + RelayModeNames[RelayMenu[1]->RelayMode];
LcdPrint(0, Ddate, CENTER);
Ddate = " R3-" + RelayModeNames[RelayMenu[2]->RelayMode] + " R4-" + RelayModeNames[RelayMenu[3]->RelayMode];
LcdPrint(1, Ddate, CENTER);
Ddate = String (NowDate.year()) + "/" + String(NowDate.month()) + "/" + String(NowDate.day()) + " " + String (NowDate.hour()) + ":" + String(NowDate.minute()) + ":" + String(NowDate.second());
LcdPrint(2, Ddate, CENTER);
Ddate = "Temp " + String (int(dht.readTemperature())) + "C, Hum " + String(int(dht.readHumidity())) + "%";
LcdPrint(3, Ddate, CENTER);

RelayCheck();
}

void TTimeMenu::Print(void)
{
SecondTimer();
String Ddate = BlinkString(String((*SetDateTime).year()), CurrentItem, 0) + "/" +
BlinkString(String( (*SetDateTime).month()), CurrentItem, 1) + "/" +
BlinkString(String((*SetDateTime).day()), CurrentItem, 2) + " ";
LcdPrint(1, Ddate, CENTER);
Ddate = BlinkString(String ((*SetDateTime).hour()), CurrentItem, 3) + ":" +
BlinkString(String((*SetDateTime).minute()), CurrentItem, 4) + ":" +
BlinkString(String((*SetDateTime).second()), CurrentItem, 5);
LcdPrint(2, Ddate, CENTER);

LcdPrint(3, " ", CENTER);
RelayCheck();
}

void TMenu::OnKey(byte KeyNum)
{
switch (KeyNum)
{
case 3: // — if (ItemIsValue) Decrement();
else ChangeItem(-1);
break;
case 4: // +
if (ItemIsValue) Increment();
else ChangeItem(1);
break;
case 5: // SET
if (ItemIsValue)
{
OnSet();
ChangeItem(+1);
}
else // вход в подменю
{
if (Items && ItemsCount())
{
if (CurrentMenu->ItemsCount())
{
CurrentMenu = CurrentMenu->Items[CurrentMenu->CurrentItem];
CurrentMenu->CurrentItem = 0;
}
}
}
break;
default: // 2 -menu
if (Parent) CurrentMenu = CurrentMenu->Parent; //(TMenu *) &NoMenu;
else
{
CurrentMenu = SelectMenu;
CurrentMenu->CurrentItem = 0;
}
}
}

void TMenu::ChangeItem(byte value)
{
CurrentItem += value;
if (CurrentItem > 128) CurrentItem = ItemsCount() - 1;
else if (CurrentItem > ItemsCount() - 1) CurrentItem = 0;
}

boolean TMenu::AddItem(TMenu *NewItem)
{
if (!Items) Items = new TMenu *[_ItemsCount = 1];
else Items = (TMenu **)realloc((void *)Items, (_ItemsCount = _ItemsCount + 1) * sizeof(void *));
Items[_ItemsCount - 1] = NewItem;
}

DateTime TMenu::CheckDateTime(DateTime OldDate, int Increment, byte DatePart)
{
int DTmin[6] = {2000, 1, 1, 0, 0, 0};
int DTmax[6] = {2199, 12, 31, 23, 59, 59};

int DT[6];
int diff;

DT[0] = OldDate.year();
DT[1] = OldDate.month();
DT[2] = OldDate.day();
DT[3] = OldDate.hour();
DT[4] = OldDate.minute();
DT[5] = OldDate.second();
DT[DatePart] = DT[DatePart] + Increment;

if (DT[1] == 1 || DT[1] == 3 || DT[1] == 5 || DT[1] == 7 || DT[1] == 8 || DT[1] == 10 || DT[1] == 12) DTmax[2] = 31;
else if (DT[1] == 2)
{
if ((DT[0] % 4 == 0 && DT[0] % 100 != 0) || (DT[0] % 400 == 0)) DTmax[2] = 29;
else DTmax[2] = 28;
}
else DTmax[2] = 30;

for (byte i = 0; i < 6; i++)
{
if (DT[i] > DTmax[i]) DT[i] = DTmin[i];
else if (DT[i] < DTmin[i]) DT[i] = DTmax[i];
}

return DateTime(DT[0], DT[1], DT[2], DT[3], DT[4], DT[5]);

}

void TSelectMenu::Print(void)
{
NowDate = RTC.now();
byte shift = 0;
if (CurrentItem > 3) shift = CurrentItem - 3;
for (byte i = 0; i < 4; i++)
{
if ((CurrentItem - shift) == i) //Blinker
{
LcdPrint(i, ">> " + * (Items[i + shift]->MenuName) + " <<", CENTER);
}
else LcdPrint(i, *(Items[i + shift]->MenuName), CENTER);
}
RelayCheck();
}

void TRelayMenu::Print(void)
{

String DData;
NowDate = RTC.now();
LcdPrint(0, (*MenuName) + "[" + BlinkString(RelayModeNames[RelayMode], CurrentItem, 0) + "]", CENTER);
DData = "On:";
switch (RelayMode)
{
case 3: //Daily
// DData = DData + " ";
if (CurrentItem > 0 && CurrentItem < 4) CurrentItem = 4;
break;
default:
DData = DData + BlinkString(String(RelayOn.year(), DEC), CurrentItem, 1) + "/" + BlinkString(String( RelayOn.month(), DEC), CurrentItem, 2) +
"/" + BlinkString(String( RelayOn.day(), DEC), CurrentItem, 3);
}
DData = DData + " " + BlinkString(String (RelayOn.hour(), DEC), CurrentItem, 4) + ":" + BlinkString(String(RelayOn.minute(), DEC), CurrentItem, 5);
LcdPrint(1, DData, CENTER);
DData = "Off:";
switch (RelayMode)
{
case 3: //Daily
// DData = DData + " ";
if (CurrentItem > 5 && CurrentItem < 9) CurrentItem = 9;
break;
default:
DData = DData + BlinkString(String(RelayOff.year(), DEC), CurrentItem, 6) + "/" + BlinkString(String( RelayOff.month(), DEC), CurrentItem, 7) +
"/" + BlinkString(String( RelayOff.day(), DEC), CurrentItem, 8);
}
DData = DData + " " + BlinkString(String (RelayOff.hour(), DEC), CurrentItem, 9) + ":" + BlinkString(String(RelayOff.minute(), DEC), CurrentItem, 10);
LcdPrint(2, DData, CENTER);
LcdPrint(3, " ", CENTER);
}

boolean TRelayMenu::CheckDaily(void)
{
int TimeOn = 60 * int(RelayOn.hour()) + int(RelayOn.minute());
int TimeOff = 60 * int(RelayOff.hour()) + int(RelayOff.minute());
int NowTime = 60 * int(NowDate.hour()) + int(NowDate.minute());
boolean result; // true = время включения больше времени выключения
if ( TimeOn > TimeOff )
{
if (NowTime <= TimeOff || NowTime >= TimeOn ) result = true;
else result = false;
}
else
{
if (NowTime <= TimeOff && NowTime >= TimeOn ) result = true;
else result = false;
};
return result;

}

void RelayCheck (void)
{
boolean OnceBitCheck;
for (byte i = 0; i < 4; i++)
    {
    switch (RelayMenu[i]->RelayMode)
        {
        case 1: //relay 0n
        digitalWrite(i + 10, LOW);
        
        break;
        case 2: //Once;
        OnceBitCheck = (NowDate.unixtime() > RelayMenu[i]->RelayOn.unixtime() && NowDate.unixtime()<RelayMenu[i]->RelayOff.unixtime());
        
        if (OnceBitCheck) RelayMenu[i]->OnceBit = true;
        else if (RelayMenu[i]->OnceBit)
            {
            RelayMenu[i]->RelayMode = 0;
            byte p_address = RelayMenu[i]->RelayNumber * 16;
            EEPROM.write(p_address, RelayMenu[i]->RelayMode);
            }
            digitalWrite(i + 10, !OnceBitCheck);
            break;
            case 3: //Daily
            digitalWrite(i + 10, !(RelayMenu[i]->CheckDaily()));
            break;
            default: //relay 0ff
            digitalWrite(i + 10, HIGH);
        }
    }
}
  1. Я новичок написал вот такой скетч ( со строки {int Hours_62193421_1; компиляция c flprog)

    #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 = _count1P1;
           _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 >=(4294967295startTime+period));}
      }

       flag = 0
         }

         

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

            flag=0;

         }

    }

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

    C:UsersТатьянаDocumentsArduinosketch_mar22asketch_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. Дважды
    void loop объявлена
    И внутри первой loop торчит объявление void setup.

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

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

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

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

    Идёт ещё какой то код.

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

  5. а тут что ??????

    #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 = _count1P1;
           _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 >=(4294967295startTime+period));}
      }

       flag = 0
         }

         

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

            flag=0;

         }

    }

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

    C:UsersТатьянаDocumentsArduinosketch_mar22asketch_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

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

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

    : ‘_isTimer’ was not declared in this scope

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

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

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

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

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

    sketch_mar22a:180: error: expected ‘}’ at end of input

  9. наконец то

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

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

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

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

  13. eg12
    В этом фрагменте кода:

    currentTime = millis();
      if (currentTime>= startTime)
      {

    значение startTime может находится в будущем? Иначе проверка не имеет смысла.

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

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Ошибка error code 0x80004005
  • Ошибка exception при запуске war thunder
  • Ошибка error code 012 samsung smart tv
  • Ошибка error at hooking api ntprotect virtual memory dumping first 32 bytes
  • Ошибка error at hooking api loadstringa dumping first 32 bytes

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии