просьба помочь разобраться

aleks1977
Offline
Зарегистрирован: 27.12.2014

Добрый день всем участникам форума!

Прошу вашей помощи!

история такая: решил собрать контроллер для аквариума по http://www.aqa.ru/forum/ARDUINO-dlya-avtomatizatsii-akvariuma-268157-page9

имею в распоряжении экран 20х4, датчик температуры, часы реального времени, 4контактное рэле ну и соответствено плату ардуино уно.

все дело застопорилось на том как все это заставить работать? знаю что нужно програмировать ардуино но вот как не могу разобраться, чем больше читаю тем больше понимаю что ваще не понятно:)

проблем связать все компаненты в один узел для меня не проблема но вот как заставить все это работать, неполучается! 

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

если кому то не трудно, прошу помочь в освоении этого нелегкого для меня задания!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

если нет почитай

http://arduino.ru/forum/obshchii/sozdanie-temy#comment-75012 

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

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

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

Еще, прилагая скетч, не забудьте его поместить вот в такой блок:

1Здесь можно разместить код
2скетча. Тогда мы сможем указать на номер строки и задать вопрос или дать поправку.
3Иначе текст очень сложно читать.

Главное - не пытаться всё подключить одновременно и пробовать с этим всем работать сразу, не понимая. Единственный вариант - это повторение какого то проекта, но тогда нужно, чтобы все компоненты были точно такие же, точно так же подключались и использовался уже готовый скетч повторяемого проекта.

При соединении разных библиотек могут возникнуть проблемы, потому что библиотеки пишут разные люди и использование ресурсов Ардуины в разных библиотеках может быть одинаковым. Например, разные библиотеки могут исопльзовать один и тот же таймер, что приведет к проблемам. Но многие из этих проблем решаемы. Многие вопросы уже обсуждались на этом форуме и в интернете.

Форум поможет, если Вы покажете нам свои скетчи, схемы подключения и что подключаете (названия, ссылки) и объясните, что именно не работает.

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

Выбирать Вам.

Удачи!

 

aleks1977
Offline
Зарегистрирован: 27.12.2014

Спасибо!

Я понял что мне придёться идти постепенно! Хотя по началу казалось что я всё решу с первого раза:)

По таму как моргания лампами и проделования всяких простых уроков у меня не возникало проблем а как решил собрать целое устройство так и сдулся! :)

Думаю что даже придёться начать с понимания как нужно работать с программой arduino ide. А именно куда распаковывать скаченные библиотеки, или даже не так, чёто даже запутался что значит "библиотеки" и что называют "скетчами"?

Попробую сформулировать 1-ю задачу: 

Экран http://www.ebay.com/itm/Blue-Display-IIC-I2C-TWI-SP-I-Serial-Interface2004-20X4-Character-LCD-Module-/161095107719?pt=LH_DefaultDomain_0&hash=item2582044487

Часы http://www.ebay.com/itm/2PCS-Arduino-I2C-RTC-DS1307-AT24C32-Real-Time-Clock-Module-For-AVR-ARM-PIC-/131166717884?pt=LH_DefaultDomain_0&hash=item1e8a2547bc

С помощью какого скетча можно научить  выводить на данный экран время?

  

 

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

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

1Interface: I2C
2  I2C Address: 0x27 (address can't be changed )
3  Sofware version :0022
4  SDA (DATA) -> analog input pin 4
5  SCL (CLOCK) -> analog input pin 5

Безусловно еще нужно подключить питание (5В) и землю. Потом нужно найти библиотеку LiquidCrystal_I2C и установить её.

Следующим шагом копируем скетч (программу для Ардуино) в среду ArduinoIDE, скетч я взял из Вашей ссылки, только исправил "ошибку", в Вашем дисплее 20 символов в строке, а в скетче 16 (я выделил эту строку):

01#include <Wire.h>
02#include <LiquidCrystal_I2C.h>
03LiquidCrystal_I2C lcd(0x27,20,4); //set the LCD address to 0x27 for a 20 chars and 4 line display
04void setup()
05{
06lcd.init();
07lcd.backlight();
08lcd.setCursor(0, 0);
09lcd.print("b2cqshop");
10lcd.setCursor(0, 1);
11lcd.print("Voltage: ");
12lcd.setCursor(13, 1);
13lcd.print("V");
14}
15void loop()
16{
17int val;
18float temp;
19val=analogRead(0);
20temp=val/4.092;
21val=(int)temp;//
22lcd.setCursor(9, 1);
23lcd.print(0x30+val/100,BYTE);
24lcd.print(0x30+(val%100)/10,BYTE);
25lcd.print('.');
26lcd.print(0x30+val%10,BYTE);
27delay(100);
28}

Скетч читает значение с аналогового входа A0 и выводит напряжение на нем на дисплей.

Как сделаете, посмотрим и на часы, пока рано. Но будет легче, когда дисплей заработает, иначе и не увидите, что в часах творится.

UPD: забыл, что 20x4, исправил скетч, поставил параметры 20,4

aleks1977
Offline
Зарегистрирован: 27.12.2014

Вопрос: "Потом нужно найти библиотеку LiquidCrystal_I2C и установить её" тоесть я на просторах интернета ищу для своего дисплея библиотеку и куда её нужно установить?

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

 

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

Библиотеку распаковываете там, где у вас arduino IDE, папка "libraries". После распаковки, если IDE был запущен, не забываем перезапустить.

Кстати с библиотеками идет обычно несколько примеров, их можно запустить и потестировать.

aleks1977
Offline
Зарегистрирован: 27.12.2014

Сделал как сказали.

Скачал библиотеку и сохранил в папке "libraries" программы ардуино

Вставил в среду arduino ide

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); //set the LCD address to 0x27 for a 20 chars and 4 line display
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("b2cqshop");
lcd.setCursor(0, 1);
lcd.print("Voltage: ");
lcd.setCursor(13, 1);
lcd.print("V");
}
void loop()
{
int val;
float temp;
val=analogRead(0);
temp=val/4.092;
val=(int)temp;//
lcd.setCursor(9, 1);
lcd.print(0x30+val/100,BYTE);
lcd.print(0x30+(val%100)/10,BYTE);
lcd.print('.');
lcd.print(0x30+val%10,BYTE);
delay(100);
}

Вот что написала программа после проверки:

sketch_dec27a:3: error: 'LiquidCrystal_I2C' does not name a type
sketch_dec27a.ino: In function 'void setup()':
sketch_dec27a:6: error: 'lcd' was not declared in this scope
sketch_dec27a.ino: In function 'void loop()':
sketch_dec27a:22: error: 'lcd' was not declared in this scope
sketch_dec27a:23: error: 'BYTE' was not declared in this scope

Начиная с версии Arduino 1.0, дескриптор 'BYTE' больше не поддерживается.
Пожалуйста, используйте Serial.write() вместо него.
 

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

Во первых почитайте как вставлят код http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii можно легко исправить Ваше сообщение. При правильной вставке кода, с левой стороны отображаются номера строк. Ошибки, которые выдал компилятор, указывают на номер строки, а считать в Вашем варианте вставки кода - занятие не из приятных.

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

К примеру у меня выдало только одну ошибку, на использование BYTE.

Среда ArduinoIDE 1.0.5, LiquidCrystal_I2C http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

01#include <Wire.h>
02#include <LiquidCrystal_I2C.h>
03LiquidCrystal_I2C lcd(0x27,20,4); //set the LCD address to 0x27 for a 20 chars and 4 line display
04void setup()
05{
06  lcd.init();
07  lcd.backlight();
08  lcd.setCursor(0, 0);
09  lcd.print("b2cqshop");
10  lcd.setCursor(0, 1);
11  lcd.print("Voltage: ");
12  lcd.setCursor(13, 1);
13  lcd.print("V");
14}
15void loop()
16{
17  int val;
18  float temp;
19  val=analogRead(0);
20  temp=val/4.092;
21  val=(int)temp;//
22  lcd.setCursor(9, 1);
23  lcd.write(0x30+val/100);
24  lcd.write(0x30+(val%100)/10);
25  lcd.print('.');
26  lcd.write(0x30+val%10);
27  delay(100);
28}

Вот этот вариант компилируется без ошибок. Поскольку у меня нет дисплеев с I2C, проверить не могу.

 

aleks1977
Offline
Зарегистрирован: 27.12.2014

Учту про вставку кода, спасибо, я не знал!

Библиотеку скачал вот отсюда http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

Это значит у меня ошибки идут от не правильной библиотеки? Нужно искать другую?

 

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

aleks1977 пишет:

Учту про вставку кода, спасибо, я не знал!

Библиотеку скачал вот отсюда http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

Это значит у меня ошибки идут от не правильной библиотеки? Нужно искать другую?

 

библиотека скорее всего правильная, но написанная под более ранний IDE. Я так вообще в основном на 0023 работаю. Каждый сам этот вопрос для себя решает.

aleks1977
Offline
Зарегистрирован: 27.12.2014

К сожалению для меня вопрос так и остался открытым!

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

aleks1977 пишет:

Учту про вставку кода, спасибо, я не знал!

Библиотеку скачал вот отсюда http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/

Это значит у меня ошибки идут от не правильной библиотеки? Нужно искать другую?

 

Хмм, а мое сообщение Вы читали? У меня та же самая библиотека. Правда там две ссылки, на старую и на новую (я какчал новую). Плюс после установки библиотеки среду ArduinoIDE нужно перезапустить.

Мои данные я указал (сравните, чем отличаются), почему у Вас не так, сказать сложно.

 

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

aleks1977 пишет:

К сожалению для меня вопрос так и остался открытым!

так в чем проблема, поставте еще один IDE или найдите библиотеку под ваш.

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

aleks1977
Offline
Зарегистрирован: 27.12.2014

Добрый день!

Сегодня на свежую голову начал заново. Установил IDE 0023, скачал библотеку http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/ и распокавал в папку "библиотек" в программу, затем перезапустил IDE и вставил код:

01#include <Wire.h>
02#include <LiquidCrystal_I2C.h>
03LiquidCrystal_I2C lcd(0x27,20,4); //set the LCD address to 0x27 for a 20 chars and 4 line display
04void setup()
05{
06lcd.init();
07lcd.backlight();
08lcd.setCursor(0, 0);
09lcd.print("b2cqshop");
10lcd.setCursor(0, 1);
11lcd.print("Voltage: ");
12lcd.setCursor(13, 1);
13lcd.print("V");
14}
15void loop()
16{
17int val;
18float temp;
19val=analogRead(0);
20temp=val/4.092;
21val=(int)temp;//
22lcd.setCursor(9, 1);
23lcd.write(0x30+val/100);
24lcd.write(0x30+(val%100)/10);
25lcd.print('.');
26lcd.write(0x30+val%10);
27delay(100);
28}

И вот что мне на это ответила программа:

In file included from sketch_dec28a.cpp:2:
C:\arduino-0023\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:82: error: conflicting return type specified for 'virtual size_t LiquidCrystal_I2C::write(uint8_t)'
C:\arduino-0023\hardware\arduino\cores\arduino/Print.h:40: error:   overriding 'virtual void Print::write(uint8_t)'

Что то подсказывает что есть конфликт чегото а вот где и что с этим делать пока не могу понять? Может кто сталкивался с этим?

 

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

Вы посмотрите пост 12, что вам kisoft написал. Я вас вчера похоже в дебри отправил. Установите библиотеку как у него и пробуйте с вашим старым IDE 1....

Если вы скачали новую, она как раз может со старым IDE и не работать.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Алгоритм такой: 1. Ставим библиотеку. 2. Компилим ЕЁ примеры. 3. Дальше IF: работает- не работает....

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

Сдублирую кусочек сообщения #8: "Среда ArduinoIDE 1.0.5, LiquidCrystal_I2C http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/"

Теперь рассуждаем логически:

1. У меня компилируется на 1.0.5

2. Библиотека та же.

3. Сравниваем Вашу версию ArduinoIDE с моей. Если одинаковые, тогда продолжаем копаться, если нет, то я пас.

PS Одно не пойму, зачем Вам древние версии, да еще и со своими граблями?

 

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

kisoft пишет:

Сдублирую кусочек сообщения #8: "Среда ArduinoIDE 1.0.5, LiquidCrystal_I2C http://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C/"

Теперь рассуждаем логически:

1. У меня компилируется на 1.0.5

2. Библиотека та же.

3. Сравниваем Вашу версию ArduinoIDE с моей. Если одинаковые, тогда продолжаем копаться, если нет, то я пас.

PS Одно не пойму, зачем Вам древние версии, да еще и со своими граблями?

 

Каюсь, я его в леса после корпоратива отправил. Но еще утром исправился.

aleks1977
Offline
Зарегистрирован: 27.12.2014

Уважаемые bwn и kisoft, спасибо вам за терпение и попытку направить меня в правильное русло!

Но думаю что для меня это будет трудный путь, т.к. разные компьюторы, разные люди, библиотеки, погода, и вкусы :) поэтому я наверное попробую свой вопрос решить по другому!
У меня есть желание  собрать железо которое бы полностью управляло аквариумом ( тем железом которое есть у меня в наличии), а именно: включало и выключало свет в заданное время, следило за температурой в аквариуме и потдерживало заданую температуру, ну и возможно выполняло еще одну или две функции! Если есть заинтересованые лица в решении моей задачи за вознаграждение и готовым обьяснить то как все это програмно работает, что бы в будущем я мог вмешаться в програмный код и поменять его под свои задачи, то я готов оплатить этот труд.
Обьявите стоимость поставленой задачи? и координаты того кто может помочь.

Спасибо.

 

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

aleks1977 пишет:

Уважаемые bwn и kisoft, спасибо вам за терпение и попытку направить меня в правильное русло!

Но думаю что для меня это будет трудный путь, т.к. разные компьюторы, разные люди, библиотеки, погода, и вкусы :) поэтому я наверное попробую свой вопрос решить по другому!
У меня есть желание  собрать железо которое бы полностью управляло аквариумом ( тем железом которое есть у меня в наличии), а именно: включало и выключало свет в заданное время, следило за температурой в аквариуме и потдерживало заданую температуру, ну и возможно выполняло еще одну или две функции! Если есть заинтересованые лица в решении моей задачи за вознаграждение и готовым обьяснить то как все это програмно работает, что бы в будущем я мог вмешаться в програмный код и поменять его под свои задачи, то я готов оплатить этот труд.
Обьявите стоимость поставленой задачи? и координаты того кто может помочь.

Спасибо.

 

Да бросьте вы отчаиватся, ничего супер сложного в этом нет. Неужели у вас так сильно горит этот проект?

Мелкими шажками, с экспериментом и за месячишку все сваяете. Дорогу осилит идущий.

aleks1977
Offline
Зарегистрирован: 27.12.2014

Я не отчаиваюсь, а пытаюсь пойти простым путём!

Могу обьяснить почему,:

К всех разные компы, разные ОС, и разные жаргоны( компьютерные), которые отнимают много времени на поиски и понимание того что тебе сказали и куда послали!

Думаю что каждый человек должен заниматься своим делом и если я в этом не понимаю, то готов за это платить а не пытаться изложить в письменном виде тогот чего даётся мне с трудом!

Хотя желание разобраться в этом деле присутствует дикое! :)

 

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

Простой путь не есть самый ближний. Вернитесь на пост 12, все установите. Далее откройте в IDE примеры и загрузите какой-нибудь. Там скорее всего дисплей 16х2, надо будет исправить как в 3 строке, пост 14. Гоняете пример, пытаетесь понять что и как. Они короткие. Если что то не понятно, спрашивайте.

Насчет каждый своим делом - я 20 лет сталь варил, потом шесть лет силовые установки для ПЛ строил, и уже три года птичек развожу, ну и где я програмист? В школе информатика в виде логарифмической линейки была.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

aleks1977 пишет:

Обьявите стоимость поставленой задачи? и координаты того кто может помочь.

Спасибо.

Ветка не совсем та...

StudioGippopotam@gmail.com