Подключение LCD Keypad Shield

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Я новичек, вот помигал диодами, приобрел ЛСД шилд и застрял, пытался подклбчить по  http://www.youtube.com/watch?v=JDoTn1sLxWQ&feature=channel&list=UL

Вот, собственной мой скетч

/*
Проверка работы экрана, 
на экране должна быть надпись и тикать счетчик
*/
#include <LCD4Bit_mod.h> // как я понимаю, подключение библиотеки
LCD4Bit_mod lcd = LCD4Bit_mod(2); // активация двух строк

int count = 0; // назначаем переменную
char outputCount[16]; // количество символов

vold setup() { // собственно начало
lcd.init(); //инициализация дисплея
lcd.clear(); //очистка дисплея
lcd.printIh("Displey Test"); // вывод фигни
}

void loop() {
lcd.cursorTo(2,0); //указываем где печатать, второй ряд, нулевая строка 
itoa(count, outputCout,10); // че за фигня, пока не разобрался
lcd.printIn(outputCount); //печать оутпута
count++; // прибаление оутпута на 1
}

но при компиляции пишет ошибку 

LCD4Bit_mod.cpp:29:57: error: WConstants.h: No such file or directory
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::pulseEnablePin()':
LCD4Bit_mod.cpp:57: error: 'LOW' was not declared in this scope
LCD4Bit_mod.cpp:57: error: 'digitalWrite' was not declared in this scope
LCD4Bit_mod.cpp:58: error: 'delayMicroseconds' was not declared in this scope
LCD4Bit_mod.cpp:60: error: 'HIGH' was not declared in this scope
LCD4Bit_mod.cpp:63: error: 'delay' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::pushNibble(int)':
LCD4Bit_mod.cpp:72: error: 'digitalWrite' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::commandWriteNibble(int)':
LCD4Bit_mod.cpp:98: error: 'LOW' was not declared in this scope
LCD4Bit_mod.cpp:98: error: 'digitalWrite' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::commandWrite(int)':
LCD4Bit_mod.cpp:105: error: 'LOW' was not declared in this scope
LCD4Bit_mod.cpp:105: error: 'digitalWrite' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::print(int)':
LCD4Bit_mod.cpp:117: error: 'HIGH' was not declared in this scope
LCD4Bit_mod.cpp:117: error: 'digitalWrite' was not declared in this scope
LCD4Bit_mod.cpp:118: error: 'LOW' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::clear()':
LCD4Bit_mod.cpp:138: error: 'delay' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::init()':
LCD4Bit_mod.cpp:145: error: 'OUTPUT' was not declared in this scope
LCD4Bit_mod.cpp:145: error: 'pinMode' was not declared in this scope
LCD4Bit_mod.cpp:153: error: 'delay' was not declared in this scope
LCD4Bit_mod.cpp:159: error: 'delayMicroseconds' was not declared in this scope
LCD4Bit_mod.cpp: In member function 'void LCD4Bit_mod::leftScroll(int, int)':
LCD4Bit_mod.cpp:224: error: 'delay' was not declared in this scope

 как я понимаю, скетч совершенно неверный, много чего не обьявлено 
Да, дисплей 16 на 2

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Кто подключал данные шилды, отзовитесь пожалуйста 

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

Kotovdmitrij пишет:
Кто подключал данные шилды, отзовитесь пожалуйста 

При чем здесь шилд и зачем кричать,
несовместимость  библиотек у вас.

Если трудно что понять то берете вот эту строчку--- error: WConstants.h: No such file or directory
и вбиваете в Google..... эт вам на будующее.

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

как я понимаю, оно просит библиотеку WConstants.h
 Щас попробую найти, хотя, я ее не обьявлял

Не, как я понял, В Arduino IDE версии 1.0, разработчики переименовали файл WProgram.h в Arduino.h, поэтому, чтобы старые библиотеки заработали в новой IDE — нужно просто открыть файлы библиотеки (.h и .cpp) и если в них встречается строчка
#include "WProgram.h"
, то заменить её на:
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

Обычно, это нужно делать только в заголовочном h-файле библиотеки.

Возможно, больше ничего делать не придётся и библиотека сразу заработает :)

не, не заработало(((

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

процес пошел, убираем
#include "WConstants.h"
и перед
extern "C" {
пишем
#include "arduino.h"

WConstants.h использовалась в старой версии, а нынче используется arduino.h

я так понимаю включение новой стандартной библиотеки

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Да, я стал крутить стандартный HelloWorld из библиотеки LiquidCrystal

 

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Во, новый прикол: HelloWorld:41: error: no matching function for call to 'LiquidCrystal::LiquidCrystal(int, int, int, int, int, int)'

 

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Как я понимаю, не объявлены все переменные, в скетче 

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

в библиотеке

int RS = 12;
int RW = 11;
int Enable = 2;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};

как раз, разница в 6 значений

 

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Блин, как бы не менял данные переменные и в библиотеке и в скетче, ошибка не меняется 

Zapek@n
Offline
Зарегистрирован: 16.02.2012

А Вы где библиотеку качали? Я так понимаю бывают ее разновидности, и конструктор может отличаться количеством параметров. Похоже ошибка говорит, что должно быть другое количество параметров (не 6). Например, есть такая библитека от SeedStudio, там нужно 7 или 11 параметров для инициализации.

Kotovdmitrij
Offline
Зарегистрирован: 02.11.2012

Справился с проблмой с помощью лома.... поставил предыдущую версию Ардуино, практически все скетчи заработали, щас буду в них разбираться

Life23
Offline
Зарегистрирован: 10.08.2013