Про arduino IDE
- Войдите на сайт для отправки комментариев
Пт, 21/09/2012 - 16:59
Где найти вменяемое описания использования в проекте дополнительных окон?
Где найти вменяемое описания использования в проекте дополнительных окон?
/arduino-1.0.1/reference/Guide_Environment.html (прямо в IDE)
Там есть. Если проблеммы с языком, смотрите хромом - он переведет
Гм!
Я банально мечтаю открыть (неподписаной кнопочкой-стрелочкой справа вверху) окошко(файл cpp) и написать в нем class , чтобы потом смело использовать его методы в setup() и loop()
Отрыть или создать? Открывать - никаких "кнопочек стрелочек не нужно". Все файлы из текущей дирректории открываются в отдельных вкладках. Так что просто нужно тыкнуть в название вкладки. "Главным" считается тот .ino кто совпадает с именем текущего фолдера (поэтому оно всегда хочет что-бы каждый скетч лежал в отдельной папке).
При компиляции все .ino из текущей папки - "склеяется" в один и отдадутся компилятору. Но в "каком порядке" они будут склеены - как IDE в голову взбредет.
.h файлы. "сами" не подхватятся, для них include нужно делать (для .ino достачно что-бы он лежал в папке). .h/.c файлы - компилятся отдельно. поэтому что-то объявленно в .с может быть не видимо в других файлах.
Теоретически - порядок объявления функций/переменных не важен. Практически - иногда у IDE "сносит башню" и он не хочет использовать функцию объявленную по коду чуть ниже (вот тут и становится важным в каком порядок он склеет .ino файлы).
Все файлы из текущего фолдера открываются во вкладки только в момет когда вы открываете "главный .ino", так что если вы создали еще идин файл вне IDE - он сам, как вкладка, - не появится. Нужно закрыть/открыть.
Если вы "еще один файл" хотите создать прямо из самого IDE - ну вот вы сами, похоже, уже нашли
Обратите внимание, что "диалоговое окно" для ввода имени нового файла - не открывается. Появляется "желтая область" внизу (и не всегда ее сразу замечаешь, особено если ждешь "появления окошка").
И еще. Комбинация Ctrl-Shift-N - лично у меня не работает. Только мышкой как как на скриншоте.
Можно еще "Скетч"->"Добавить файл..." и открытый файл будет в новой вкладке.
Ctrl-Shift-N у меня работает :) версия IDE 1.0.1
Ага! Всё это прикольно 8=)
О каких *.ino идет речь?
По умолчанию в arduino22 создаётся новый файл .pde 8=(
Ага! открыл arduino1
Действительно в 1-ом создаётся .ino 8!)
Ёлы!
А .ino не открываются 22 8!) Я фигею!
Сколько себя помню ещё ни один программный продукт не стал лучше чем был 8=( , а вот хуже и неудобней целая масса.
Чем же пользоваться временному прохожему, чтобы потом можно было вернуться к пройденному 8?)
Вобщем получилось что...
Создал дополнительные окна-файлы display.h и display.pde
/* --- display.h --- */
#ifndef display_h
#define display_h
class ClassName
{
public:
ClassName();
void hello();
};
#endif
/* ------------------ */
/* --- display.pde --- */
ClassName::ClassName()
{
;
}
void ClassName::hello()
{
;
}
/* ---------------------- */
и прописал в основном окне
#include "display.h"
Видимо можно работать с классами 8=)
без создания библиотек
Я юзаю Eclipse вот статейка по установеи плагина. Я намучался пока всё заработало более или мение. Не смотря на сложности установки, Eclipse на много удобнее чем ардуиновская IDE.
Открываются. File Open ... и открылось. Или банально свяжите ассоциацию .ino файлов с вашей .22.
Это зависит не от IDE, а от ваших настороек вашей операционной системы. Какой тип файлов с какой програмной он ассоциируюет.
А вообще, 0.22 - это, извините, древность дремучая. Не сказал бы что 1.0 круче неимоверно, но просто если вы пользуетесь чем-то "переставшим быть свежим", то естественно будут время от времени вылазить какие-то шероховатости совместимости. Будте готовы их решать.
И почитайте прикрепленные ветки. В часности как вставлять код.
А работать с классами без создания библиотек - да можно (вообщем-то это все равно получается "библиотека", только лежит в папке скетча а не в "общей").
Что-то всёравно не получается
Ладно покопаю разберусь
Не получается наследование
Поправьте кто может
//======================================
#ifndef ClassLCD_h
#define ClassLCD_h
class ClassLCD : public LiquidCrystal
{
public:
ClassLCD();
};
#endif
//======================================
ClassLCD::ClassLCD():LiquidCrystal(4, 5, 0, 1, 2, 3)
{
;
}
//======================================
#include *LiquidCrystal.h*
#include "ClassLCD.h"
ClassLCD dsp();
void setup()
{
dsp.begin(16,2);
}
void loop()
{
delay(10);
}
//======================================
При чем здесь Arduino IDE?
При чем здесь Arduino IDE?
А не причем. Куда влепился вопрос, туда и влепился. И пофиг что тема про другое, и пофиг что есть форум "Программирование", и напрягатся что-бы прочитать как код вставлять - в лом (хотя уже один раз говорили об этом), да даже банально толком объяснить "что не получается" - и то не потрудился.
Ну может и найдется кто-то из "кто может", кому не влом с этим расковыриватся. Лично мне - тоже влом. Даже всматриваться в такой код.
Для тех кому влом
Вот так можно наследовать общеизвестный класс
===================================
#ifndef classDSP_H
#define classDSP_H
class classDSP: public LiquidCrystal
{
public:
classDSP(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
};
#endif
===================================
classDSP::classDSP(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3): LiquidCrystal(rs, enable, d0, d1, d2, d3)
{
}
===================================
#include LiquidCrystal.h
#include "classDSP.h"
classDSP dsp(2,3, 4,5,6,7);
void setup()
{
;
}
void loop()
{
;
}
Люблю тупить результативно 8=)
2Adno:
Может, все-таки, прочитаете http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
И тему отдельную заведете? И в форуме "Программирование"? Потому как вроде полезное дело сделали, но...
1. Конфетку обмазали какашками (оформление кода)
2. Пользы от ваших усилий - ноль.. Со словами "пусть лежит вдруг кто проголадается" спрятали конфетку не в холодильник, а в бензобак рейсового автобуса. Никто в этой теме/в этом форуме искать ответ на этот вопрос (как наследоватся) - не будет. Тут дай бог что-бы с нормальным названием темы/форумом поиском пользовались, а уж в таких закаблучках....
Парни, в чем может быть беда ? Был рабочий скетч с десятком вкладок, в которые для удобства были расписаны функции. Все прекрасно работало. В какой то момент компилятор заругался, мол вызываемая функция не определена. хотя она явно определена в другой вкладке. такое ошушение что компилятор толи перестал видеть вкладки, толи изменил порядок их компиляции. В общем ХЕЛП! гуглем ничего внятного не нашел.
Если эту функцию переписать в главный файл, то компилится, если перенести обратно на вкладку, то ошибка.
Второй вопрос: в начале главного файла скопилась куча констант и переменных, которые для удобства хотелось бы вынести в отдельную вкладку. На вкладка вынес. при компиляции они не виделись, вернул как было и возникла проблема 1. такое ощущение что у IDE съехал чердак. как поставить на место ?
так ты не во вкладки пхай, а используй штатные средства Си, пхай все константы и определения в .h, а функции в .cpp файлы, да подключай их через #include. Не забывай про extern в описаниях (.h файле)
Мне кажется не всё складно с этим в Ардуино IDE. Как то мужичку сделал проект с несколькими .ino файлами. Да, с виду удобно. Не нужно никаких хедеров, никаких прототипов, всё за тебя делает IDE. Однако, бац! У заказчика не компилирует ни в какую! Только с такой же версией как у меня. Тогда плюнул, и сделал как положено. И никаких проблем.)
Проблема решилась сама собой. видимо где то залетела лишняя { . соответственно все функции, которые попали в ее действие компилятор не видел как положено. Но история мутная.
Мне кажется не всё складно с этим в Ардуино IDE. Как то мужичку сделал проект с несколькими .ino файлами.
а разве где-нибудь сказано. что можно использовать несколько .ino в одном проекте? всегда делаю только .h и .cpp, никаких .ino. подключаю хидеры через инклюд и ни разу никаких проблем.
Никакой "мутности" в IDE не замечал
Можешь на примере показать ?
Вот у меня одна из вкладок .ino
Как и какими средствами сформировать h и cpp средствами ардуино
Как и какими средствами сформировать h и cpp средствами ардуино
руками :)
не знаю. как еще ответить на этот вопрос
При разделении программы на отдельные модули следует соблюдать принципы разделения областей видимсоти переменных. В частности, в программе не должно быть глобальных переменных и обьектов, которые напрямую используются в других файлах. В твоем коде, например, везде используется обьект LCD. явно определенный где-то в другом модуле. Так это не скомпилируется. LCD надо либо описать как extern. либо передавать как параметр.
Но вообще я обычно группирую функции по используемым обьектам, например все функции работы с экраном кладу в один модуль и обьект экрана описываю и использую только там, и из главного .ino вызываю только сами функции
а разве где-нибудь сказано. что можно использовать несколько .ino в одном проекте? всегда делаю только .h и .cpp, никаких .ino. подключаю хидеры через инклюд и ни разу никаких проблем.
Никакой "мутности" в IDE не замечал
)) Во, блин. Уже и сам не помню откуда это почерпнул. Вот что нашел: https://arduino.github.io/arduino-cli/sketch-build-process/ - второй пункт в Pre-processing.
Что то внешние ссылки форум не всегда отрабатывает нормально. Лучше скопировать и вставить в браузер.
Кстати, совсем недавно опять попробовал подобную "технологию". Нет проблем. Может уже чего подправили.)
первый пункт.))
Грубо говоря, это удобно, когда нужно основной скетч разбить на части. Но беда в том что эти части (файлы ino) стыкуются в алфавитном порядке к основному. А часто бывает что в основном файле используются определения из файла Z... Или же нужно выносить определения в глобальный хедер (или в основной ino), что тоже не очень... Считаю, что всё нужно делать по классике - .h .cpp. А потом и меньше возни с переносом на другую платформу, случай чего.
Забыл ещё один момент. С несколькими ино файлами нельзя иметь переменные с одинаковыми именами, хоть и находящимися в разных файлах. Тогда как в срр ты просто делаешь её локальной внутри модуля и она будет видима только в пределах файла.
Забыл ещё один момент. С несколькими ино файлами нельзя иметь переменные с одинаковыми именами, хоть и находящимися в разных файлах. Тогда как в срр ты просто делаешь её локальной внутри модуля и она будет видима только в пределах файла.
Как итог - похоже не стоит связываться с несколькими .ino, лучше работать в рамках стандарта С
мы тут сами с собой говорим, похоже, Казанова что-то задал вопрос и свалил :)
Может разобрался уже...) Ну а вообще я смотрю некоторые кроме IDE ничем не пользуются - ни редакторами, ни файловыми менеджерами. Хотя даже в ней можно и создать файл, и сохранить с нужным именем и в нужном месте.
Почему же, спокойно можно. Если одна переменная объявлена внутри функций - компилится нормально, не зависимо где эти функции определены, хоть и в разных .ино файлах.
Lcd в моем проекте это библиотека нокиа 5110, она подключена в основном файле в начале.
Имейте в виду. я вообще не знаю принципов посторения языка С, в общем то в этом не было необходимости. раньше мега проекты писал на ассемблере, по 32к ручками. Потом ардуиной стал баловаться для себя. Если у меня 9 вкладок и в каждой по паре десятков функций и переменных, это потом ручками перетаскивать в .h надо, как я понял ? если что то поменял или добавил, то .h опять редактировать ?
Нет, я говорил о глобальных переменных. Читайте область видимости и время жизни переменных.
В хедере кода нет. Только константы, макро и прототипы функций используемых в С-файле.
Как и какими средствами сформировать h и cpp средствами ардуино
cd каталог
type nul>file.h
Или в FARе Shift+F4 имя файла.h Enter, писать чё надо (заранее находясь в каталоге).
В TotalCmd не знаю но скорее всего так же.
я вообще не знаю принципов посторения языка С, в общем то в этом не было необходимости. раньше мега проекты писал на ассемблере, по 32к ручками.
Ну а что вам остается, дитям прогресса и копипаста :)
32к размер исходника или бинарника?
Ну а что вам остается, дитям прогресса и копипаста :)
"Не если вы такие умные, чё ж вы строем не ходите?"
Ну HEXа ессно. Я в отличии от некоторых умного не строю из себя , интересуюсь что не понятно. На потеху "аксакалам", самоутверждающимся на незнании новичков :)
Если у меня 9 вкладок и в каждой по паре десятков функций и переменных, это потом ручками перетаскивать в .h надо, как я понял ? если что то поменял или добавил, то .h опять редактировать ?
Зачем "это потом ручками перетаскивать в .h"? Сразу пишите "это" в .h файле и ничего перетаскивать не нужно будет
меняйте и добавляйте сразу в .h файл
Понимаете, вот как сейчас вы добавляете вкладку c новым .ino файлом - вот так делать не надо. Вместо этого добавляйте вкладку с .h файлом и сразу все свои процелуры пишите в нем
Так вроде никто умного и не строит. Просто вопросы/ответы некоторых веселят. Размер хекса например.)
Ну если не писали такие проекты, я то причем :) листинга 584к размер файла
А умных тут много кто строит. В соседней теме вопрос задал , нужно было по быстрому эмулятор DS18b20 на ардуинке сделать, чтобы автоматику проверить. так там пафосных соплей столько развели, что до сих пор капает:) Отдельные индивиды предлагали за немалые деньги купить скопипастенный проект, рассуждая о превратностях своего унылого бытия, мерясь пипирками количества публикаций на гитхабе :) Благо нормальные люди есть, тыкнули носом где почитать и что копипастнуть
Вот это и смешно, что тебя, такого невъ.бенно опытного разрабоччика предали анафеме даже в гугле. Пока носом не ткнёшь, сам не найдёшь нихрена. Диссонанс, аднака.
Вот это и смешно, что тебя, такого невъ.бенно опытного разрабоччика предали анафеме даже в гугле. Пока носом не ткнёшь, сам не найдёшь нихрена. Диссонанс, аднака.
да нет, тут как в присказке - два дождя в маю и агрономия по...
PS(если есть форум, зачем нам гугл) )))
Ну и ? Тебя хоть и тыкали носом, нев**ным разработчиком ты так и не стал:) Гугаль один хрен сюда приводит, даже тема с такой же проблематикой существует, спросил у автора темы, так налетели левые какие то. Если тебе гугаль живое общение заменяет, я то при чем ? кода на 20 строчек, а п**дежа было на 2 странице. Узбагойтесь уже, мериться с вами не собираюсь.
Мне вот абсолютно не в падлу помочь, если могу подсказать решение, или направление где искать. А уж бабки требовать за решение задачи, на форуме посвященному ХОББИ эт просто зашквар.
Мне вот абсолютно не в падлу помочь, если могу подсказать решение, или направление где искать. А уж бабки требовать за решение задачи, на форуме посвященному ХОББИ эт просто зашквар.
А, я понял, у тя в "хате" гугола нету.
Пусть так, отбейся только :)
Ну из этой темы почерпнули что то?
Мой совет. Пишите одним ино, а когда заработает, разбейте на несколько ино.
Другие варианты для вас ещё рано.
Мне вот абсолютно не в падлу помочь, если могу подсказать решение, или направление где искать.
ну, обычно больше всего о желании "делиться" кричат те, кому делиться особо нечем :)
Это как с колхозами - больше всего о том, чтобы "все сообща" - орали те, у кого своего отродясь не было...
Почерпнул то что в одном ино все писать точно не стоит :) Еще почерпнул что есть h и cpp , надо поизучать, не факт что будет удобнее. Разбивка на ИНО файлы после написания проекта - гарантированный путь к проблеме :)) Если проект имеет хоть какой то шанс на последующее расширение функционала - сразу создать вкладку Adefines куда писать все переменные. она будет компилится первой. У меня сейчас 9 вкладок в проекте, если это все свалить в один файл - рехнешься. Ошибка , которую описал я на 90% - то что я при разбивке на вкладки куда то потерял одну } , в итоге все переменные попали в локальную процедуру, и соответственно не виделись из глобала. Поскольку проект был почти дописан, а переустановка ЙДЕ не давала результатов - запаниковал:) Почерпнул еще то, что за советом или просьбой о помощи, сюда, конкретно на этот форум обращаться нужно в последнюю очередь, разве что когонить потролить или зарядиться негативом:) кроме "кури форум", "хаха ламер"," почему я забесплатно должен тратит свое дорогое но никчемное время" врядли что то посоветуют. Найдены альтернативные площадки, где люди занимаются этим хобби и не считают помощь чем то "колхозным". Как то так.