Arduino - общие вопросы

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Maxekb77 »

Locko6, да никаой чип тот же 328p.

AVK74, ну по сорости написания г-кода она рекордсмен, что в общем то удобно
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino - общие вопросы

Сообщение grakun »

AVK74 писал(а):Не используйте ардуину как программную платформу
А что она чего то не умеет?
Locko6
Кандидат
Сообщения: 53
Зарегистрирован: 16 апр 2013, 01:49
Репутация: 7
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Locko6 »

AVK74 писал(а):Просто совет. Не используйте ардуину как программную платформу (как аппаратная - это отличный выбор) Это же игрушка для подростков по сути.
Проясните пожалуйста для новичка, что такое программная платформа и что такое аппаратная? Пытался прояснить в яндексе, гугле, википедии этот вопрос но так и не понял точно в чём разница.

Подскажите, через Arduino Mega каким количеством ШД можно управлять? Пока я точно выяснил, что минимум три, больше пока не встречал.
Morroc
Мастер
Сообщения: 202
Зарегистрирован: 22 ноя 2015, 03:17
Репутация: 22
Настоящее имя: Александр
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Morroc »

Это ведь не контроллер ШД, штука универсальная, что за прошивку или скетч вы в него собрались заливать ? Вот там и смотрите сколько ШД.
AVK74
Почётный участник
Почётный участник
Сообщения: 1854
Зарегистрирован: 02 июл 2013, 09:03
Репутация: 335
Откуда: Уфа
Контактная информация:

Re: Arduino - общие вопросы

Сообщение AVK74 »

Locko6 писал(а):Проясните пожалуйста для новичка, что такое программная платформа и что такое аппаратная? Пытался прояснить в яндексе, гугле, википедии этот вопрос но так и не понял точно в чём разница.

Подскажите, через Arduino Mega каким количеством ШД можно управлять? Пока я точно выяснил, что минимум три, больше пока не встречал.
Аппаратная, это контроллер на плате - atmega в данном случае.
Программная, это Arduino IDE.
Вопрос о количестве двигателей некорректен, можно управлять таким количеством двигателей на сколько хватит портов контроллера. Другое дело с какой скоростью и отзывчивостью.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino - общие вопросы

Сообщение grakun »

Maxekb77 писал(а):ну по сорости написания г-кода она рекордсмен
Если команды типа pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); заменить на DDRB = B00000111; PORTB=B00000011 то очень хороший результат и по скорости работы. В Arduino IDE это можно.
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Maxekb77 »

grakun, г-код имелось в виду написание кода людьми которые далеки от программирования
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino - общие вопросы

Сообщение grakun »

Maxekb77 писал(а):имелось в виду написание кода людьми которые далеки от программирования
Понятно.
Morroc
Мастер
Сообщения: 202
Зарегистрирован: 22 ноя 2015, 03:17
Репутация: 22
Настоящее имя: Александр
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Morroc »

grakun писал(а): Если команды типа pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); заменить на DDRB = B00000111; PORTB=B00000011 то очень хороший результат и по скорости работы. В Arduino IDE это можно.
Можно библиотеку еще взять, где это в более удобочитаемом виде. Типа такой http://istarik.ru/blog/arduino/1.html. Штатные digitalWrite действительно тормозные, но это конечно смотря чем управлять. Еще с прерываниями мудрить надо, в остальном можно накодить много много г-кода и даже более менее работать будет :D Есть определенный плюс в этом ардуинстве - евойный "wiring" с IDE используется и для плат с stm32 и для esp8266 со встроенным wifi, с некоторыми переделками можно портировать код туда для увеличения скорости или сетевых возможностей (ну или просто г-код настолько г, что в atmega уже не влазит).
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino - общие вопросы

Сообщение grakun »

Morroc писал(а):Можно библиотеку еще взять
«CyberLib», работает быстро, пробовал в ней работать. Но все же медленней чем прямая команда.
С прерываниями работал мало, но проблем не было, даже Attiny13 все заработало. Код тоже можно сделать небольшого объема. Пример кода на Attiny13 (готовый инфракрасный пульт). Сравните с кодом на pic12 (прикреплен внизу.
ikpult_pic12_prg_rc5.7z
(2.68 КБ) 285 скачиваний
)

#include <avr/io.h>
#include <avr/sleep.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <avr/wdt.h> // здесь организована работа с ватчдогом



ISR (WDT_vect) // что выполнить после прерывания
{
WDTCR =0b01000000;// разрешаем прерывания по ватчдогу. Иначе будет резет.
}
//____________________________________
void p()// подпрограмма разрешение прерывания сторожевым таймером WDTCR
{
wdt_reset();
wdt_enable(WDTO_1S);
WDTCR =0b01000000;
sei();
}
void slip()// подпрограмма сон
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu();
//sleep_disable()
}

//_____________________________________

int main( )
{
DDRB=0B010000;

while(1)
{
if (PINB==0B0001111){p(); }// будет прерывание сна
//после прерывания выполнится проверка клавиш, если клавиша нажата выполнится подпрограмма в это время
// прерывания отключены

if (PINB==0B001110){k1();}
if (PINB==0B001101){k2();}
if (PINB==0B001011){k3();}
if (PINB==0B000111){k4();}
if (PINB==0B001100){k5();}
if (PINB==0B001010){k6();}
if (PINB==0B000110){k7();}
if (PINB==0B001001){k8();}
if (PINB==0B000101){k9();}
slip();// подпрограмма сон
}
return 0;

}
//____________________________________________
void bt1()// генерация 1
{
delayMicroseconds(1000);
for(int n=0; n<=31;n++){gen();}
}
void bt0()// генерация 0
{
for(int n=0; n<=31;n++){gen();}
delayMicroseconds(1000);
}
void gen()//генерация импульсов, время подбирается повторением
{
PORTB=0B010000; PORTB=0B010000; PORTB=0B010000; PORTB=0B010000;
PORTB=0B010000; PORTB=0B010000; PORTB=0B010000; PORTB=0B010000;
PORTB=0B010000;PORTB=0B010000;

PORTB=0B000000;PORTB=0B000000; PORTB=0B000000;PORTB=0B000000;
PORTB=0B000000;PORTB=0B000000; PORTB=0B000000;PORTB=0B000000;
PORTB=0B000000;PORTB=0B000000;
}
void k1(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt0();bt0();bt0();bt0();bt0();bt1(); delay(500);}
void k2(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt0();bt0();bt0();bt0();bt1();bt0(); delay(500);}
void k3(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt0();bt0();bt0();bt1();bt0();bt0(); delay(500);}
void k4(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt0();bt0();bt1();bt0();bt0();bt0(); delay(500);}
void k5(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt0();bt1();bt0();bt0();bt0();bt0(); delay(500);}
void k6(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt1();bt0();bt0();bt0();bt0();bt0(); delay(500);}
void k7(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt1();bt0();bt0();bt0();bt0();bt1(); delay(500);}
void k8(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt1();bt0();bt0();bt0();bt1();bt0(); delay(500);}
void k9(){ bt1();bt1();bt0();bt0();bt0();bt0();bt0();bt1();
bt1();bt0();bt0();bt1();bt0();bt0(); delay(500);}
AVK74
Почётный участник
Почётный участник
Сообщения: 1854
Зарегистрирован: 02 июл 2013, 09:03
Репутация: 335
Откуда: Уфа
Контактная информация:

Re: Arduino - общие вопросы

Сообщение AVK74 »

Вот в этом вся суть ардуинщиков.
Давайте найдем библиотеку для этого и для этого и для этого тоже.
Чо там внутре этих библиотек смотреть страшно, ибо писано такими же далекими от электроники и программирования людьми.
И потом на форумах начинаются безумные темы с холиварами.
AVR сам по себе контроллер несложный и очень удобный.
Берем Евстифеева "Микроконтроллеры AVR семейства classic и mega" для вникания в аппаратную часть.
И чонить по Си типа "CodeVision пособие для начинающих" для программной.
И погнали. Без базовых знаний не обойтись. Вернее обойтись можно (ардуинщики доказали) но будет грустно и постоянные непонятки при малейших проблемах.
То есть, надо совершенно четко представлять как работает контроллер, таймера, прерывания, регистры, АЦП, ШИМ и т.д.
Это на самом деле совсем не сложно.
Morroc
Мастер
Сообщения: 202
Зарегистрирован: 22 ноя 2015, 03:17
Репутация: 22
Настоящее имя: Александр
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Morroc »

Да, но ардуинить еще проще, когда нужен конкретно АЦП (допустим нас не устраивает чем то analogRead, хотя в большинстве случаев то он устраивает) - смотрим даташит. С библиотеками похожая ситуация, не работает одна - берем другую, третью - обычно этого достаточно, а уж если хочется странного - лезем внутрь. Как лего в общем - кубики стандартные, но их немало, соединяются легко, доработке напильником поддаются :) Ну и конечно нужно иметь представление о программировании вообще и отладке в частности, вот как начинающие ардуинщики с этим справляются я не представляю - то ли методом тыка то ли просто не пишут ничего сложного.
Аватара пользователя
Maxekb77
Мастер
Сообщения: 1658
Зарегистрирован: 05 окт 2013, 00:04
Репутация: 285
Настоящее имя: Максим
Откуда: Екатеринбург
Контактная информация:

Re: Arduino - общие вопросы

Сообщение Maxekb77 »

на мой взгляд, 80% потребностей, спроси датчик - мигни диодом - вкл\выкл двигателем. большинству наверно достаточно.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino - общие вопросы

Сообщение grakun »

AVK74 писал(а):безумные темы с холиварами
Я лишь высказал свое мнение, Arduino позволяет сделать рабочие программы. Вы написали что это "игрушка для подростков по сути". Естественно получится тема с холиваром, без вариантов. Очень мнения разные, кто хочет пускай спорит. Мне не хочется.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino - общие вопросы

Сообщение selenur »

AVK74 писал(а):Вот в этом вся суть ардуинщиков.
Давайте найдем библиотеку для этого и для этого и для этого тоже.
Чо там внутре этих библиотек смотреть страшно, ибо писано такими же далекими от электроники и программирования людьми.
И потом на форумах начинаются безумные темы с холиварами.
AVR сам по себе контроллер несложный и очень удобный.
Берем Евстифеева "Микроконтроллеры AVR семейства classic и mega" для вникания в аппаратную часть.
И чонить по Си типа "CodeVision пособие для начинающих" для программной.
И погнали. Без базовых знаний не обойтись. Вернее обойтись можно (ардуинщики доказали) но будет грустно и постоянные непонятки при малейших проблемах.
То есть, надо совершенно четко представлять как работает контроллер, таймера, прерывания, регистры, АЦП, ШИМ и т.д.
Это на самом деле совсем не сложно.
Полностью согласен!
Но как начальный путь в электронику, для большинства, (и для меня тоже) очень простой, вначале делаешь как попало, главное что-бы работало, более менее стабильно. А дальше начинаешь понемногу втягиваться, и углубляться в дебри микроконтроллера.
Сейчас я свободно пишу и на Си и на асме под AVR, и STM, но если-бы не ардуина, которая была тем самым мостиком в электронику, я навряд ли смог добиться текущих результатов.

Сразу пытаться программировать не имея базиса, под микроконтроллер, не каждому хватит усидчивости, простой пример: на ардуине получить значение АЦП (аналогового сигнала) дело всего одной строки, если попытаться получить значение своими силами, без использования библиотек, наступаешь на разные грабли, одна из которых состоит в том, что после настройки параметров работы АЦП, необходимо получить минимум 3-4 раза значение АЦП, что-бы иметь достоверный результат. Конечно в документации всё это написано, но размер этой документации далеко не маленький... :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
AVK74
Почётный участник
Почётный участник
Сообщения: 1854
Зарегистрирован: 02 июл 2013, 09:03
Репутация: 335
Откуда: Уфа
Контактная информация:

Re: Arduino - общие вопросы

Сообщение AVK74 »

selenur писал(а):ардуине получить значение АЦП (аналогового сигнала) дело всего одной строки
Да это в любой среде уже давно так
В том же CV read_adc(ch) и все. Там же элементарно все. Запросили, подождали, получили результат.
Там функция в две строчки.
Ответить

Вернуться в «Электроника»