Где найти описание библиотек?

Joiner
Offline
Зарегистрирован: 04.09.2014

Подскажите, пожалуйста, начинающему где можно найти описание библиотек для ардуино(какие команды, что делают). Искал конкретно описание LiquidCristal_I2C........................Ни чего не нашел :(   Только примеры

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

по максимуму написанная библиотека dll.h должна иметь описание в виде ремарок в файлах dll.h и dll.cpp

не все разработчики библиотек так делают....

вы, например, комментите каждую строку своего кода, описание каждой процедуры-функции ? нет !

чобы получить описание "молчаливой" библиотеки - нужно разобраться что и как она делает ( написать комментарии и выложить для всех нуждающихся ) :)

если кто-то так сделал - найдёте описание, а обычно - нет :(

Joiner
Offline
Зарегистрирован: 04.09.2014

Спасибо, конечно :), но так я и сам искал, но ни чего не нашел.

У меня есть описание библиотеки LiquidCrystal, которая без I2C. Там все команы описаны и как они работают. Хотелось бы почитать описания других полезных библиотек, но их не могу найти. Может они и есть, но на английском, а с ним я не дружу. Приходится эксперементировать с примерами из библиотек, делать по шаблону, во многих случаях не понимая, что делаешь :)

Вот как-то так :)

Joiner
Offline
Зарегистрирован: 04.09.2014

SU-27-16 пишет:

.......................

вы, например, комментите каждую строку своего кода, описание каждой процедуры-функции ? нет !

............................

ДА!

Я комментирую каждую важную строку и оставляю скетчи в качестве примеров на память для будущих скетчей. Из головы все вылетает моментально....а заглянешь, и все прояснилось :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

разбирайте библиотеку на кирпичики - всё поймёте :)

будите писать библиотеку - оставайтесь при ваших принципах !  :)

Joiner
Offline
Зарегистрирован: 04.09.2014

Спасибо. Попробую на кирпичики.

А до написания библиотек мне, наверное, пока далековато :) Но будем стремиться

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Joiner пишет:

А до написания библиотек мне, наверное, пока далековато

всё относительно... щас начнёте - через три дня свою напишите :)

http://arduino.ru/Hacking/LibraryTutorial

свою напишите - сможете разобраться в других :)

удачи !

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Не дружите с английским, ищите примеры использования на русском. И учите английский.
Как правило примеров достаточно, чтобы обойтись без описания. Более подробно - смотреть исходники. Если не знаете ни английского, ни С, то учите оба не на библиотеках.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

kisoft пишет:
Не дружите с английским, ищите примеры использования на русском. И учите английский. Как правило примеров достаточно, чтобы обойтись без описания. Более подробно - смотреть исходники. Если не знаете ни английского, ни С, то учите оба не на библиотеках.

круто ! для начинающих....

мой базовый - немецкий :( и что ? на пальцах низя рассказать что/как/где ?

не сравнивайте ваш уровень и спрашивающего....

ваши тексты моя конспектирует ( не диферамбы ) :)

Joiner
Offline
Зарегистрирован: 04.09.2014

Очень жаль что мало людей делятся своим опытом. Я не имею в виду общение на форуме. Хотя из этого форума очень много почерпнул, многое узнал, получил ответы на многие свои вопросы. Спасибо.

Но еще есть люди, как правило сами новички и далеко не ассы, которые пишут статьи про свой опыт, про свои грабли, как решили, где почерпнули информацию. И им огромное спасибо. В свое время бился с подключением LCD по I2C, ни как не получалось пока не прочитал статью какого-то паренька, который тоже очень долго бился с этой проблемой. По пути указанном им все прекрасно получилось. И если б не его статья,  я, наверное, очень долго бился бы головой об стену в тоже самое место, куда в свое время бился он.

  Запомнился еще тварищ Осипов, которого на этом форуме даже поругивали. Вижу, что он не профи, но благодаря ему я сыкономил массу времени, получил нужное направлени,узнал про многие устройства и их применение.

 Спасибо всем. Будем дальше с удовольствием работать над своими познаниями.

И еще спасибо создателям Ардуино! Это как наркотик. Подсел совершенно случайно :)

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Joiner пишет:

Очень жаль что мало людей делятся своим опытом.

В интернете много статей о подключении дисплеев с использованием указанной Вами библиотеки. Потому очень странно слышать о том, что мало делятся. В том числе на русском много статей (вот малая часть моря информации)

http://jt5.ru/examples/oled-i2c/

http://cxem.net/arduino/arduino67.php

http://xopk.in/page/i2c

А после того, как получится подключить, можно спросить на форумах, если что то конкретное непонятно, а не кричать, что нет описаний библиотек на русском, не могу найти.

Лично я стараюсь помогать всем, кто адекватно пишет названия тем и более или менее формулирует вопрос. Так что не надо говорить о том, что никто не делится. Рассмотрим Ваш случай.
1. Название темы - нормально.
2. Вопрос сформулирован вполне достаточно. Удачно, что приведен пример, это как правило помогает.
Чем я мог помочь? Найти в гугле примеры использования библиотеки на русском языке, что я и сделал. Еще дал совет, как нужно поступать в данном конкретном случае.

Я потратил на эту тему минут 20 (думаю даже больше) своего времени, в отличии от Вас, у меня времени много меньше на занятием хобби, семья, работа, от 2,5 часов в день на дорогу до работы. Сон по 4-5 часов каждый день. Вечером пришел домой, открыл форум, а там 10 тем с названием "Помогите новичку". Даже если бы я зашел в такую тему о тветил, разве потом вспомнишь, где отвечал и, возможно, где еще тебя ждут? Да сто раз - нет, не запомнить.

Еще один совет, если хотите: задавайте конкретные вопросы, а не фиолсофские. На примере этой темы можно было спросить описание бибилотеки LiquidCrystal_I2C, а также зачем Вам это нужно, что именно не получается, а не спрашивать за все библиотеки мира.

И остальным отвечавшим: я учил английский (да, повезло), потому мой совет "учить английский" может выглядеть издевательским, однако, без языка прочитать хотя бы datasheet будет сложно. Я не прав? Пишите производителям, пусть переводят на русский. По-поводу С/С++ аналогично, если его не учить на примерах, то ничего не получится. Совсем ничего.

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

Всем удачи! Учиться всегда сложно.

 

Joiner
Offline
Зарегистрирован: 04.09.2014

kisoft, большое спасибо что откликнулись. Я прекрасно понимаю, что ни кто не обязан отвечать на мои вопросы, но на этом форуме мне уже много раз помогали, я очень благодарен людям и Вам в часности за то, что потратили на меня свое время и во многих случаях мне помогли. Надеюсь, что может быть я тоже когда-то смогу кому-нибудь чем-то помочь.

 А на счет библиотек я не кричал, а просто спросил. Дисплей по I2C подключил давно, прекрасно работает. Попробовал и другие библиотеки, такие как SD, Stepper, Ds1307, Ultrasonic... Моих старых мозгов хватило разобраться на примерах и запустить их. Просто мне хотелось узнать, существуют ли подробные описания библиотек на русском. Видимо нет.

 Извините, много букв :(

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Те библиотеки, что Вы упоминали, достаточно простые, потому описывать особо нечего.
Обычно достаточно посмотреть интерфейс, описание класса. А если подробнее, то смотрим исходники. Во всяком случае я так делаю.
Удачи.

Joiner
Offline
Зарегистрирован: 04.09.2014

Спасибо. Попробую.

Jason Voorhees
Offline
Зарегистрирован: 19.01.2016

Доброе утро! Я в библиотеке LiquidCrystal_I2C открыл блокнотом файл LiquidCrystal_I2C.h 

Там есть следующий блок:

// commands
#define LCD_CLEARDISPLAY 0x01
#define LCD_RETURNHOME 0x02
#define LCD_ENTRYMODESET 0x04
#define LCD_DISPLAYCONTROL 0x08
#define LCD_CURSORSHIFT 0x10
#define LCD_FUNCTIONSET 0x20
#define LCD_SETCGRAMADDR 0x40
#define LCD_SETDDRAMADDR 0x80
 
// flags for display entry mode
#define LCD_ENTRYRIGHT 0x00
#define LCD_ENTRYLEFT 0x02
#define LCD_ENTRYSHIFTINCREMENT 0x01
#define LCD_ENTRYSHIFTDECREMENT 0x00
 
// flags for display on/off control
#define LCD_DISPLAYON 0x04
#define LCD_DISPLAYOFF 0x00
#define LCD_CURSORON 0x02
#define LCD_CURSOROFF 0x00
#define LCD_BLINKON 0x01
#define LCD_BLINKOFF 0x00
 
// flags for display/cursor shift
#define LCD_DISPLAYMOVE 0x08
#define LCD_CURSORMOVE 0x00
#define LCD_MOVERIGHT 0x04
#define LCD_MOVELEFT 0x00
 
// flags for function set
#define LCD_8BITMODE 0x10
#define LCD_4BITMODE 0x00
#define LCD_2LINE 0x08
#define LCD_1LINE 0x00
#define LCD_5x10DOTS 0x04
#define LCD_5x8DOTS 0x00
 
// flags for backlight control
#define LCD_BACKLIGHT 0x08
#define LCD_NOBACKLIGHT 0x00
 
Правильно ли я понимаю, что это и есть различные команды библиотеки?

 

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Это описание констант протокола обмена с дисплеем, который Вас не должен волновать, если используете библиотеку, а не собираетесь свою писать. Или это корнстанты, используемые при работе с дисплеем... Смотрите далее - описание класса. И поищите в папке с этой библиотекой пример использования. Как правило, там продемонстрировано использование всех функций.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Jason Voorhees пишет:

Доброе утро! Я в библиотеке LiquidCrystal_I2C открыл блокнотом файл LiquidCrystal_I2C.h 

Там есть следующий блок:

...Правильно ли я понимаю, что это и есть различные команды библиотеки?

Нет, неправильно.

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

"Команды библиотеки", как правило, являются методами класса - именно там и нужно смореть, т.е в описание класса.

PS. Только не спрашивайте, что такое методы класса, - это никакого отношения к Ардуино не имеет, а относится исключительно к ООП вообще или к С++ в частности.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ничего сложного эта библиотека из себя не представляет. Там есть константы, верно - это команды протокола общения с дисплеем. Для их использования там есть конкретные методы в публичной части класса, типа cursor() или как-то похоже. Пишу на память. Можно подать команду "вручную", есть метод command().

Все методы "вывода данных" наследованы из класса Print() также как и у Serial, соответственно можно применять их одинаково. У самого класса есть виртуальная переопределяемая функция wirte(), и только.

Сам класс работает через ардуиновский Wire/utility/twi.h, предоставляющий обработчик аппаратного драйвера шины I2C(TWI), который предоставляет вам блокирующий вариант работы (версии старше 1.6.5) с вводом-выводом через интерфейс. Это означает, что пока вы не закончили передачу 1 байта, следующая передача не начнется.

К недостаткам класса LiquidCrystal_I2C можно отнести его реализацию через Wire.h, особенно применение с 4-битным интерфейсом к дисплею: каждая отправка на дисплей 1 байта сопровождается 6 (шестью!) посылками и их "подготовкой": захват шины, подготовка первой тетрады, отправка, освобождение шины .. и так 6 раз. Все это помазано толстым слоем виртуальных и прочих вызовов .. в общем "медленно и печально" (как и все остальное в wiring).

Для шустрой работы с дисплеем (насколько это возможно), советую посмотреть lcd1602.h и arhat_twi.h. Там реализована пока только 1 функция (та самая базовая для виртуального Print.h) - lcdWrite(char*buf, len);

В отличии от этого класса, у меня отправка посылки из 6 байт (требование протокола) производится 1 посылкой с однократной подготовкой данных в буфере. Кроме этого, не выделяются никакие дополнительные буфера ни для аппаратного драйвера ни для классов а-ля Print.

Примерное описание ситуации.