не удалось разрешить «определение функции здесь не допускается до токена '{'»
Я, будучи новичком в Arduino, начал с создания простых ЖК-часов, которые также показывают температуру.
Все работало нормально, пока не возникла эта ошибка. "определение функции здесь не разрешено перед токеном '{' "
И я сделал все, чтобы решить проблему. Я написал функцию с нуля. Я где-то читал, что определение функции не может входить в функцию, поэтому я сделал ее глобальной функцией (хотя лично мне почему-то не кажется, что это правда). Но даже тогда ошибке удалось выжить.
Я совершенно расстроен и не знаю, что делать. Кто-нибудь может мне помочь?
вот мой код:-
#include < LiquidCrystal.h >
const int rs = 12,
en = 11,
d4 = 5,
d5 = 4,
d6 = 3,
d7 = 2,
lm = A0;
int input;
float temp;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void tem() //Вычисляет температуру
{
int i = analogRead(lm);
float temp = 500.0 * i / 1024;
lcd.print("Temp : ");
lcd.print(temp);
lcd.print(" ^C");
}
void Clock(int h = 0, int m = 0, int s = 0, char ch = 'A') {
int H = h;
char ampm = ch;
void mornight(char ampm) //меняет утра с утра на после полудня и наоборот
{ //КРАСНАЯ ВЫДЕЛЕННАЯ ЛИНИИ ОШИБКИ
String AMPM;
if (ampm == 'A')
AMPM = "PM";
else
AMPM = "AM";
}
while (H != 12) //ЧАСОВЫЙ ЦИКЛ
{
for (int M = m; M <= 59; M++) //МИНУТНЫЙ ЦИКЛ
{
for (int S = s; S <= 59; S++) //ВТОРОЙ ЦИКЛ
{
delay(1000);
lcd.clear();
if (H < 10) {
lcd.print('0');
lcd.print(H);
lcd.print(':');
} else {
lcd.print(H);
lcd.print(":");
}
if (M < 10) {
lcd.print('0');
lcd.print(M);
lcd.print(':');
} else {
lcd.print(M);
lcd.print(":");
}
if (S < 10) {
lcd.print('0');
lcd.print(S);
lcd.print(AMPM);
} else {
lcd.print(S);
lcd.print(AMPM);
}
lcd.setCursor(0, 1);
tem(); // показывает температуру
}
s = 0;
}
m = 0;
if (H == 23) {
H = 1;
mornight(ampm);
} else
H++;
}
}
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 1);
Clock(10, 1, 20);
}
void loop() {
}
@Rohan, 👍-2
2 ответа
Лучший ответ:
Ваша линия:
void mornight(char ampm)
Пытается определить функцию под названием mornight()
внутри Clock()
.
Функции являются «глобальными», если они определены вне какой-либо другой функции. Я не понимаю, что вы пытались сделать, чтобы сделать эту функцию глобальной, но помимо объектно-ориентированного программирования простые функции всегда глобальны.
«Неглобальная» функция будет означать определение класса и объявление функции внутри определения класса; но даже в этом случае вам придется определить функцию (то есть фактические инструкции в функции) вне любого другого определения класса или функции.
Переместить функцию void mornight(char ampm)
за пределы функции void Clock(int h = 0, int m = 0, int s = 0, char ch = 'A') {
как сказано в сообщении об ошибке, функция не может быть определена внутри функции
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Глобальные переменные занимают много места в динамической памяти.
- (Код ультразвукового датчика: такого файла или каталога нет)
- rfid_default_keys проверить с помощью RC522
- Команда strtok() с Serial связью