Почему многие не любят Arduino

    Не задумывались ли вы, почему специалисты/профессионалы в области микроконтроллеров и автоматизации относятся к тем, кто работает с Arduino примерно так, как будто они занимаются чем-то не серьёзным, вроде игры в песочнице?


    Примерно так же к ардуино относится и мой кот Вася.

    Собственно для этого я и сделал видео, где наглядно, при помощи осциллографа, покажу и расскажу, с моей точки зрения, почему так. Постараюсь высветлить явные плюсы и минусы темы Arduino:



    Для начала следует сказать, что Arduino это не так уж плохо как может показаться. Именно благодаря ардуино появилось на свет множество самых разных проектов, которые бы так и не воплотились в жизнь, из-за очень большого количества информации, которую нужно «переварить» чтобы их реализовать. Ни для кого не секрет, что на ардуино делать какие-то устройства значительно проще, да и к тому же быстрее. Именно из-за этого я и начал увлекаться темой микроконтроллеров. И постепенно я начал перерастать всякие digitalWrite(13, HIGH); и переходить на PORTB = 32;, так как желание повышения производительности моих девайсов возрастало.

    Вот так выглядит код обычной «мигалки» на привычном для «ардуинщика» языке:
    Открыть спойлер
    //Привет geektimes
    
    void setup() {
      pinMode(13, OUTPUT);
    }
    
    void loop() {
      digitalWrite(13, HIGH);
      delay(1000);
      digitalWrite(13, LOW);
      delay(1000);
    }
    



    image

    Я думаю многим знаком этот пример, потому что это классическое упражнение «здравствуй мир», которое призвано максимально снизить порог вхождения в тему программирования микроконтроллеров Arduino.

    Давайте посмотрим как бы это выглядело если мы пошли путём не наименьшего сопротивления используя регистры микроконтроллера:

    Открыть спойлер
    //Привет geektimes
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    int main( void )
    {
      DDRB |= (1 << 5);     // вывод PB5 как выход
      while (1) { // вечный цикл, аналог loop() 
        PORTB &= ~(1 << 5); // низкий уровень на выводе PB5
        _delay_ms(1000); // задержка 1000 миллисекунд 
        PORTB |= (1 << 5);  // высокий уровень на выводе PB5
        _delay_ms(1000);
      }
      return 0;
    }
    



    image

    Данные примеры, как видите, потребляют 1030 и 176 байт в Flash, то есть проигрыш в этом плане у ардуиншиков почти в 6 раз. Я специально во втором примере добавил комментарии что какая строчка делает, чтобы упростить понимание происходящего. Да, можно было полностью расписать что да как работает, но моя статья не об этом, так что задаю вам вектор для развития, ардуинщики.

    Сейчас речь пойдёт о использовании ресурсов микроконтроллера, которые не безграничны, и если их бездумно расходовать то они приведут, в лучшем случае, к непонятным ругательствам среды разработки, а в худшем — дней разбирательств почему оно корректно не работает, сотни итераций кода в уме, строчка за строчкой, а причиной этого может оказаться мистика срыв стека микроконтроллера.

    image

    Но давайте вернёмся к нашим баранам среде разработки Arduino IDE.
    Обратите внимание на использование памяти в двух примерах, чтобы вам не метаться по страничке вверх вниз, вот два кода на одном скрине:

    image

    Первое что бросается в глаза — размер кода, если писать на обычном языке Arduino IDE то он выглядит немного компактнее. А если бы я взял какой-то более сложный код, например ReadAnalogVoltage который считывает напряжение на нулевом аналоговом порте пине, преобразует его в вольты и выводит в сериал, если всё это прописать используя регистры микроконтроллера, то получится в несколько раз больше кода. Но в данном случае больше не всегда значит хуже, я бы даже сказал наоборот. Почему так? Об этом я расскажу ниже.

    Так же обратите внимание на то, сколько памяти потребляют оба примера, код на языке ардуино «съедает» значительно больше памяти и давайте сейчас разберёмся почему так.

    В папке среды разработки по пути \hardware\arduino\avr\cores\arduino лежит ядро Arduino, там есть файл wiring_digital.c, где собственно и прописана наша «прожорливая» функция digitalWrite, мы встретим там следующие строчки:

    void digitalWrite(uint8_t pin, uint8_t val)
    void digitalWrite(uint8_t pin, uint8_t val)
    {
    	uint8_t timer = digitalPinToTimer(pin);
    	uint8_t bit = digitalPinToBitMask(pin);
    	uint8_t port = digitalPinToPort(pin);
    	volatile uint8_t *out;
    
    	if (port == NOT_A_PIN) return;
    
    	// If the pin that support PWM output, we need to turn it off
    	// before doing a digital write.
    	if (timer != NOT_ON_TIMER) turnOffPWM(timer);
    
    	out = portOutputRegister(port);
    
    	uint8_t oldSREG = SREG;
    	cli();
    
    	if (val == LOW) {
    		*out &= ~bit;
    	} else {
    		*out |= bit;
    	}
    
    	SREG = oldSREG;
    }
    



    Вы только посмотрите, сколько работы она делает вместо того чтобы просто задать состояние порта(как например вот так PORTB = 32;). А сделано это неспроста, так как у ардуино низкий порог вхождения, как я высказался выше, тут присутствуют разные проверки аля «защита от дурака». Например, если новичок по глупости забыл задать порт пин как выход, чтобы тот не перешёл в состояние Hi-Z(о котором ещё новичок не подозревает, скорее всего) и таким образом отпугнул его при первой же ошибке. Но за это приходиться платить повышенным потреблением ресурсов, как вы сами видите.

    А теперь давайте перейдём к осциллографу, как я и обещал в начале статьи.

    image

    У меня есть две идентичные китайские Arduino Pro Mini которые размещены на одной и той же макетной плате, то есть у них будут одинаковые условия. Давайте прошьём одну из них «мигалку» только без задержек и посмотрим что будет на экране осциллографа:

    image

    Один пример написан на языке ардуино, а второй работает непосредственно с регистрами:

    image

    Синий луч осциллографа(КАН2) — это обычный ардуиновский код, как можно видеть, частота переключений из логической единицы в логический ноль у жёлтого луча(КАН1) больше:

    image

    2.67 против 0.094 МГц, разумеется что емкость порта микроконтроллера не даёт получить чистый меандр как в случае кода ардуино, но если присмотреться, то и там фронты далеко не чистые:

    image

    Получается проигрыш производительности в данном случае — 28 раз. Разумеется что это не значит, что ардуино работает в 28 раз медленнее, но я считаю, что для наглядности, это лучший пример того, за что не любят ардуино.

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

    image

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

    Должен признаться я и сам «ардуиншик», и работаю по большей с Arduino платами, например копия Pro Mini у китайцев стоит не так уж дорого, разумеется что дешевле «голого» микроконтроллера, но как я уже сказал выше, не всегда находиться время и желание заниматься разводкой платы с нуля, лично мне проще интегрировать в проект Arduino плату, особенно недорогие Arduino Pro Mini или немного более продвинутую Arduino Nano.

    Так же, я люблю работать из средой разработки Arduino IDE, не взирая на её ограничения и неудобства, она может запуститься сразу, без каких либо настроек, просто скачал ZIP архив, распаковал куда нужно и всё, можно приступать к работе, да и к тому же занимает не особо много места если сравнивать с более профессиональным софтом, например Atmel Studio. И ещё, тут есть одна полезная фишка — автоформатирование(комбинация клавиш Ctrl+T):

    image

    Разумеется есть такое понятие как «правило хорошего тона», и себя нужно приучивать к этому с самого начала, но если есть такая фитча то почему бы её не пользоваться?

    Ещё из удобств в Arduino IDE появилась возможность в настройках включать нумерацию строк и сворачивание кода:

    image

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

    К тому же Arduino IDE, как вы заметили, умеет «переваривать» не только свой язык но и Си и даже ассемблер.

    P.S. Вообщем суммируя написанное в статье и сказанное в видеоролике выше, Сергей ПоделкинЦ хотел бы всем пожелать развиваться, ардуино это не предел тех возможностей которые даёт мир микроконтроллеров, правильно же говорит народная мудрость «Век живи — век учись».

    Ссылки по теме:

    Всё новое — хорошо забытое старое;

    Свежая версия Arduino IDE лежит тут;

    Arduino на википедии;

    Как экономить память на Arduino?;

    Все мои публикации на geektimes.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    А как относитесь к теме Arduino Вы?

    • 40.4%Ардуино это круто424
    • 42.6%Толерантно447
    • 11.2%Ардуино это не то, где романтика, запах канифоли, целую ночь разводить плату118
    • 5.6%Ардуино это зло.59
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 157

      +15
      Ща начнется…
        0
        Именно. Запасаюсь попкорном :)
          +1
          А меня кот порадовал! Автор, у вас от статики ничего не «дохло» никогда?))
          У меня случай был, когда кот «пробил» планку памяти для компа. С тех пор я опасаюсь этих животных если электроника открытая)
            +2
            Ты моего кота не видел. Это натуральная электростанция, его даже гладить порой больно — шибает так, что искру видно. На каждой итерации поглажки. И ничо, еще ничего не сдохло.
              0
              Так он у тебя же лысый, разве не шерсть генерирует статические разряды?
                +2
                Так у меня их два. Первый шотландец и у него такая прорва шерсти, что можно свитера вязать.
                0
                И ничо, еще ничего не сдохло.
                А ты не пробовал антистатический браслет снимать, хотя бы на время? :)
                  0
                  Я уже и забыл как он выглядит. Раньше в нем чуть ли не спал, когда с радиокрафтовскими модулями работал, они от косого взгляда дохли. А щас расслабился.
                    0
                    Я мосфеты почему-то статикой часто убивал. Сухо в помещении.
                      0
                      Они могут, да. Особенно п канальные. Хотя я с ними тоже не парюсь, живут падлы.
                0
                Пока ещё ничего не пробивало, да и я как-то об этом не думал…
            +15
            Холиварная тема однако опять на гиктаймсе)
            Знаете, это как в медицине говорят, что яд от лекарста отличается только дозой.
            То же самое и тут. У ардуины есть вполне своя определённая ниша. Причём её не только заполняют только новички, но и вполне «образованные» в микроконтроллерах люди по причине, как это было верно в статье замечено, порой банальной лени. Если мне нужно выстроить логику для трёх входящих сигналов и пары исходящих — да мне проще купить китайскую ардуину нано, перепрошить загрузчик на optiboot (чтобы watch dog нормально заработал), ну и нескольок проводкой и пару резисторов с диодами припаять, всех затрат рублей на 400.
            Опасность-то и отторжение, так скажем профессионалов, тут другая — народ который раньше в глаза ни микроконтроллеров, ни ПЛИСов в глаза не видел, посидев на ардуине пару лет, вдруг осознаёт себя нехилым «электронщиком», хотя на самом деле таковым не является, т.к. понятия не имеет как устроен контроллер и не понимает некоторые технические аспекты типа зачем нужно делать подтяжки на пины, ставить фильтрующие конденсаторы и т.д. Т.е. на самом деле он только в начале пути по сути и нужно книжки читать, а не только сидеть на амперке и смотреть на картинки с ШИМ)

            Ардуина — вполне себе вещь. Надо только понимать где её резонно использовать, а где нет. Для макетирования, например, — вполне подойдёт. Я на работе как-то при ремонте «спас» часы старые советские. Которые от 24В управляют разнополярными импульсами напряжения раз в секунду. Набодяжил платку с ардуиной для управления. Воткнул туда понимающий и повышающий dc/dc, кучка мосфетов и проводков. Работает уже полгода)) Хотел сюда небольшой обзор запилить, но никак времени нет, да и ничего особого технически вроде тоже нет)
              +5
              Дада и схемы управления лифтами делать :)
                0
                Нееее, если уж и делать для лифтов, то на марсоходе)
                  +8
                  geektimes.ru/post/258540
                  вы не видели этот эпик?
                    +2
                    Теперь видел! Экранирование порадовало вообще особо! :)
                  +2
                  Меня с лифтом давно переплюнули. Прошлым летом на GeekPicnick в Москве можно было увидеть бортовой компьютер спутника CubeSat,
                  угадайте с чем


                    0
                    Если кубсат сдохнет, то никто не пострадает кроме эго владельца. Так что нет, не переплюнули :)
                    0
                    image

                    Устройство купленное в США за $600. Качество изготовления на уровне.
                    0
                    Согласен с Вами, времени не хватает. Я эту статью и видео подготавливал ещё с рождества, а закончил только сегодня.
                      +1
                      О, так это довольно быстро. У меня на статью минимум месяц уходит))
                      0
                      image
                      Аналогично. Восстановил старые часы. Удивительно хорошо сохранились латунные механизмы которым больше 60 лет!
                        0
                        Они самые!
                      +8
                      В целом, ардуина для электронщиков (эмбеддеров, радиолюбителей, you name it) вредна примерно так же как популярные лекции по астрофизике для научного сообщества. Любители мигать светодиодами конечно раздражают, но из 1000 школьников собравших по готовым исходникам метеостанцию, будет 10 которые потом захотят подробно разобраться в том что они сделали и изучать вопрос глубже. Без дуины их было бы несколько меньше.

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

                      Единственный минус ардуины я вижу в том, что на ней и окружающей ее экосистеме пытаются зарабатывать, преподнося это в виде (упрощенно) «не нужно разбираться в том как оно устроено, нужно просто соединить модули проводками и подключить нужные либы» и продавая в тридорого простейшие модули.
                        +4
                        тем самым они расширяют рынок людьми из других сфер — учеными, artists (ни один перевод не передает все оттенки), школьниками, «чистопородными программистами» (кто не общался до этого с железом).

                        Плюс ардуины по сравнению с подобными конструкторами — всегда можно перейти на уровень ниже, любой модуль/либу — сделать самому и т.д. В других модульных конструкторах «кубик» не всегда получится «разломать» и узнать, как он работает.
                          0
                          перейти на уровень ниже можно всегда, и это лежит на совести тех кто создает обучающий материал. увы, в случае ардуины я редко видел хотя бы намеки на попытки углубиться в принципы работы библиотечных функций. То есть хочется видеть что-то типа «а это analogRead(); внутри она работает вот так — и дальше много текста для интересующихся». Но как показывает практика, мир устроен не так.

                          Хотя согласен, ардуина это меньшее из зол, если сравнить с аналогами.
                            +2
                            на оф. сайте — увы, на сторонних — все расписано. Кому действительно интересно, тот найдет.
                            Жаль, что они закрыли вики на главном сайте, можно было бы улучшать тексты…

                            А изначально я имел в виду аппаратные решения. Мы присоединяем не абстрактный «кубик» с Ethernet-портом, а Ethernet Shield. На него есть схемы, чертежи, видно все дорожки — он не залит пластмассой в конце концов :). Кому интересно, посмотрит его схему, купит себе несколько чипов W5100, попробует что-то сделать самостоятельно, на своей плате с W5100 и МК в габаритах Pro Mini, а потом узнает, что есть еще более эффективные решения. Знания, добытые подобным «полуигровым» способом — наиболее прочные.
                              0
                              Как показывает моя практика — делать подробные уроки это не совсем благодарное занятие, хотя находятся энтузиасты как например HomoFaciens.
                          +3
                          Я всегда говорю, что Arduino — это jQuery. Обе очень популярны, обе неоптимальны по сравнению с vanilla, у обоих низкий порог вхождения. И у обоих огромное количество плагинов/библоитек для всех возможных целей.

                          Лично мне например проще при нехватке времени воспользоваться «фреймворком» Arduino — быстро развести свою плату, быстро написать скетч с использованием готовых либ и поместить это в корпус. Ответственные либо требовательные к ресурсам вещи пишу на vanilla C.
                            +5
                            Почти все тоже самое написано и в ардуиновской статье «Port Manipulation».
                            Типа, если вам очень нужна скорость, одновременность или вы выжимаете все, что можно из памяти — используйте регистры.

                            Однако, вариант с регистрами куда вероятнее приведет к многочасовой отладке, потому как не очевиден — сейчас вы помните как обращаться к пину 13, а через неделю? А через полгода?

                            Если уж так хочется поиграться с портами напрямую, то лучше один раз загнать все варианты в define и потом писать что-то типа:

                            #define fast_pin_up13 PORTB&=233; // Автор, я сэкономил еще несколько тактов, избавив от двух ненужных вычислений.
                            #define fast_pin_dn13 PORTB|=32;

                            fast_pin_up13;
                            fast_pin_dn13;

                            Насчет отношения некоторых «специалистов и профессионалов» — это обычный снобизм. Ардуино — это как PHP в мире электроники. Кто угодно может помигать диодом в свое удовольствие или пощелкать реле. Соотв. это же порождает и огромное количество новичков, которые только разбираются в вопросе, но что-то пробуют делать. Меня вот тут как-то долго убеждали в диалоге (кажется, ignat99), что я ничего не понимаю в серийном производстве плат с МК вообще и их сертификации в частности, хотя я не собирался ничего сертифицировать и серийно производить, о чем сказал собеседнику минимум трижды. Но у него, видимо, накипело. Впрочем, это все равно было познавательно.
                              +5
                              >> #define fast_pin_up13 PORTB&=233; // Автор, я сэкономил еще несколько тактов, избавив от двух ненужных вычислений

                              Боюсь, что не сэкономил, а немного усложнил понимание для человека :) Любой нормальный (и не очень) компилятор посчитает ~(1 << 5) «в уме» и в машинном коде вместо этого вычисления будет всё та же константа.
                                0
                                Да, вполне вероятно. Разница в скетчах — 4 байта, но это, скорее всего, обусловлено типизацией.
                                  –4
                                  Не поминайте ignat99 в суе:
                                  1. Микрочип купил Атмел (по слухам). Поэтому в течении года лучше всем перебраться на PIC32 и забыть об AVR.
                                  2. Olimex выпускает Ардвино в отличном форм факторе: https://www.olimex.com/Products/Duino/AVR/OLIMEXINO-NANO/open-source-hardware
                                  3. Olimex анонсировал FPGA (ПЛИС) шильд iCE40HX1K в этом же форм факторе NANO, который работает в 4 раза быстрее на SPI и в 80 раз быстрее может дёргать пины чем да же программа на СИ под Arduino.

                                  Вот можно ознакомиться с IP блоками доступными для iCE40:
                                  http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/IntellectualProperty.aspx

                                  Выводы очевидны — зачем AVR, если есть FPGA за ту же цену, или PIC32 который имеет частоту 200 МГц и у которого нет проблем при покупке большой партии под нужды компании.

                                  PS: И ESP32 то же не кто не забывает. Так что для AVR вообще уже места нет.
                                    0
                                    Ну и что что купил. Роадмап всегда на годы вперед прописывается.
                                      +1
                                      > зачем AVR, если есть FPGA

                                      «Зачем нужен процессор, если есть видеокарта за ту же цену».
                                      Дешевый FPGA — это замечательно. Обязательно посмотрю его в деле, когда он начнет на Али стоить 1-2$.

                                      > И ESP32

                                      В конце прошлого года для ESP8266 какие-то особо одаренные китайские мыслители убили очередь отправки данных через сокет (типа, ее все использовали неправильно и потому девайс крашился из-за оом). И на все вопросы у них один ответ — вот будет ESP32 с нормальной ОС…
                                        0
                                        «Та же цена» для FPGA шильда от Olimex это между 5-20 Евро. Боюсь 1-2$ не дождётесь. Понятно что он будет работать в комплекте с самим мк в формфакторе NANO, но надеюсь, AVR для этого размера платы (NANO) Цветан (директор Olimex) заменит на PIC32 в ближайшее время…
                                  0
                                  Сообщение из Твиттера Olimex: «iCE40HX1K shield for OLIMEXINO-NANO you can program the FPGA via Arduino IDE».
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    +7
                                    Это то ладно. Когда чел лепит радостно на проводках это можно понять. Лень, быстро и сразу… Меня вымораживает другое. Когда человек осваивает все эти мощные сапры, открывает какой-нибудь pcad и рисует там печатку, потом по хардкору травит плату в которую будет… впаиваться ардуино. А что сразу развести на той же плате микроконтроллер и прошить его тем же ардуиновским загрузчиком ему религия не позволяет? Это какой то ардуиноз головного мозга в терминальной стадии.
                                      0
                                      ну их же мало. считай что что это проявилось на ранней стадии поражение мозга, которое иначе вылезло бы намного позже
                                        +1
                                        Да если бы. Судя по наблюдениям, все что чуть более сложное, выходящее за рамки общепопулярных кубиков, идет именно этим путем.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                          0
                                          Ага и глючат безбожно то там то тут. Они же не спроста такие дешевые.
                                          +7
                                          Что можно выиграть, взяв чип вместо платы с разводкой? 0.5$ и немного места. Стоит ли это дополнительной возни?
                                            +1
                                            Возни там минут на 15 больше. Ее впаивать дольше чем обвязку нарисовать. А так можно выводы по другому раскинуть, соптимизировать питание и много чего еще.
                                              +1
                                              Как-то мне понадобилось несколько устройств с cp2102. Развел, заказал на заводе платы. Попытался купить чипы. Хаха. Пришлось купить usb адаптеры и феном пересаживать.

                                              Предлагаешь покупать ардуины и передувать с них чипы?)))
                                              кстати для ардуины еще и программатор не нужен, чтоб загрузчик зашивать. воткнул в усб и готово.
                                            +7
                                            Стыдно-стыдно… А если я ну совсем врач. И для моих задач этого хватает? Более того, экспериментальное железо чаще всего одноразовое. Типа на пару тестов собрать и потом обратно на запчасти. Тебе спасибо огромное, что убил основы и хорошие статьи писал. Без этого было бы очень сложно. Но не всем нужно опускаться до жутковатого синтаксиса C. Многим хватает понимать более или менее физику процессов, принципы снижения помех в платах, базовые паттерны применения рассыпухи в разных случаях. А логика самой программы иногда до идиотизма проста.

                                            Мне, например, надо было лишь очень точно измерять напряжение и крутить насос перистальтический по этим показателям. Измерение напряжения зависит от помех в схеме и хорошего экранирования. Тут загрузчик и убогая IDE никак не повлиять. Крутить насосом мне тоже надо абсолютно стандартно. Библиотеки от adafruit позволили не тратить кучу ценного времени на отладку. Воткнул АЦП и заработало. Только над правильной разводкой долго думал и изучал мануалы.

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

                                              Я то про аппаратную, а ты про софтверную часть. Тут я соглашусь, готовых библиотечных решений очень много и это большой плюс для неспецов. Налепил библиотечек и готово.
                                                +1
                                                Так и у меня впаяная ардуина. Ибо работает, а у меня куча этих Arduino Nano. Ты прав, бесспорно, но тут надо разделять категории пользователей. Я не железячник, мне нужно минимизировать время на разработку и отладку. Если работает — трогать не буду. Если человек продает изделия со впаянными ардуинами, то за это отстреливать надо, согласен. То есть по факту у меня разведенная плата-прототип, она же конечное изделие. Ибо экспериментальная железка.
                                                  –2
                                                  А смысл? Ведь все равно плату делал, все равно паять. Так запаял сразу же все. Оно и компактней будет в разы.
                                                    +1
                                                    Компактность не нужна, ардуина уже как готовый модуль-расходник. Зачем мне тратить время на разводку дополнительно? Никакой выгоды для меня. по факту нет принципиальной разницы напаял ли я модуль-breakout АЦП ADS1115 с обвязкой готовый или впаял «управляющий модуль» Arduino Nano, который как раз имеет удобные выводы параллельными рядами. Просто еще один уровень абстракции для непрофессионала.
                                                      0
                                                      Боюсь еще и очевидных косяков при разводке внесёте в конструкцию, из-за которых будет работать 50 на 50 и сбрасываться от любого чиха.
                                                        0
                                                        Вроде все корректно. Я правда старался и читал мануалы) даже постарался изобразить чистую и грязную землю отдельно. И много много конденсаторов керамических где ни попадя))
                                                    +1
                                                    Не надо никого отстреливать! :)

                                                    Вы же не отстреливаете повара за то, что в ресторане вам подали стейк из говядины, которую закупили у фермеров, а не вырастили сами на заднем дворе ресторана. Если человек сделал какую-то интересную и полезную фиговину на ардуине для себя, а потом оказалось, что эта фиговина нужна ещё двум десяткам человек — не вижу никакого криминала, чтобы он собрал её так же на ардуине, без этапа «причёсывания» и разработки отдельной платы с тем же микроконтроллером и без лишней обвязки. А если завтра с апдейтом прошивки появится новая функция? При ардуине внутри пользователю достаточно будет шилдик докупить прицепить к ней, а в случае с «монолитным» решением — отзывать партию и перепаивать, если не предусмотреть «порты расширения» заранее. Это как с программными фреймоврками. В релиз попадает куча лишнего кода, который никогда не будет задействован, но на фреймворке проще и быстрее решать многие задачи.
                                                  0
                                                  убил основы *дал основы
                                                  +1
                                                  Очень очень уважаемый DIHALT. Я не освоил Игл, протеус. Платы я разводу в ворде 2003. Прям из него печатаю и травлю ЛУТом. И я в своих увлечениях, которыми теперь интересуется и мой сын, именно так и планирую делать. В частности велоспидометр. Плата с панелькой под ардуино нано, в обвязке будет К176ИЕ4, пара транзисторов и 8 резисторов для управления семисегментным индикатором в динамическом режиме, ещё пара транзисторов для управления стоп-сигналом и поворотниками, несколько кнопок, LM7805 и батарейка крона. С панелькой потому, что из инструментов у меня 40 ваттный паяльник, купленный тридцать лет назад в моём детстве, маленькие пассатижи, пинцет, лупа семикратного увеличения, китайский тестер, показывающий ноль при измерении напряжения на выходе импульсных БП, серп и молот. В магазинах электроники на вопрос «А есть ли у вас микроконтроллер фирмы Atmel ATmega 328?» мне говорят «Нет, и никогда не было». Свою арду нано я заказывал в Московском инетмагазине Неотой, и ждал два месяца. И потому я не уверен, что смогу самостоятельно изготовить аналог из голого МК. Спидометр надоест сыну за одно лето. Тем более, что китайский в магазине стоит 700 руб. А эту нану мы впоследствии можем использовать ещё не раз.
                                                    +5
                                                    Платы? В Ворде? О_о…
                                                      +1
                                                      Хардкор, да.
                                                        +2
                                                        Ну вот, а ты всё "… ардуину в плату впаять" :))
                                                        0
                                                        Один знакомый геймер ухитрился привыкнуть вместо WASD к какой-то дикой раскладке типа QW и две кнопки мышки для бега вперед. Это приводило к тому, что он регулярно путался в клавишах и сталкивался с огромным количеством сложностей. На все увещевания типа «прекратить страдать ерундой и переучиться» отвечал, что «ему так удобнее».

                                                        Так вот, для начинающих практически везде рекомендуется Sprint-Layout. Он по сложности освоения близок к Пеинту или Блокноту. Почему Ворд? Зачем Ворд?

                                                        Зачем связываться с российскими реселлерами? Что вам мешает заказать эту Arduino Nano из Китая? И зачем повторно использовать контроллер, стоящий дешевле банки пива?

                                                        Ну и инструмент вызывает недоумение — понятно, что не все могут позволить себе хорошую паяльную станцию, но паяльник с регулировкой температуры (не мощности) и необгораемым жалом стоит где-то 25-30$.
                                                          0
                                                          Ну у меня геймерская раскладка тоже весьма нетрадиционная (вперед это mouse2, назад W, остальное более менее также), правда я к ней привык и в кнопках не путаюсь. Тут дело моторики.

                                                          Но вот софт совершенно не подходящий для рисования вообще? Хотя может это олдскульный хардкорщик и рисует платы в ASCII арте?
                                                          0
                                                          Кстати, почти всеми не слишком крупным семисегментными индикаторами с напряжением на сегменте не больше 4-х вольт и которым хватает 40 мА на все сегменты, можно рулить в динамическом режиме напрямую выходами МК\Ардуины, добавив только резисторы, транзисторы и микросхемы не нужны.
                                                            0
                                                            Sprint Layout 6 хотябы освоить, почти как в ворде только лишние кнопки не мешают.
                                                            А онлайн-магазинов есть много, есть ведь где и поближе — быстрей доставят.
                                                            Да, все-таки советую использовать HC595 а не К176ИЕ4, они в будущем тоже пригодятся не только чтобы на сегменты что-то выводить. И брать сразу горсть, их всегда не хватает.
                                                              +1
                                                              Отвечу здесь всем сразу. Да, в ворде. Потому, что он есть в каждой конторке печати документов. И чертёж печатается 100% в масштабе один к одному. Конечно, может я туп. Может просто поленился детально разобраться в орле. В каком формате он может отдать чертёж, если не сразу его печатать? Принтер у меня только струйный. И то давно стоит колом из-за конского ценника на картриджи. Схемы у меня простые. Максимум три DIP корпуса не считая рассыпухи. Шаг сетки у ворда в режиме векторной графики 0,1 мм. Объединение позволяет просто переносить группы контактов из чертежа в чертёж. Рисую дорожки со стороны деталей. Ошибок меньше, зеркалить не надо. Двухсторонки не делаю. Хоть иногда и куча перемычек. Рулить двухразрядным семисегментным индикатором сразу от ног МК конечно можно. Но это всё равно динамический режим. Анод (катод) то общий. А значит всё равно МК будет постоянно дёргать ногами, переключая вывод с разряда на разряд. Количество потребных ног: 7 на разряды, одна на точки десятичных знаков, две на транзисторные ключи дёргать аноды (катоды). Итого ДЕСЯТЬ. В моём варианте: одна — накидывать микрухе импульсы (количество по требуемому значению числа в разряде), одна — точки, две — аноды (катоды) Итого: ЧЕТЫРЕ. Логика скетча проще, какая никакая, а защита ног МК от коротыша в индикаторе. Да и индикатор можно повесить попрожористей, а значит поярче. А если поставить две микрухи, можно и от динамической индикации отказаться. Русская кушает импульсы с частотой до мегагерца. Импортная — до 15 мегагерц. Так что пофигу. Хоть десять раз в секунду накидывать до 99 импульсов, всё равно успеет. Почему русская — да потому, что импортную у нас не найти. Заказ из Китая… Сам ничего не заказывал. Родня… Не электронику. Бисер, камушки, фурнитуру для поделок. Шло два месяца. Говорят, на фотках али всё красиво. А пришло так себе по качеству. И были позиции, которые вообще не пришли. Но тут скорее всего Почта России… :( Да и с таким курсом доллара нынче и с Китая заказывать уже не дёшево. Кстати! Светодиоды там стоят рублей пять — шесть штучка. А китайская новогодняя гирлянда 100 светодиодов 4 цвета у нас стоит 150 р. Итого 15 коп за светодиод. Но это уже пример находчивости голи, той, что на выдумки хитра :( Инструменты… Это вообще боль… Паяльник с хромированым жалом — от 700 руб. Припой с флюсом внутри — от 200 за буквально граммы. Моя голь (а может это жаба?) давно надоумила дербанить всю дохлую электронику на детали. БП компов, матричные принтеры. Даже бортовые компы японских авто, блоки управления вентилятором печки, сигнализации из битых машин, покупаемых другом под разбор. Ну вот и припой оттуда. :) Всё мечтаю найти на какой нить материнке микросхему RTS :) Гуглю… Но никакой инфы толком. А материнки есть… :)
                                                                0
                                                                Упс… Забыл про ногу сброса микрухи в ноль. 11 против 5.
                                                                  0
                                                                  Да блин… :((( Конечно же десять против пяти. НО всё равно экономия ног в два раза.
                                                                  +1
                                                                  На материнках нет отдельной RTC, она реализована на части большого чипсета в виде OTP-части кристалла… Единственное что на материнках иногда попадаются операционники в SMD-корпусах вроде LM358 и транзисторы NPN общего применения как КТ315 только SMD.

                                                                  АлиЭкспресс — та ещё контора мошенников! Ebay с PayPal в этом отношении как-то посерьёзней и надёжней, хотя там чуточку дороже(у меня из 300 заказов за 5 лет наверно 5...7 не пришли). Но и там нюх тоже терять не стоит, есть уловки продавцов.

                                                                  Сохраняй схемы в PDF… виртуальный принтер тебе в помощь. Он позволяет открывать везде документ для печати 1 к 1.
                                                                  Sprint Layout в этом отношении лучше ворда, в нём схему можно проектировать в естественном виде — со стороны деталей а перед печатью «отразить» изображение. Та же самая группировка, ОЧЕНЬ наглядное и простое создание своих компонентов и раздеребан готовых.
                                                                  Ну и на закуску — по выбору дюймовый и метрический шаг сетки, можно установить произвольный. Если задавать в миллиметрах то уже для 16-выводных корпусов и выше(155ИД3 например) сильно расходятся отверстия с выводами.

                                                                  Припой… не такой уж дорогой, 200грамм диаметром 0.8мм с добавлением 2% серебра хватит наверно на всю жизнь если не заливать им все платы(большие капли припоя обладают меньшей механической прочностью на большом отрезке времени и легче трескаются от температурных перепадов).

                                                                  Регистры сдвига использовать удобнее. Их подключение к контроллеру можно сделать универсальным, и плату с индикатором соединять всего 5-ю проводами, независимо от количества сегментов — наращивать можно до тех пор пока хватает источника питания. Это пригодится в будущем. Впрочем, есть даже целая микросхема которая по I2C реализует динамическую индикацию на 8 разрядов 7-сегментного индикатора. Есть и под матрицы 16x24 с поддержкой 4 уровней градации яркости каждого сегмента. Есть регистры сдвига сразу на 16 бит с драйверами под светодиоды на выходе — т.е. никаких резисторов на сегменты, напрямую светодиоды подключаются — меньше пайки, меньше деталей.
                                                                    0
                                                                    А как насчет печати в PDF? Если я не ошибаюсь, любой компьютер сейчас умеет открывать и печатать PDF.
                                                                    Далее. У SprintLayout'а имеется в комплекте утилита-просмотрщик с функцией печати, которую можно скинуть на ту же флешку с чертежом. Да и сам SprintLayout отлично с флешки работает.
                                                                      0
                                                                      Не везде дадут что-то запускать на печатающем оборудовании, тем более там что-то делать в программе. И это отличный способ нахвататься троянов! Да и банально может не оказаться Windows для запуска приложения…
                                                                        0
                                                                        Ну уж PDF умеет печатать любая контора по печати. Это такой же документальный стандарт как и ворд.
                                                                        0
                                                                        PDF вроде всё хранит чуть ли не в jpeg'ах. Сколько не печатал их — контрастность довольно низкая. Белое — нифига не белое. А с чёрными точками. Может быть любой комп и открывает PDF. Но однозначно ни одна тётя в конторе по распечатке и ксерокопированию документов ни за что не согласится открыть с флешки исполняемый файл. Только файлы данных. Давайте остановимся на том, что пока это дело моего вкуса. Вот приспособился я так. Понимаю, что это не правильно. Возможно, когда нибудь и перейду на спринт или орла.
                                                                          0
                                                                          Это зависит только от того КАК был сформирован документ. Если это скан, то само собой будут артефакты, а если он создан вектором то будет просто идеально всё. Вплоть до того что в PDF-документ встраивается шрифт, которого может не оказаться на целевой системе(китайский, например).
                                                                          Соответственно Sprint сохранит в документ именно в векторном виде, так как он выводит это на принтер используя подсемейство языка PCL.
                                                                            +1
                                                                            Я как истинный нищеброд и сторонник лицензионного ПО использую для разведения план программку PCB (http://pcb.geda-project.org/). Не знаю, как другие, но она генерирует замечательные файлы для печати без каких либо артефактов или нечерного черного.
                                                                              0
                                                                              Хм, не знал про такую. Собрал, работает, выглядит неплохо.
                                                                                0
                                                                                Ну Eagle я не осилил — он для меня оказался слишком сложным, а Sprint Layout слишком дорогой для того, что бы разводить по плате в полгода. А больше я особо вариантов и не нашел для Linux (ну точнее есть еще KiCad, но с ним у меня что-то не получилось).

                                                                                Ну и вообще все вполне просто и легковесно.
                                                                                  0
                                                                                  А SprintLayout что, платный? О_о
                                                                                  В сети полно ломаных русифицированных версий. Но я вам этого не говорил)
                                                                                    0
                                                                                    В сети невозможно найти НЕ ломаную версию :) Не знаю, оф.сайт работает у них или нет сейчас.
                                                                                      0
                                                                                      Где-то пол года назад я точно находил не ломаную версию на их сайте.
                                                                                    0
                                                                                    Мне KiCad больше по душе, так как если разводить что-то сложнее диодного моста, велика вероятность ошибок, и всякие автоматические контроли спасают. Пару лет назад разводил плату на 400+ компонентов, так макет заработал с первого(!) раза, ошибки несоответствия платы и схемы, и даже ошибки в схеме, вычищаются на этапе проектирования. Простой пример: цифровой выход микросхемы случайно заземлили, перепутали вход и выход стабилизатора, ну и всё в этом духе. Контроль схемы заругается ещё до начала работы с платой.

                                                                                    Правда не работал уже давно с ним, времени на хобби всё меньше…
                                                                    0
                                                                    Я помню (лет десять назад это было), если надо быстро что-то смакетировать, брал AVR-ку, и прямо к DIP корпусу тоненькими проводками припаивал питание и «программатор», который представлял собой ничто иное как 5 проводков припаянных к LPT. Далее в зависимости от потребностей макета, припаивал светодиод/реле/пищалку. В итоге, на это времени уходило меньше пяти минут. Если нужно что-то сложнее, то без разводки платы тут никак.
                                                                    Гораздо больше проблем с софтом было. Начинал я с wavrasm + PonyProg. Потом, когда освоил C, переполз на AtmelStudio + WinAVR, но прошивал по прежнему PonyProg'ом (почему не помню). Неправильными фьюзами я попортил несчетное колличество кристалов.
                                                                    Для старта, от более простой среды я в то время не отказался бы.
                                                                      0
                                                                      Насчет крутых САПРов не соглашусь. Начинал знакомство с МК с msp430. Разводил сразу в Sprint Layout'е. Никакого дискомфорта не почувствовал. Было это 5 лет назад.
                                                                      Сейчас спокойно развожу сложные платы в том же SL'е, паяю на них TQFP и TSSOP-корпуса, пишу достаточно сложные прошивки, подумываю о разработке собственного бутлоадера для AVR. На работе с ARM'ами ковыряюсь.
                                                                      Понимаю, что Ардуино удобна для макетирования, но делать законченные устройства на ней — как по мне, это верх безумия.
                                                                      Кстати, насчет модулей и плат расширения — удобно иметь на уже готовой фабричной плате датчик с уже разведенной обвязкой. Но цена таких модулей действительно отпугивает.
                                                                      +1
                                                                      И тут кот осознал что он попал на Geektimes
                                                                      image
                                                                        +1
                                                                        Щупы осцилла пробовали подстроить? Не должен так заваливать фронты на 2 МГц :)
                                                                          0
                                                                          Разумеется.

                                                                            0
                                                                            Странно. У меня 1102, хоть и покруче, но не думал, что они так отличаются. Вот 1МГц с контроллера, тоже на соплях

                                                                            image
                                                                              0
                                                                              А Вы к какой ножке подключились?
                                                                                0
                                                                                Да не помню уже, картинке года три, сейчас лень расчехлять прибор. :)
                                                                                А какая, собственно, разница, если выход в режиме пуш-пул?
                                                                                  0
                                                                                  Ну, выход микроконтроллера это не совсем то, что вы называете пуш-пул.
                                                                                    0
                                                                                    эээ… в смысле?
                                                                                      +1
                                                                                      Вот примерно так выглядит эквивалент порта микроконтроллера:

                                                                                      image

                                                                                      А на что похожа Ваша схема?
                                                                                        0
                                                                                        Вот то, что слева, когда DDRx = 1, и есть режим push-pull. Есть ещё «open drain» (режим с открытым коллектором), которого напрямую в AVR нет, но он легко эмулируется записью в PORTx = 1 и дёрганием DDRx
                                                                                        А на что похожа Ваша схема?

                                                                                        Какая схема? С осциллограммой сигнала? Так тупо осцилл на голую ногу МК.
                                                                                          0
                                                                                          Вот то, что слева

                                                                                          Тьфу, справа!
                                                                                        0
                                                                                        Ага, нагуглил я обзор осциллографа откуда собственно и Ваш скрин.
                                                                                        Дело в том, что я для тестов использовал 13-й пин ардуино, он же и PB5. К нему ещё подключен светодиод с резистором, видимо они и накладывают свой отпечаток на сигнал. Но суть моей статьи не об этом. Я хотел показать разницу в быстродействии.
                                                                                          +2
                                                                                          К нему ещё подключен светодиод с резистором, видимо они и накладывают свой отпечаток на сигнал.
                                                                                          А, ну это да, 100% загубит фронты.
                                                                                          Я хотел показать разницу в быстродействии.
                                                                                          И разжечь холивар :)
                                                                                            0
                                                                                            До холивара тут ещё далеко ;)
                                                                                              0
                                                                                              А, ну это да, 100% загубит фронты.
                                                                                              У uno кстати этот светодиод включен через буфер. Так что на фронты сильно влиять не должно. тем более, на том-же пине SCK от SPI.
                                                                              +10
                                                                              Вопрос немного в сторону, как к поклонникам ардуины, так и к скептикам — почему код для микроконтроллеров обычно пишут абы как?
                                                                              Глобальные переменные, гигантские god-функции, отсутствие модулей вообще, magic-number'ы — это типичный перечень антипаттернов программирования, которые можно найти почти в любом коде как для ардуино так и для контроллеров, которые считаются более «тру»?
                                                                              Автор, вашего кода это тоже касается, кстати.
                                                                                +1
                                                                                Просто надо нарабатывать профессионализм, это не приходит сразу.
                                                                                  +7
                                                                                  Тогда не очень понятны наезды по-поводу железа Ардуины, или готовых модулей соединных на макетной плате и выдаваемых за готовое устройство.

                                                                                  Можно спроектировать, развести и спаять красивую плату, но при этом в коде будет тот же программный аналог макетной платы на скрутках и изоленте, гордо выдаваемый за серьезную разработку.
                                                                                  +2
                                                                                  1. Профессиональных программистов мало.
                                                                                  2. Большая часть задач от «Hello world!» отличается лишь количественно.
                                                                                  3. Ограниченность ресурсов.

                                                                                  Из перечисленных вами антипаттернов проблемой являются лишь magic-number-ы — но их довольно часто выносят в define и комментируют — посмотрите любую библиотеку.
                                                                                    +1
                                                                                    В популярных библиотеках все более-менее пристойно. Я имею в виду пользовательские проекты, код которых не стесняются публиковать.

                                                                                    А почему вы не считаете раздутые функции и отсутствие модулей проблемой? Я уж не говорю про ООП, которое исключительно редко можно встретить.
                                                                                      +2
                                                                                      Я имею в виду пользовательские проекты, код которых не стесняются публиковать.
                                                                                      Как правило профессионалы свои проекты не публикуют, а любители, одновременно и паттерны программирования знающие, и схемотехнику — большая редкость.
                                                                                        +4
                                                                                        Потому что для проекта в 300 строк модули не нужны, большинство любительских проектов и до такого размера не дотягивают.

                                                                                        Насчет популярных библиотек. Я вот сейчас копаюсь в NodeMCU: 65 контрибьюторов, больше года разработки и и все такое. А внутри все те же проблемы — магические числа, которые не внесены в документацию и даже не прокомментированы, портянки из жутких if-ов с перевернутыми параметрами ( if ( 1 == i ) ), отсутствие единой стилистики в названиях, бардак в типах (индексом одного и того же массива в трех функциях являются int, uint8_t и size_t), названия типов не отличающиеся от названий переменных и многое другое за что положено бить канделябром. Но код работает и понемногу развивается.
                                                                                          +3
                                                                                          А что вам не нравится в перевернутых параметрах? Это же самопроверяющийся код.

                                                                                          1=i даст сразу же ошибку синтаксиса. А i=1 спокойно себе скомпилируется и попробуй ее найти потом.
                                                                                            +2
                                                                                            А i=1 спокойно себе скомпилируется и попробуй ее найти потом.

                                                                                            С ворнингом. На которые тоже смотреть не мешало бы.
                                                                                            Хотя всё от настроек среды зависит.
                                                                                      +4
                                                                                      Просто к программированию МК приходят снизу, от железа обычно. А значит все самоучки и изучали программирование методом тыка.
                                                                                        0
                                                                                        Мне учится методом тыка порой эффективнее чем разгребать вагоны теории, знаю что это не совсем правильно, но такой он я.
                                                                                      +24
                                                                                      Ох… Все «иликтронщеги» такие умные, прямо жуть берёт. Скажу вам пару слов как практикующий учитель, который пытается приобщить детей к электронике, программированию и прочим инженерно-техническим прелестям очумелых ручек. Я уже не раз про это писал, но, раз уж вы снова подняли ЭТУ тему, то и я повторюсь.
                                                                                      Попробуйте, господа электронщики, взять группу (человек 10) детей 10-13 лет, у которых нет в школе информатики, у которых родители не инженеры и которые не понимают, почему батарейка не работает в пульте, вставленная «не тем концом». Посадите этих детей перед вашими любимыми микроконтроллерами и начните учить программировать «как гуру». Уверен, очень скоро от вашей группы останется 1-2 человека. Остальные разбегутся и близко потом не подойдут к электронике!
                                                                                      Огромный плюс Ардуино в том, что с её помощью можно втянуть в программирование человека почти любого возраста с любым, даже нулевым, уровнем программирования и навыком работы с электрическими схемами! Со временем, при правильном подходе и объяснении, ученик сам поймёт, что Ардуино — не панацея и имеет кучу минусов. Тогда уже он САМ захочет изучить и работу с микроконтроллерами напрямую, и создавать полностью свои платы, не используя «дорогущие разноцветные готовые модули». Но сначала его надо вовлечь в это всё, дать основы для понимания. И для этого Ардуино очень здорово подходит.

                                                                                      Может я и не прав, но в нашем центре «Юный техник» это работает: ребята (11-40+ лет) с разным уровнем подготовки с одинаковым удовольствием учатся основам с помощью Ардуино. Те, кто постарше, уже начинают поглядывать в сторону микроконтроллеров…
                                                                                      Представьте ситуацию: приходит ребёнок (10 лет) в секцию фехтования. Он никогда не держал меча в руках, не занимался толком спортом. Насмотрелся фильмов про бои на мечах и пришёл учиться. Ему дают настоящий меч (чуть ли не с парня ростом, кстати), выкидывают на арену против пары тигров и начинают «учить». Как думаете, много в такой школе будет учеников? Да, несомненно, в ней будет учиться пара вундеркиндов/везунчиков, которые смогли, но…
                                                                                        +3
                                                                                        Спасибо, что готовите смену. :)
                                                                                          –4
                                                                                          А может, так и надо? Чтобы осталось именно 2-3 человека, которые не будут в будущем превращать ~(1<<5) в 233 для экономии тактов?
                                                                                            +4
                                                                                            Чтобы осталось 2-3 человека, надо сначала 10-20 человек НАЧАТЬ учить. Иначе велика вероятность, что, начав учить 2-3 человека, в итоге останешься без учеников совсем.
                                                                                            0
                                                                                            Это если ваша цель — «заинтересовать всех, кто только пришел», тогда конечно.

                                                                                            Если цель «сделать пришедшего профессионалом», то все гораздо сложнее. Потому, что НЕ КАЖДЫЙ может стать программистом или схемотехником, или любым другим специалистом.
                                                                                            А ИГРАТЬ в игрушки может каждый.
                                                                                            +4
                                                                                            Обычная ситуация, когда профи пересекаются с любителями.

                                                                                            Думаю, если спеца по встраиваемым системам усадить писать интерпрайз софт, то получим аналогичный итог.
                                                                                            Повсеместно будут использоваться «красивые разноцветные модули» — толстые фреймворки. Которые, можно было бы заменить парой своих строк кода.

                                                                                              0
                                                                                              В энтерпрайзе ситуация полностью обратная: новички любят писать свой код, а профессионалы переиспользуют компоненты.
                                                                                                0
                                                                                                В интерпрайзе у новичка нет шансов протащить в проект «отсебятину». Сверху есть четкие инструкции, что надо использовать. Одна из причин, почему интерпрайз многие не любят — код под контролем бюрократии.

                                                                                                А дома, новичок, пусть хоть ОС свою пишет.
                                                                                                  0
                                                                                                  Энтерпрайз — это толстая неоднородная область, где есть и огромные интеграторы\разработчики с четкими инструкциями совершенно на всё, мелкие конторы из нескольких человек, которые пилят что-то для кого-то и даже крупные конторы, выросшие из мелких, но оставшиеся с таким же (никаким) уровнем организации разработки.
                                                                                                    +1
                                                                                                    У вас получился настолько общий комментарий, что вместо «энтерпрайза» можно подставлять любую область, даже не ИТ.

                                                                                                    Например:
                                                                                                    ЖКХ — это толстая неоднородная область, где есть и огромные хозяйства с четкими инструкциями совершенно на всё, мелкие домоуправления из нескольких человек, которые непонятно чем занимаются и даже крупные конторы, выросшие из мелких, но оставшиеся с таким же (никаким) уровнем организации работы.

                                                                                                    Суть надо искать в характерных чертах, а не в крайностях.
                                                                                                      0
                                                                                                      В общем-то, соглашусь :) Но я действительно видел в реальности примеры всех трех типов, причем тех, где с инструкциями было не очень — было больше. О глобальном распределении судить не берусь, конечно.
                                                                                              +2
                                                                                              > Получается проигрыш производительности в данном случае — 28 раз. Разумеется что это не значит, что ардуино работает в 28 раз медленнее, но я считаю, что для наглядности, это лучший пример того, за что не любят ардуино.

                                                                                              А вы куда спешите? У меня самый большой проект на ардуине работает с портами с частотой 1 герц. Самый шустрый — 200 герц. Есть ещё 1wire, но на портах ли она работает интересно только автору той библиотеки (а это 0,1% пользователей). Это VB на компе можно не любить за то, что впустую отбирает ресурсы у других приложений. Среднему человеку уметь писать в порты просто не надо.

                                                                                              А то, что предлагаете вы — предварительная оптимизация. За это я не люблю тех, кто не любит ардуино.

                                                                                              > Сейчас речь пойдёт о использовании ресурсов микроконтроллера, которые не безграничны, и если их бездумно расходовать то они приведут, в лучшем случае, к непонятным ругательствам среды разработки, а в худшем — дней разбирательств почему оно корректно не работает, сотни итераций кода в уме, строчка за строчкой, а причиной этого может оказаться мистика срыв стека микроконтроллера.

                                                                                              А тут проблема. Непонятные ругательства и сотни итераций кода в уме — это проблема. Проблема отсутствия нормального инструментария. Эмуляторов, тестов, дебаггеров. Я не могу без слёз смотреть на то, что есть.

                                                                                              Но переходом на Си бороться с непонятными ругательствами… Напоминает анекдот про «жаль, а у меня еще столько идей было»
                                                                                                +2
                                                                                                Да есть там и дебагеры и эмуляторы. Вот только не в ардуино среде. Но, наверное, можно загнать в AVR Studio и там протащить, правда после библиотек там столько мусора разгребать придется.
                                                                                                  +1
                                                                                                  Да, всё есть просто это нужно осваивать. Я когда закончил универ и устроился на работу встретился с дефицитом времени… Но может я так оправдываю свою лень, кто знает.
                                                                                                    +1
                                                                                                    согласен. Оптимизации нужны, если упираешься в пределы МК либо высокие требования к проекту.

                                                                                                    Точно также и на ПК — я знаю, как решить задачу на ассемблере, но выберу либо Ruby/Python, либо C# для большинства задач.
                                                                                                    C++ использую, если есть высокие требования к производительности. Асм последние 8 лет не использовал ни разу :), последний раз — правил баг в Menuet OS.

                                                                                                    На МК я намного чаще упирался в нехватку аппаратных ресурсов (таймеры, пины), чем в нехватку производительности или места во флеше.
                                                                                                    0
                                                                                                    Вот очередной холиварный топик приводит к чему? К описку решения, хотя бы «полурешения». Это я к тому, что уже есть «библиотеки», которые имеют все эти FastDigitalWrite и им подобные, в итоге и производительность чуть выше, и читаемость не хуже стала.
                                                                                                    Больше споров = больше решений = больше инструментов = больше пользователей, ИНТЕРЕСУЮЩИХСЯ, ЛЮБОПЫТНЫХ, СОЗДАЮЩИХ. В итоге это на пользу всем. Ну, кроме тех, кто будет продолжать ненавидеть ардуинщиков.
                                                                                                      0
                                                                                                      Вроде весна ещё не началась…
                                                                                                        0
                                                                                                        А феномен нелюбви, на самом деле, очень простой. Этому есть две причины.

                                                                                                        1-я, эстетическая: все эти новички так жаждут результата, что готовое изделие оставляют на уровне отладки в виде чего-то несуразного из неструганной древесины, картона, формованного паяльником пластика, мятой фольги и изоленты с приклеенной сверху на сопли ардуиной, и в таком виде заливают на youtube и в статьи.

                                                                                                        2-я, основная: неправильное использование. Почему-то все забывают, что Ардуино — это специальная удобная плата для ПРОТОТИПИРОВАНИЯ. И нужна она ровно до момента, как отлаженное устройство начнет нормально работать, после чего покупается маленький процессор за полтора бакса, курится пдф с его распиновкой, он впаивается и прошивается программатором, а Ардуино отправляется на нужды новых амбициозных проектов, таких как «килоомный резистор на Ардуино» или «отмотчик туалетной бумаги на Ардуино».
                                                                                                          0
                                                                                                          Пара слов в защиту Ардуино. Вот что можно сделать из Ардуино, если отбросить стереотипы мышления. Смотреть рекомендуется в HD и сначала до конца.

                                                                                                          http://www.youtube.com/watch?v=jmu0MkIlywU

                                                                                                          Кстати, это ещё и обучающая платформа для всего спектра современных IT технологий для школ и образовательных центров.
                                                                                                            –2
                                                                                                            Мне кажется основной вопрос не ПОЧЕМУ не любят Arduino а КТО не любит Arduino.
                                                                                                            Больше всех о том что ардуино ЗЛО кричат именно «истинные» программисты. А почему? Потому что они в основном только и умеют что писать код. Не спорю красивый, правильный, и надёжный. Но как только встаёт вопрос о том что бы разработать и расчитать входные развязки, выходные ключи, экранировку и развязки питания, они испытывают шок. «Транзистор, опропара — нет не слышали и не знаем что это такое». Им намного легче взять готовый контроллер за 1000500 рублей где все эти задачи уже решили те самые электронщики о которых они с таким пренебрежением отзываются («ну как же они не умеют писать красивый код, их задача делать для нас готовые железяки») и впарить их заказчику как абсолютно надёжное устройство.
                                                                                                            А те самые электронщики если хоть немного разобрались с кодом сделают из той же ардуинки абсолютно надёжное устройство, пускай не с очень красивым кодом, но правильно рассчитанное и разработанное. И оно будет работать и приносить пользу в отличие от поделок которые творят «истинные гуру» программирования. Хотя и от этих поделок есть польза. По крайней мере есть откуда скопипастить куски кода))))
                                                                                                              +3
                                                                                                              Вы противоречите сами себе. Вы пишите, что программисты не любят Ардуино, потому что электроника для программистов слишком сложна:
                                                                                                              Но как только встаёт вопрос о том что бы разработать и расчитать входные развязки, выходные ключи, экранировку и развязки питания, они испытывают шок.
                                                                                                              и тут же:
                                                                                                              Им намного легче взять готовый контроллер за 1000500 рублей где все эти задачи уже решили те самые электронщики

                                                                                                              Так почему же программисты должны нелюбить Ардуино, если электроника для них сложна (да, это так), а Ардуино решает их проблемы?

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

                                                                                                              Программисты обычно холиварят по поводу языков программирования, сред разработки. Но ни как ни электронных устройств.
                                                                                                                –2
                                                                                                                Вот как раз то потому что ардуино не решает их проблемы. Она имеет практически чистые входы — выходы контроллера которые требуют дополнительных усилий по их развязки с исполнительными цепями. Но поскольку по этой причине в по мнению програмистов ардуино — зло, то альтернативой является те самые контроллеры за большие бабки, как например habrahabr.ru/company/contactless/blog/213243 где все развязки уже сделаны и на долю программиста остается чисто творческая работа, и не надо марать ручки паяльником или чем то ещё
                                                                                                                +3
                                                                                                                Программисты любят Ардуино именно потому что железная часть не требует дополнительных услилий. Это я вам как программист говорю.
                                                                                                                  –4
                                                                                                                  Ну да для того что бы помигать светодиодиком, или покатать тележку. А вот для любого реального применения уже по любому требуется доработка.
                                                                                                                    +3
                                                                                                                    А что такое «реальное применение», например? Управление девайсами на 220В? Добавить модуль реле и все. Управление чем-то средней мощности? Транзистор. Чем-то мощным через ШИМ? Полевой транзистор. Считать данные с датчиков? «Соедините проводами следующие пины».

                                                                                                                    Я вот себе сделал в качестве эксперимента RGB-подсветку для рабочего стола. ИК-датчик расстояния (чтобы свайпом управлять яркостью), миниджойстик для выбора HUE, три простеньких IRF530N, Arduino UNO, чтобы не возиться ээ… вообще ни с чем и пять метров ленты 5050. Так Ардуина вообще висит на проводах. Я уже год жду, когда поделка сломается, чтобы получить повод все аккуратно переделать и убрать в корпус. Но она не ломается.

                                                                                                                    https://habrastorage.org/files/8f9/35e/0ac/8f935e0ac64b425abc7721ff4c697bfc.jpg
                                                                                                                      +1
                                                                                                                      image
                                                                                                                        0
                                                                                                                        Управление девайсами на 220В? Добавить модуль реле и все.

                                                                                                                        Модуль реле накроется через неделю (желательно твердотельное реле или оптосемистр). При включении контактора ардуинка зависнет (необходима экранировка контроллера вместе с дисплеем), при срабатывании конечника расположенного за 10 м контроллер зависнет (необходима опторазвязка входа).
                                                                                                                        Считать данные с датчиков?

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

                                                                                                                        Если хотите узнать какие реально полезные устройства собирают на ардуинке и какие проблемы возникают в процессе их создания — загляните на форум . Там электронщики собирают от устройств управления двигателем до дозаторов в пищевой промышленности и промышленных станков.
                                                                                                                          0
                                                                                                                          Ну это слишком категорично. Домашняя автоматизация, например, это тоже реальное применение. Много случаев, когда и модуль реле не накроется (если мощность нагрузки была 10 Вт), и не зависнет ничего (по тем же причинам), и концевик находится на расстоянии десятка сантиметров, и прочее. Так что вы спорите немного о разных вещах.
                                                                                                                            0
                                                                                                                            А у меня один девайс просто выгорел из-за того что с него висели провода длиной 20 сантиметров… во время грозы. Девайс был отключен от розетки, даже вилка выдернута из розетки! остальное что было включено в этот момент выжило, в телевизоре только разрядник щелкнул, сработал автомат и на розетке черный след с фазы на заземляющий контакт.
                                                                                                                            А девайс сгорел тихо, выяснилось только по дыму с него при следующем включении. Выгорела микросхема к которой были подключены эти два проводка. Без защиты… кто же мог подумать что от такого может пробить вход, даже с защитой от статики?
                                                                                                                            После этого, всё что идёт в автоматике не в виде макета — все входы и выходы должны быть защищены. Разрядник даже не всегда помогает поэтому он используется только как вспомогательный когда совсем уж плохо.

                                                                                                                            Второй девайс, находился в 10 метров от сети вообще, но с 5-ю метрами проводов… там микросхему сразу разнесло на части, и стабилитрон защитный не помог. Поэтому, ТОЛЬКО СУПРЕССОР.
                                                                                                                            0
                                                                                                                            У меня не накрылся ни один из модулей реле. Никаких проблем не возникло даже при включении двухкиловаттного чайника — почти предельная нагрузка для широко распространенного SRD-05VDC-SL-C. Кстати, широко распространенные ардуиновские модули с реле используют оптопару PS817C.

                                                                                                                            Не было проблем и с датчиками — у меня на метр болтается «хвост» с DTH22, например.

                                                                                                                            Но я понял вашу мысль — если нужно управлять девайсом, находящимся в крайне неблагоприятных условиях или девайсом, сбой которого может иметь катастрофические последствия, то следует озаботиться вопросами защиты.
                                                                                                                    +1
                                                                                                                    А я спасибо сказать хочу.
                                                                                                                    Не знал например, что можно на чем-то еще писать, и вшивать в ардуинку код.
                                                                                                                    Почему-то раньше на 386х приходилось еще думать, как код оптимизировать, а тут да, вот только так, и даже мысль не проскочила, что можно делать быстрее.
                                                                                                                    Спасибо
                                                                                                                      0
                                                                                                                      Пожалуйста. Рад видеть что мои работы кому-то могут быть полезны.
                                                                                                                      0
                                                                                                                      Если хочется ардуино, то можно же в сторону mbed посмотреть. Те же проблемы, но на ARM и с частотой повыше :) Писал недавно как раз об этом. В целом же проблема в другом — не зная о том, «что у ей внутре», первую же возникшую проблему ардуинщику решить не удастся. А проблема возникнет на 100%.
                                                                                                                        +2
                                                                                                                        А вы не путаете железку и среду. Ардуина хороша не железом (оно там слабое) а огромным количеством готового кода под все вот эти датчики, кнопочки, моторчики и все на свете. Ну и облегченный язык.

                                                                                                                        Какой смысл идти на мбед если там всего этого в три порядка меньше?
                                                                                                                          0
                                                                                                                          Там все-таки настоящий С++, при желании можно и до железки напрямую достучаться, ну и платформы там попроизводительнее будут. Кода тоже хватает уже. А смысл учить облегченный язык, что потом с ним делать?
                                                                                                                            +1
                                                                                                                            Ну в ардуине тоже си. В оконечнике то все тот же winavr GCC стоит. Просто все обернуто кучей либ и макросов разных. При желании их можно и размотать.
                                                                                                                        +3
                                                                                                                        Не разделяю негатив автора по отношению к наборам. Начинающим робостроителям, например, такой набор будет в самый раз. Все на месте ничего не нужно вручную изобретать, бери да изучай. Школоте вообще самое оно.

                                                                                                                        imageRobotLinking 2015 New Uno R3 Project Ultimate Starter Kit For Arduino UNO R3 Mega2560 Mega328 Nano including Uno R3 55 баксов. В комплекте идет учебник.
                                                                                                                        Есть другие разновидности, дешевле на десяток другой баксов.
                                                                                                                          0
                                                                                                                          Ключевое слово — РОБОТОСТРОИТЕЛЯМ.
                                                                                                                          Им не важно, как работает программа. Они строят алгоритм поведения робота в зависимости от показаний датчика. Им все норм. Пока не упрутся в предел вычислительной мощности и нехватку памяти. А на ардуине это будет очень быстро.
                                                                                                                          0
                                                                                                                          На мой взгляд, система для хобби может стоить достаточно дорого, но предоставлять «все удобства» — иметь достаточно памяти, что бы не приходилось оптимизировать вручную, позволять программировать на различных языках, в том числе очень высокоуровневых (Erlang, Julia, Lisp, Prolog).
                                                                                                                          Все это требует более мощного процессора.
                                                                                                                          Системы, типа Arduino, больше подходят для серийных изделий, где экономия на ресурсах оправдывает более сложную разработку.
                                                                                                                          Но в целом проект все равно интересный.
                                                                                                                            0
                                                                                                                            Все это требует более мощного процессора.
                                                                                                                            Так есть же малинка и другие платы на любой вкус и цвет, работающие под полноценными ОС.
                                                                                                                            Системы, типа Arduino, больше подходят для серийных изделий
                                                                                                                            Как раз наоборот — для простых любительских задач, а так же прототипирования.
                                                                                                                              0
                                                                                                                              Для любительских задач, IMHO, не самое лучшее программировать на чистом пытаясь уместиться в жесткие аппаратные ограничения. То есть 8-битного процессора не достаточно — малинка лучше подходит.
                                                                                                                                0
                                                                                                                                Не представляю любительских задач, где ограничения Ардуины были бы существенны, кроме, пожалуй, вывода какой-то графики и текста на TFT. По той же причине и Си не доставляет проблем. Вот вам не все ли равно, написать digitalWrite(13, HIGH) (Cи) или gpio.write(13, gpio.HIGH) (Lua, nodeMCU)?

                                                                                                                                А вот как выглядит обращение к пину на Малинке, Perl: Device::BCM2835::gpio_write(&Device::BCM2835::RPI_GPIO_P1_13, 1)
                                                                                                                                  0
                                                                                                                                  Для небольшой автоматизации чего-то (основная масса хотелок) вполне достаточно. Ну а для серьёзных проектов контроллер выбирают под задачу, а там уже, например, на ARM, есть куда развернуться. На AVR8 свет клином не сошёлся. А если позволяют габариты/масса/энергопотребление — то и платку на SoC типа малинки с нормальной осью.
                                                                                                                              0
                                                                                                                              Arduino уже и в телепередачах.

                                                                                                                              image

                                                                                                                              youtu.be/l3WQ2rygTo4?t=1745

                                                                                                                              Не только я продвигаю Ардуино в массы ;)
                                                                                                                                0
                                                                                                                                Все любят пасхалки, в том числе и я:

                                                                                                                                image
                                                                                                                                youtu.be/pjY6ZdjSwgg?t=645

                                                                                                                                Странно что никто не заметил.
                                                                                                                                  0
                                                                                                                                  При первом просмотре заметил, удивился этой связи с "нахренобщемством", еще помнится подумалось написать в личку, спросить, что в файле
                                                                                                                                    0
                                                                                                                                    Вот он fsociety00.dat, но подумайте стоит ли его качать? ;)
                                                                                                                                      +1
                                                                                                                                      Нет. Это фейк. обычная переименованная BMP-картинка с логотипом ютуба…
                                                                                                                                      Еще и со встроенными комментариями со ссылкой на какой-то канал ютуба кошко-электронной направленности.
                                                                                                                                        0
                                                                                                                                        Вы меня раскусили. Только там не лого ютуба как Вы выловились, а мой аватар на ютуб, тут, да и везде.
                                                                                                                                          0
                                                                                                                                          Всё же, согласитесь, логотип есть. Вобщем-то он похож вполне на стандартный логотип.

                                                                                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                                                Самое читаемое