Arduino - общие вопросы
- Maxekb77
- Мастер
- Сообщения: 1658
- Зарегистрирован: 05 окт 2013, 00:04
- Репутация: 285
- Настоящее имя: Максим
- Откуда: Екатеринбург
- Контактная информация:
Re: Arduino - общие вопросы
Locko6, да никаой чип тот же 328p.
AVK74, ну по сорости написания г-кода она рекордсмен, что в общем то удобно
AVK74, ну по сорости написания г-кода она рекордсмен, что в общем то удобно
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino - общие вопросы
А что она чего то не умеет?AVK74 писал(а):Не используйте ардуину как программную платформу
-
- Кандидат
- Сообщения: 53
- Зарегистрирован: 16 апр 2013, 01:49
- Репутация: 7
- Контактная информация:
Re: Arduino - общие вопросы
Проясните пожалуйста для новичка, что такое программная платформа и что такое аппаратная? Пытался прояснить в яндексе, гугле, википедии этот вопрос но так и не понял точно в чём разница.AVK74 писал(а):Просто совет. Не используйте ардуину как программную платформу (как аппаратная - это отличный выбор) Это же игрушка для подростков по сути.
Подскажите, через Arduino Mega каким количеством ШД можно управлять? Пока я точно выяснил, что минимум три, больше пока не встречал.
-
- Мастер
- Сообщения: 202
- Зарегистрирован: 22 ноя 2015, 03:17
- Репутация: 22
- Настоящее имя: Александр
- Контактная информация:
Re: Arduino - общие вопросы
Это ведь не контроллер ШД, штука универсальная, что за прошивку или скетч вы в него собрались заливать ? Вот там и смотрите сколько ШД.
-
- Почётный участник
- Сообщения: 1854
- Зарегистрирован: 02 июл 2013, 09:03
- Репутация: 335
- Откуда: Уфа
- Контактная информация:
Re: Arduino - общие вопросы
Аппаратная, это контроллер на плате - atmega в данном случае.Locko6 писал(а):Проясните пожалуйста для новичка, что такое программная платформа и что такое аппаратная? Пытался прояснить в яндексе, гугле, википедии этот вопрос но так и не понял точно в чём разница.
Подскажите, через Arduino Mega каким количеством ШД можно управлять? Пока я точно выяснил, что минимум три, больше пока не встречал.
Программная, это Arduino IDE.
Вопрос о количестве двигателей некорректен, можно управлять таким количеством двигателей на сколько хватит портов контроллера. Другое дело с какой скоростью и отзывчивостью.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino - общие вопросы
Если команды типа pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); заменить на DDRB = B00000111; PORTB=B00000011 то очень хороший результат и по скорости работы. В Arduino IDE это можно.Maxekb77 писал(а):ну по сорости написания г-кода она рекордсмен
- Maxekb77
- Мастер
- Сообщения: 1658
- Зарегистрирован: 05 окт 2013, 00:04
- Репутация: 285
- Настоящее имя: Максим
- Откуда: Екатеринбург
- Контактная информация:
Re: Arduino - общие вопросы
grakun, г-код имелось в виду написание кода людьми которые далеки от программирования
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino - общие вопросы
Понятно.Maxekb77 писал(а):имелось в виду написание кода людьми которые далеки от программирования
-
- Мастер
- Сообщения: 202
- Зарегистрирован: 22 ноя 2015, 03:17
- Репутация: 22
- Настоящее имя: Александр
- Контактная информация:
Re: Arduino - общие вопросы
Можно библиотеку еще взять, где это в более удобочитаемом виде. Типа такой http://istarik.ru/blog/arduino/1.html. Штатные digitalWrite действительно тормозные, но это конечно смотря чем управлять. Еще с прерываниями мудрить надо, в остальном можно накодить много много г-кода и даже более менее работать будетgrakun писал(а): Если команды типа pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); заменить на DDRB = B00000111; PORTB=B00000011 то очень хороший результат и по скорости работы. В Arduino IDE это можно.

- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino - общие вопросы
«CyberLib», работает быстро, пробовал в ней работать. Но все же медленней чем прямая команда.Morroc писал(а):Можно библиотеку еще взять
С прерываниями работал мало, но проблем не было, даже Attiny13 все заработало. Код тоже можно сделать небольшого объема. Пример кода на Attiny13 (готовый инфракрасный пульт). Сравните с кодом на pic12 (прикреплен внизу. )
#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);}
-
- Почётный участник
- Сообщения: 1854
- Зарегистрирован: 02 июл 2013, 09:03
- Репутация: 335
- Откуда: Уфа
- Контактная информация:
Re: Arduino - общие вопросы
Вот в этом вся суть ардуинщиков.
Давайте найдем библиотеку для этого и для этого и для этого тоже.
Чо там внутре этих библиотек смотреть страшно, ибо писано такими же далекими от электроники и программирования людьми.
И потом на форумах начинаются безумные темы с холиварами.
AVR сам по себе контроллер несложный и очень удобный.
Берем Евстифеева "Микроконтроллеры AVR семейства classic и mega" для вникания в аппаратную часть.
И чонить по Си типа "CodeVision пособие для начинающих" для программной.
И погнали. Без базовых знаний не обойтись. Вернее обойтись можно (ардуинщики доказали) но будет грустно и постоянные непонятки при малейших проблемах.
То есть, надо совершенно четко представлять как работает контроллер, таймера, прерывания, регистры, АЦП, ШИМ и т.д.
Это на самом деле совсем не сложно.
Давайте найдем библиотеку для этого и для этого и для этого тоже.
Чо там внутре этих библиотек смотреть страшно, ибо писано такими же далекими от электроники и программирования людьми.
И потом на форумах начинаются безумные темы с холиварами.
AVR сам по себе контроллер несложный и очень удобный.
Берем Евстифеева "Микроконтроллеры AVR семейства classic и mega" для вникания в аппаратную часть.
И чонить по Си типа "CodeVision пособие для начинающих" для программной.
И погнали. Без базовых знаний не обойтись. Вернее обойтись можно (ардуинщики доказали) но будет грустно и постоянные непонятки при малейших проблемах.
То есть, надо совершенно четко представлять как работает контроллер, таймера, прерывания, регистры, АЦП, ШИМ и т.д.
Это на самом деле совсем не сложно.
-
- Мастер
- Сообщения: 202
- Зарегистрирован: 22 ноя 2015, 03:17
- Репутация: 22
- Настоящее имя: Александр
- Контактная информация:
Re: Arduino - общие вопросы
Да, но ардуинить еще проще, когда нужен конкретно АЦП (допустим нас не устраивает чем то analogRead, хотя в большинстве случаев то он устраивает) - смотрим даташит. С библиотеками похожая ситуация, не работает одна - берем другую, третью - обычно этого достаточно, а уж если хочется странного - лезем внутрь. Как лего в общем - кубики стандартные, но их немало, соединяются легко, доработке напильником поддаются
Ну и конечно нужно иметь представление о программировании вообще и отладке в частности, вот как начинающие ардуинщики с этим справляются я не представляю - то ли методом тыка то ли просто не пишут ничего сложного.

- Maxekb77
- Мастер
- Сообщения: 1658
- Зарегистрирован: 05 окт 2013, 00:04
- Репутация: 285
- Настоящее имя: Максим
- Откуда: Екатеринбург
- Контактная информация:
Re: Arduino - общие вопросы
на мой взгляд, 80% потребностей, спроси датчик - мигни диодом - вкл\выкл двигателем. большинству наверно достаточно.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino - общие вопросы
Я лишь высказал свое мнение, Arduino позволяет сделать рабочие программы. Вы написали что это "игрушка для подростков по сути". Естественно получится тема с холиваром, без вариантов. Очень мнения разные, кто хочет пускай спорит. Мне не хочется.AVK74 писал(а):безумные темы с холиварами
- selenur
- Почётный участник
- Сообщения: 4605
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1622
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Arduino - общие вопросы
Полностью согласен!AVK74 писал(а):Вот в этом вся суть ардуинщиков.
Давайте найдем библиотеку для этого и для этого и для этого тоже.
Чо там внутре этих библиотек смотреть страшно, ибо писано такими же далекими от электроники и программирования людьми.
И потом на форумах начинаются безумные темы с холиварами.
AVR сам по себе контроллер несложный и очень удобный.
Берем Евстифеева "Микроконтроллеры AVR семейства classic и mega" для вникания в аппаратную часть.
И чонить по Си типа "CodeVision пособие для начинающих" для программной.
И погнали. Без базовых знаний не обойтись. Вернее обойтись можно (ардуинщики доказали) но будет грустно и постоянные непонятки при малейших проблемах.
То есть, надо совершенно четко представлять как работает контроллер, таймера, прерывания, регистры, АЦП, ШИМ и т.д.
Это на самом деле совсем не сложно.
Но как начальный путь в электронику, для большинства, (и для меня тоже) очень простой, вначале делаешь как попало, главное что-бы работало, более менее стабильно. А дальше начинаешь понемногу втягиваться, и углубляться в дебри микроконтроллера.
Сейчас я свободно пишу и на Си и на асме под AVR, и STM, но если-бы не ардуина, которая была тем самым мостиком в электронику, я навряд ли смог добиться текущих результатов.
Сразу пытаться программировать не имея базиса, под микроконтроллер, не каждому хватит усидчивости, простой пример: на ардуине получить значение АЦП (аналогового сигнала) дело всего одной строки, если попытаться получить значение своими силами, без использования библиотек, наступаешь на разные грабли, одна из которых состоит в том, что после настройки параметров работы АЦП, необходимо получить минимум 3-4 раза значение АЦП, что-бы иметь достоверный результат. Конечно в документации всё это написано, но размер этой документации далеко не маленький...

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