Проблема с библиотекой Keypad

brobobo
Offline
Зарегистрирован: 23.10.2018

Добрый день, неожиданно появилась проблема, хотя до этого работало. Проблема случилась после обновления библиотек и самой IDE. Суть:

1. Подключаю библиотеку:

#include <Keypad.h>

2. Создаю экземпляр класса: 

Keypad kpd= Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols);

3. Добавляю слушателя событий: 

void setup()
{
   kpd.addEventListener(kpdEvent);
}

 

При попытке компилящии появляется ошибка: https://ibb.co/0MVzft0

Помогите разобраться, целый день уже пытаюсь исправить.

 

brobobo
Offline
Зарегистрирован: 23.10.2018

Что то картинка не грузиться, вот текст: 

straik:59:24: error: 'kpdEvent' was not declared in this scope

   kpd.addEventListener(kpdEvent);  

                        ^

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

 

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

Ну, нету функции kpdEvent, в чём проблема-то? А если есть, то расположена ниже, чем используется.

brobobo
Offline
Зарегистрирован: 23.10.2018

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

Ну, нету функции kpdEvent, в чём проблема-то? А если есть, то расположена ниже, чем используется.

ну так, до обновления работало же! да и функция есть: keypad.addeventlistener.

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

brobobo пишет:

функция есть: keypad.addeventlistener.

Так, во первых, учитесь читать. Я Вам написал

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

Ну, нету функции kpdEvent

И причём здесь  keypad.addeventlistener?

brobobo пишет:

ну так, до обновления работало же!

И во-вторых, тоже учитесь читать. Я вам писал

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

А если есть, то расположена ниже, чем используется.

Если раньше работало, то скорее всего дело в этом. Некоторые версии IDE позволяют такие вольности, как объявление функции ниже использования, а некоторые - нет. Всегда объявляйте выше и проблем не будет.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

brobobo пишет:

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

Ну, нету функции kpdEvent, в чём проблема-то? А если есть, то расположена ниже, чем используется.

ну так, до обновления работало же! да и функция есть: keypad.addeventlistener.

Это не функция. Это добавлятель функции в список, а самой функции нет.

brobobo
Offline
Зарегистрирован: 23.10.2018

Не получилось исправить. пока переключился на след проблему. Чтобы не создавать еще тему спрошу здесь. подключил 3 кнопки и рычажный тумблер. Вот накидал схему: https://ibb.co/j4TqDBb. и пару вопросов: 

1. почему при проверке через Serial.print(digitalRead(button3)); у меня показывает HIGH или LOW, хотя когда собирал на макетной плате было 1 или 0. pinMode не устанавливал.

2. у меня для кнопок провода тонкие очень, других не было, использовал подручные. при нажатой кнопке, если начать переключать тумблер в сериал порт попадают HIGH или LOW, по разному.  Могут ли быть помехи, не сильно шарю в этом, это первое что пришло в голову.

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

brobobo пишет:

Не получилось исправить

Что не получилось? Функцию повыше перенести не получилось? Ну-ка давайте сюда код оригинальный и "как Вы пробовали исправить"!

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

По второму вопросу, ссылка битая, давайте схему сюда картинкой.

И ещё, Ваш вопрос "почему при проверке через Serial.print(digitalRead(button3)); у меня показывает ..." Без текст программы выглядит странновато. Ответ "по кочану" Вас утсроит? Если нет - показывайте программу.

brobobo
Offline
Зарегистрирован: 23.10.2018

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

По второму вопросу, ссылка битая, давайте схему сюда картинкой.

И ещё, Ваш вопрос "почему при проверке через Serial.print(digitalRead(button3)); у меня показывает ..." Без текст программы выглядит странновато. Ответ "по кочану" Вас утсроит? Если нет - показывайте программу.

https://ibb.co/j4TqDBb

Вот ссылка на картинку, забыл тумблер нарисовать, он на 3 пине.

я пока пытаюсь читать значение пина

int tumbler=3;
int button1 = 11;
int button2 = 12;
int button3 = 13;

void setup()
{

  lcd.begin(16, 2);                  // Задаем размерность экрана
  lcd.setCursor(0, 0);   // Устанавливаем курсор в начало 1 строки
  lcd.print("Запускаем");
  lcd.setCursor(0, 1);
  lcd.print("настройку:");
  Serial.begin(9600);  // инициализация монитора последовательного порта
  delay(3000);
  lcd.clear();
  Serial.print(digitalRead(button3)); 
}


void loop()
{

}