Нужна помощь. Ошибка : a function-definition is not allowed here before '{' token

jaytax23
Offline
Зарегистрирован: 16.02.2019

Извините если отправил не в ту тему, в чем ошибка?

#include <Keypad.h>
 
#include <Password.h>
 
 
Password password = Password( "1234" );
const byte ROWS = 4; // 4 строки
const byte COLS = 3; // 4 столбца
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {11, 10, 9, 8};
byte colPins[COLS] = {7, 6, 5};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
  Serial.begin(9600);
}
void loop() {
  char key = keypad.getKey();
  if (key) {
    Serial.println(key); // Передаем название нажатой клавиши в сериал порт
    tone(3, (int)key * 10, 300); // Издаем звуковой сигнал длиной 300 миллисекунд
  }
 
  void keypadEvent(KeypadEvent eKey) {
    switch (keypad.getState()) {
      case PRESSED:
        Serial.print("Pressed: ");
        Serial.println(eKey);
        switch (eKey) {
          case '#': guessPassword(); break;
          default:
            password.append(eKey);
        }
    }
---
Жалуется на выделенную строчку
Ошибка : a function-definition is not allowed here before '{' token
В программировании нуб.. 
 
jaytax23
Offline
Зарегистрирован: 16.02.2019
: In function 'void loop()':
 
Page_With_Temp:28: error: a function-definition is not allowed here before '{' token
 
Page_With_Temp:38: error: expected '}' at end of input
 
exit status 1
a function-definition is not allowed here before '{' token
--
полная версия ошибки
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jaytax23 пишет:

в чем ошибка?

Для начала в том, что Вы полезли что-то постить, не прочитав правила форума.

Поэтому:

1. Изучите вот это.
2. Вставьте код как положено - с номерами строк
3. Вставьте текст сообщения об ошибке полностью - копипастом.

Тогда посмотрим, что у Вас там.

P.S. Вижу, что ошибку уже вставили правильно. теперь вставьте правильно код программы.

jaytax23
Offline
Зарегистрирован: 16.02.2019

Подскажите пожалуйста, как ввести код программы с номерами строк?
В настройках галочку поставил, а код копируется без цифр

jaytax23
Offline
Зарегистрирован: 16.02.2019

jaytax23 пишет:

Подскажите пожалуйста, как ввести код программы с номерами строк?
В настройках галочку поставил, а код копируется без цифр

или в ручную пронумеровать? 
 

jaytax23
Offline
Зарегистрирован: 16.02.2019

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

jaytax23 пишет:

Подскажите пожалуйста, как ввести код программы с номерами строк?
В настройках галочку поставил, а код копируется без цифр

Вот ТАК, и никаких галочек там ставить не надо.

jaytax23
Offline
Зарегистрирован: 16.02.2019
#include <Keypad.h>

#include <Password.h>


Password password = Password( "1234" );
const byte ROWS = 4; // 4 строки
const byte COLS = 3; // 4 столбца
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {11, 10, 9, 8};
byte colPins[COLS] = {7, 6, 5};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
  Serial.begin(9600);
}
void loop() {
  char key = keypad.getKey();
  if (key) {
    Serial.println(key); // Передаем название нажатой клавиши в сериал порт
    tone(3, (int)key * 10, 300); // Издаем звуковой сигнал длиной 300 миллисекунд
  }

void keypadEvent(KeypadEvent eKey) {

    switch (keypad.getState()) {
      case PRESSED:
        Serial.print("Pressed: ");
        Serial.println(eKey);
        switch (eKey) {
          case '#': guessPassword(); break;
          default:
            password.append(eKey);
        }
    }
    }

 

jaytax23
Offline
Зарегистрирован: 16.02.2019

Спасибо ;)

bwn
Offline
Зарегистрирован: 25.08.2014

jaytax23 пишет:

jaytax23 пишет:

Подскажите пожалуйста, как ввести код программы с номерами строк?
В настройках галочку поставил, а код копируется без цифр

или в ручную пронумеровать? 
 

Копипастом из IDE, после вставки он сам пронумерует. На второй вкладке поставить галочку "свернуть".

P/S. Жека раньше успел. Но галочку я бы все-таки ставил, а то километровые портянки достает пролистывать. ИМХО.

jaytax23
Offline
Зарегистрирован: 16.02.2019

где ошибка в коде? Подскажите пожалуйста
Я уже минут 30 все подряд исправляю 
xd

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jaytax23 пишет:

Подскажите пожалуйста, как ввести код программы с номерами строк?

Стало быть пункт №1 из моего списка

ЕвгенийП пишет:

1. Изучите вот это.

проигнорирован. Понятно.

jaytax23
Offline
Зарегистрирован: 16.02.2019

Извините, я разобрался уже, наверно надо было удалить ... 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Думаю, что у Вас пропущена закрывающая фигурная скобка после строки 25.

Вообще, когда открывающих скобок больше, чем закрывающих, это должно настораживать.

jaytax23
Offline
Зарегистрирован: 16.02.2019

В написании кода я ноль, все скетчи/коды взял из открытого доступа, только пины под себя отредактировал

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jaytax23 пишет:

В написании кода я ноль

Так прокачивайте это. Иначе никогда ничего сделать не сможете, а на форумах Вас начнут просто посылать.

jaytax23
Offline
Зарегистрирован: 16.02.2019

вышла следующая ошибка : ( строка 36)

In function 'void keypadEvent(KeypadEvent)':
 
Page_With_Temp:36: error: 'guessPassword' was not declared in this scope
 
exit status 1
'guessPassword' was not declared in this scope
---
код ниже
include <Keypad.h>

#include <Password.h>


Password password = Password( "1234" );
const byte ROWS = 4; // 4 строки
const byte COLS = 3; // 4 столбца
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {11, 10, 9, 8};
byte colPins[COLS] = {7, 6, 5};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
  Serial.begin(9600);
}
void loop() {
  char key = keypad.getKey();
  if (key) {
    Serial.println(key); // Передаем название нажатой клавиши в сериал порт
    tone(3, (int)key * 10, 300); // Издаем звуковой сигнал длиной 300 миллисекунд
  }
  }

void keypadEvent(KeypadEvent eKey) {

    switch (keypad.getState()) {
      case PRESSED:
        Serial.print("Pressed: ");
        Serial.println(eKey);
        switch (eKey) {
          case '#': guessPassword(); break;
          default:
            password.append(eKey);
        }
    }
    }

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jaytax23 пишет:

вышла следующая ошибка : ( строка 36)

In function 'void keypadEvent(KeypadEvent)':
 
Page_With_Temp:36: error: 'guessPassword' was not declared in this scope

И что Вам непонятно? Функция не объявлена. А Вы считаете, что она объявлена? Где? Я не вижу.

jaytax23
Offline
Зарегистрирован: 16.02.2019

мне понятно одно, что я ничего не понимаю ... 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, я Вам сказал, что делать - прокачивайте свои знания. Ссылки на литературу есть по ссылке, что давал (по той самой, что Вы проигнорировали).

jaytax23
Offline
Зарегистрирован: 16.02.2019

Извините за мою тупость, я просмотрел много сайтов где описывается как объявить функцию, пробовал много вариантов, но ошибка остаётся ... 
Как её правильно объявить? 
Ответьте пожалуйста 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

jaytax23 пишет:

я просмотрел много сайтов 

А Вы смотрите не сайты, а нормальную литературу по программированию. Ссылки есть на форуме - см. мой пост #19