Телескопы покупают здесь


A A A A Автор Тема: Arduino для начинающих: вопросы и ответы  (Прочитано 12898 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
По многочисленным просьбам создаю тему.
Давайте обсуждать, делиться опытом.
А ещё, если будет актуально, первое сообщение можно будет прилепить и завести здесь FAQ.


Уроки для начинающих. Очень подробно и доходчиво.

#0 Введение в курс. Содержание серии "Основы Arduino для начинающих" - YouTube
« Последнее редактирование: 12 Мар 2017 [15:49:35] от Deimos »
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Iovch

  • *****
  • Сообщений: 1 287
  • Благодарностей: 124
    • Сообщения от Iovch
Re: Arduino для начинающих: вопросы и ответы
« Ответ #1 : 11 Авг 2016 [19:55:02] »
Вот и вопрос назрел. Т.к. очень ограничены ресурсы ардуино, приходится экономить на всем. Какой вариант функции "отъест" меньше ресурсов: Function1, написанная в обычном стиле С, или Function2, как начинающие программеры пишут, если действия над элементами структуры абсолютно одинаковы:

struct sJDate {long N; long MN; double H; double MH;} sJD;

******************

sJDate Function1(void)
 {
  sJDate RetValue;
  ...
  return RetValue;
 }

sJD=Function1(void);

****************

void Function2(void)
 {
   sJD.N=...;
   sJD.MN=...;
   sJD.H=...;
   sJD.MH=...;
 }
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #2 : 11 Авг 2016 [22:35:13] »
Тяжело такое тестировать... Обмануть компилятор с его оптимизацией не получилось толком. Завтра ещё поиграюсь.
Первый вариант "канончнее"
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Iovch

  • *****
  • Сообщений: 1 287
  • Благодарностей: 124
    • Сообщения от Iovch
Re: Arduino для начинающих: вопросы и ответы
« Ответ #3 : 19 Авг 2016 [21:31:26] »
А что, на самом деле такая "крутая" оптимизация производится компилятором кода? Часть функций в своем проекте перевел в обработку глобальных переменных, а никакого заметного сокращения исполняемого кода не заметил!
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #4 : 19 Авг 2016 [21:50:43] »
Да, оптимизация действительно хороша. Вообще, "Преждевременная оптимизация — корень всех зол." (с) Дональд Кнут. Гораздо правильнее писать прозрачный и хорошо читаемый код до тех пор, пока не будет доказано, что ручная оптимизация необходима.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн alxndrch

  • **
  • Сообщений: 55
  • Благодарностей: 0
  • iDiode!
    • Сообщения от alxndrch
Re: Arduino для начинающих: вопросы и ответы
« Ответ #5 : 27 Авг 2016 [05:29:50] »
Arduino (те которые с 8-разрядными МК Atmel AVR) больше использую просто как плату для отладки, и никогда ее родной средой и языком для программирования не пользовался. Оно правда так легко и удобно, что asm и C не нужен?
По вопросу выше, скомпилируйте один вариант кода, и второй вариант кода, а потом посмотрите в отладчике что компилятор творит.
Телескоп: SW120/600 AZ-3
Бинокль: Bresser NG 10x50

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #6 : 27 Авг 2016 [08:38:56] »
Чтобы посмотреть что натворил компилятор, отладчик строго говоря не нужен, если ассемблер читаете и понимаете :)
nm -nC file.elf
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн alxndrch

  • **
  • Сообщений: 55
  • Благодарностей: 0
  • iDiode!
    • Сообщения от alxndrch
Re: Arduino для начинающих: вопросы и ответы
« Ответ #7 : 27 Авг 2016 [15:25:48] »
Чтобы посмотреть что натворил компилятор, отладчик строго говоря не нужен, если ассемблер читаете и понимаете
nm -nC file.elf
Ну да, не совсем точно сформулировал мысль. Я то ассемблер читаю, понимаю и пишу. С него начинал, да и продолжаю использовать для простых задач.
Телескоп: SW120/600 AZ-3
Бинокль: Bresser NG 10x50

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #8 : 27 Авг 2016 [18:36:03] »
Да, если есть задача писать максимально эффективный код, надо, во-первых, понимать, что компилятор сделает с исходником, а во-вторых, уметь сравнивать полученный результат с ожидаемым

У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн alxndrch

  • **
  • Сообщений: 55
  • Благодарностей: 0
  • iDiode!
    • Сообщения от alxndrch
Re: Arduino для начинающих: вопросы и ответы
« Ответ #9 : 02 Сен 2016 [11:02:19] »
А вот вопрос, как использовать в AVR Studio, такую вещь как Linker->Memory Setting.
Требуется чтобы МК под определенные данные в EEPROM выделял строго определенные ячейки (накосячил я так немного с кодом, что автоматические выделение с помощью EEMEM не проходит).
Первая мысль была в Memory Setting разделе EEPROM задать два новых сегмента, допустим:
.eeprom_one 0x00
.eeprom_two 0x10
А затем определить их как:
#define EEPROM_ONE    __attribute__((section (".eeprom_one")))
#define EEPROM_TWO   __attribute__((section (".eeprom_two")))
Указатели на эти ячейки памяти определить как:
uint8_t pointer_one EEPROM_ONE;
uint8_t pointer_two EEPROM_TWO;

Ну и что-то не работает ничего, возможно новые секции нужно как-то отдельно выделять? Я так-то больше по ассемблеру, и то что иногда происходит в программах написанных на языках высокого уровня меня немного пугает.
Костыль вставил (вручную сместил адресацию куда нужно, но это конечно не выход, потом по человечески конечно сделаю, чтобы вообще этот вопрос не волновал).
Но вопрос выше все еще в силе. То есть если способы выделить в EEPROM конкретные сегменты используя Linker->Memory Setting.
« Последнее редактирование: 02 Сен 2016 [11:31:06] от alxndrch »
Телескоп: SW120/600 AZ-3
Бинокль: Bresser NG 10x50

Оффлайн NIF

  • ****
  • Сообщений: 364
  • Благодарностей: 13
  • "Сгорая сам, свети другим"
    • Сообщения от NIF
    • Ярославское общество любителей астрономии
Re: Arduino для начинающих: вопросы и ответы
« Ответ #10 : 07 Окт 2016 [17:00:18] »
Являюсь профаном в вопросах работы с Arduino. Но методика работы с ним в целом понятна, вполне можно освоить.. Когда то давно писал управляющие программы в машинных кодах для таких "монстров" как Д3-28, 15ВСМ-5, если кто их помнит  :o.
На форуме встретил темы в которых затрагиваются вопросы построения фокусеров на базе Arduino. Все они управляют электрофокусером (на базе шагового двигателя) путем нахатия соответствующих кнопок.
Вопрос состоит в том, возможно ли (каким образом) построить модуль, управляеющий автофокусером  из под MaxImDL?
Возможно кто то уже реализовал такое?

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #11 : 09 Окт 2016 [17:00:21] »
Задача состоит из двух позадач:
1) собственно управление периферийным устройством в виде контроллера шагового двигателя - делается путём подачи управляющих импульсов на пинах ввода-вывода по алгоритму, определённому контроллером ШД
2) обработка протокола обмена по коммуникационному интерфейсу, в данном случае последовательный порт. Аналогично, надо разбирать входящие строковые или бинарные команды и соответствующим образом их отрабатывать.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн NIF

  • ****
  • Сообщений: 364
  • Благодарностей: 13
  • "Сгорая сам, свети другим"
    • Сообщения от NIF
    • Ярославское общество любителей астрономии
Re: Arduino для начинающих: вопросы и ответы
« Ответ #12 : 09 Окт 2016 [19:38:10] »
С п1) в основном понятно - набор вполне стандартных процедур.
С п2) для меня гораздо сложней. Насколько я понял, необходимо написать некий драйвер взаимодействия Ардуино с Максимом. В Максиме есть возможность подключать фокусеры с помощью ASCOM драйверов. Скорей всего его и необходимо написать, а как? понятия не имею.

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #13 : 10 Окт 2016 [17:11:03] »
Да, надо сделать так, чтобы ардуина понимала коммуникационный протокол и отрабатывала по нему всё что надо.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн NIF

  • ****
  • Сообщений: 364
  • Благодарностей: 13
  • "Сгорая сам, свети другим"
    • Сообщения от NIF
    • Ярославское общество любителей астрономии
Re: Arduino для начинающих: вопросы и ответы
« Ответ #14 : 10 Окт 2016 [18:55:47] »
Будем изучать матчасть...
Может у кого есть прототипы? Решение, надеюсь,  будет интересным для многих пользователей "кнопочных" фокусеров и Максима.

Оффлайн d_w

  • *****
  • Сообщений: 1 948
  • Благодарностей: 131
    • Сообщения от d_w
Re: Arduino для начинающих: вопросы и ответы
« Ответ #15 : 10 Окт 2016 [19:37:05] »
Может у кого есть прототипы?

Если MS VS вам что-то говорит, то при установке ASCOM Platform Developer Components http://ascom-standards.org/Downloads/PlatDevComponents.htm в директории
%PROGRAMFILES(x86)%/ASCOM/"Platform 6 Developer Components"/Templates
будут "болванки" для написания своих компонентов на VB или решетках.

Ну и тут есть: http://ascom-standards.org/Downloads/DevSamples.htm
« Последнее редактирование: 10 Окт 2016 [19:42:38] от d_w »

Оффлайн NIF

  • ****
  • Сообщений: 364
  • Благодарностей: 13
  • "Сгорая сам, свети другим"
    • Сообщения от NIF
    • Ярославское общество любителей астрономии
Re: Arduino для начинающих: вопросы и ответы
« Ответ #16 : 11 Окт 2016 [18:53:56] »
Благодарю за ссылки.
Приступил к изучению

Оффлайн Vitaliy

  • *****
  • Сообщений: 42 179
  • Благодарностей: 1331
    • Сообщения от Vitaliy
    • Два стрельца
Re: Arduino для начинающих: вопросы и ответы
« Ответ #17 : 09 Мар 2017 [23:59:35] »
Что-то я запутался в этих модулях ардуино.
Нужен модуль WI-FI, с программированием через встроенный usb через среду IDE, небольшой размер и размером меньше стандартного ардуино UNO.
Посоветуйте какой, что бы не было танцев с бубном и строгим 3.3 в. Подключил к usb и работай, как с обычным ардуино.
Добро пожаловать на сайт Два стрельца http://www.shvedun.ru/
Телескоп Добсона 8" (203мм) по кличке "Карандаш", Advanced C9¼-SGT XLT, Celestron NexStar 5 SE
Видео Мой канал на Ютубе - http://www.youtube.com/user/VitaliyShvedun
Мои 3D модели https://www.thingiverse.com/vitaliysh/designs
Дзен   https://dzen.ru/vitaliysh
Rutube https://rutube.ru/channel/308317

Оффлайн xdАвтор темы

  • *****
  • Сообщений: 17 977
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Re: Arduino для начинающих: вопросы и ответы
« Ответ #18 : 10 Мар 2017 [08:23:17] »
Вариант 1: WiFi платой расширения - https://www.arduino.cc/en/Guide/ArduinoWiFiShield, http://amperka.ru/product/arduino-wifi-shield . Плата управляется через SPI и 3 порта GPIO.
Вариант 2: Отдельный WiFi модуль http://amperka.ru/product/esp8266-wifi-module , подключается через SPI. Что-то мне подсказывает, что библиотеки должны быть совместимы с первым вариантом, но не могу сказать уверенно.
Вариант 3: Платы со встроенной поддержкой WiFi: https://www.arduino.cc/en/Main/ArduinoBoardYun, https://www.arduino.cc/en/Main/ArduinoBoardTian, https://www.arduino.cc/en/Main/ArduinoBoardIndustrial101, но это не то чтобы совсем Ардуино...
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн Vitaliy

  • *****
  • Сообщений: 42 179
  • Благодарностей: 1331
    • Сообщения от Vitaliy
    • Два стрельца
Re: Arduino для начинающих: вопросы и ответы
« Ответ #19 : 10 Мар 2017 [10:30:51] »
Заказал вариант 2 и какой-то клон только с большим количеством пинов.

Это нужно для тривиального  дела, метеостанция с выносным и домашним блоком датчиков и просмотром всего этого через инет.
Добро пожаловать на сайт Два стрельца http://www.shvedun.ru/
Телескоп Добсона 8" (203мм) по кличке "Карандаш", Advanced C9¼-SGT XLT, Celestron NexStar 5 SE
Видео Мой канал на Ютубе - http://www.youtube.com/user/VitaliyShvedun
Мои 3D модели https://www.thingiverse.com/vitaliysh/designs
Дзен   https://dzen.ru/vitaliysh
Rutube https://rutube.ru/channel/308317