Arduino. Изучаем вместе

Всё о ЧПУ (CNC). Компоненты, станки, программы.
Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #31 РЕКЛАМА » 29 янв 2018, 15:49

Джереми Блума книжка у меня бумажная есть.. :P


Пробовал установить FLProg на Убунту 16.04 (64), не завелась.. И джаву чистил сносил-ставил..
Подумает немного и ничего.

Аватара пользователя
ROW

Arduino. Изучаем вместе

Сообщение #32 ROW » 29 янв 2018, 16:48

РЕКЛАМА писал(а):Источник цитаты Джереми Блума книжка у меня бумажная есть..
Пробовал установить FLProg на Убунту 16.04 (64), не завелась.. И джаву чистил сносил-ставил.
"...далее следует непеводимая игра слов "(С)"Бриллиантовая рука"..Вы бы господа ка то расшифровали в топике чтоль, жаргонизмы,а то некторые то вообще понятия не имеют :oops: что оно и к чему? кроме как диковинного словечка : Ардуино дальшее ниче и не слыхивали, а вникнуть (приобщится так сказать к неземным цивилизациям намерения иимеют) хочется
Мозг есть у всех, только не все разобрались с инструкцией к нему!

михаил

Arduino. Изучаем вместе

Сообщение #33 михаил » 29 янв 2018, 17:05

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

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #34 РЕКЛАМА » 29 янв 2018, 17:35

ROW писал(а):Источник цитаты Вы бы господа ка то расшифровали в топике чтоль, жаргонизмы,а то некторые то вообще понятия не имеют


А тут и нет никаких жаргонизмов :unknown:

Аватара пользователя
ROW

Arduino. Изучаем вместе

Сообщение #35 ROW » 29 янв 2018, 17:45

ROW писал(а):Источник цитаты FLProg
:shock: :?
ROW писал(а):Источник цитаты И джаву чистил
:shock: :pardon:
РЕКЛАМА писал(а):Источник цитаты тут и нет никаких жаргонизмов
а в остальном прекрасная маркиза, все хорошо! все хорошо! :jokingly:
Мозг есть у всех, только не все разобрались с инструкцией к нему!

Аватара пользователя
РЕКЛАМА

Arduino. Изучаем вместе

Сообщение #36 РЕКЛАМА » 29 янв 2018, 19:24

ROW писал(а):Источник цитаты а в остальном прекрасная маркиза, все хорошо! все хорошо!

Arduino. Изучаем вместе - Снимок экрана от 2018-01-29 17-21-07.jpg

Arduino. Изучаем вместе - Снимок экрана от 2018-01-29 17-20-19.jpg


одно среда разработки, другое язык программирования.
Или наоборот.

Аватара пользователя
realCAT

Arduino. Изучаем вместе

Сообщение #37 realCAT » 30 янв 2018, 00:59

Сообщение не по теме
все супер показано
Свернуть
h index=7

Аватара пользователя
AKD-TEAM

Arduino. Изучаем вместе

Сообщение #38 AKD-TEAM » 31 янв 2018, 05:03

Урраа! пошла мазута ;) :yahoo: Игорь спасибо!. Буду чаще появлятся и отрывать себя от работы...(зажрала совсем окаянная )
Всем давно пора !- навалится на микроконтроллеры! ( в прочем как и на 3д проектирование) :) и внедрять эту *заразу 21 века* в свои станочные проекты!!! на рассыпухе ...*Сеня* это давно не актуально... :wall:
Сам сейчас дозаказал макеток и всяких приблуд к ардуино , как придут похвастаюсь и начну заставлять себя изучать.
Первая из моих задач- контроль температуры вакуумной формовки.
http://chipgu.ru/viewtopic.php?t=2765

хорошей для меня новостью стала программа FLPROG

Мужчина без знания программирования в ней разобрался и делает нужные проекты.
вот ссылка:https://www.youtube.com/watch?v=-6e1G8wZxWA
К макетке заказал плату питания 3,3 \5 вольт .(Шоб сразу приятней было :) )
вот ссылка на самую дешёвую : MB102 Макет Питание модуля 3.3 В 5 В для Arduino Solderless Макет Напряжение регуляторhttps://ru.aliexpress.com/store/product/Breadboard-Power-Supply-Module-3-3V-5V-MB102-Solderless-Bread-Board-DIY-2012-New-3PCS/610196_708949986.html?spm=a2g0v.12010608.0.0.4570414etKosdg
а также: ЖК-дисплей 1602 + I2C ( и плату отдельно IIC/I2C/Интерфейс ЖК-дисплей 1602) -попробую включить ЖК от старых принтеров.
15A 400 Вт МОП триггера Переключатель Drive Модуль ШИМ регулятор Управление Панель
Хочу попробовать повторить -*для сдвига с мертвой точки*. проект лазерной гравировки . на dvd лаз. и приводе.
пугает только то что этими эксперементами -можно зрение испортить !
по технике безопасности -идеи в студию.. и какие очки купить пока тоже не понимаю ( по длине волны светодиода???)

Далее можно лаз.головку по мощнее прикупить. и на ремнях построить.
для этой задачи тоже заказал
Arduino Nano CH340 USB
TCAM 635nm 650nm 808nm 980nm TTL лазерный диод Драйвер доска drive 5 В питания 50-300ma
A4988 Шаговые двигатели модуль драйвера (с микрошагом)
Сам с компом плохо дружу , поэтому прошу Игоря и всех кто в теме...по разжованее доносить и от печки исходить... ;)

Отправлено спустя 10 минут :
Хорус писал(а):Источник цитаты Лучше уж сразу STM.. И мощнее и дешевле.. Простора больше..

Очень хочу тоже изучить ( но пока и с ардуино толком не в теме) если можете помогите стартануть!! ( что купить для старта ?какой программатор? что нужно читать ? что и откуда загружать? ) :unknown:
Грамотные и доброжелательные специалисты объединяйтесь!

Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #39 KimIV » 31 янв 2018, 16:51

Мигаем встроенным светодиодом

Как правильно подсказал Андрей (РЕКЛАМА), встроенный светодиод L подключен к цифровому выводу номер 13 платы и скетч Blink как раз и создан для управления этим светодиодом и этим выводом.

Arduino. Изучаем вместе - 06_1.jpg


Проверим это на практике. Подключаем плату ардуино к USB-порту компьютера.

Arduino. Изучаем вместе - 06_2.jpg


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

Arduino. Изучаем вместе - 06_3.png


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

Arduino. Изучаем вместе - 06_4.png


В самом начале в комментариях видим описание его работы. Что мол включает светодиод на одну секунду и выключает на одну секунду и так несколько раз.

Оригинальный текст
Turns an LED on for one second, then off for one second, repeatedly.


Так же в комментариях есть сведения о том, что на платах UNO, MEGA и ZERO уже есть светодиод и он подключен к цифровому выводу 13. Вообщем, в очередной раз убеждаемся в полезности чтения инструкций :jokingly:

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

Код: Выделить всё

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}


Любой скетч в обязательном порядке должен содержать две функции: setup() и loop(). Они могут быть пустыми, то есть не содержать никакого кода, но их наличие обязательно, хотя бы вот в таком минимальном определении.

Код: Выделить всё

void setup() {
}

void loop() {
}


Удаляем всё в открытом скетче, оставляем только пустые функции setup() и loop() и загружаем такой скетч в память контроллера. Если кто забыл, кнопка "Загрузка" на панели инструментов или Меню-Скетч-Загрузка.

Arduino. Изучаем вместе - 06_5.png


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

Arduino. Изучаем вместе - 06_6.jpg


Ну оно и понятно. Функции пустые, кода в них никакого нет, соответственно контроллер ничего не делает. Теперь давайте разберём назначение этих основных и обязательных функций.

Функция setup() выполняется однократно и при каждом включении или перезагрузке платы ардуино. То есть включили плату, подали на неё питание или нажали кнопку reset, сразу же исполняется функция setup(). И на этом всё! Больше она не будет исполняться до следующего включения или следующей перезагрузки. В эту функцию обычно помещают какие-либо иницализационные команды, которые должны быть исполнены перед запуском основной программы. Это некие подготовительные операции. Например, в изучаемом нами скетче Blink в функции setup() содержится следующий код.

Код: Выделить всё

  pinMode(LED_BUILTIN, OUTPUT);


Функция pinMode() устанавливает режим работы вывода. В константе LED_BUILTIN содержится номер вывода 13, а константа OUTPUT как раз и определяет, что вывод 13 будет работать как ВЫХОД (а не вход). Поэтому в изменяемый нами скетч так и запишем.

Код: Выделить всё

void setup() {
  pinMode(13, OUTPUT);
}


Arduino. Изучаем вместе - 06_7.png


Идём дальше...
Функция loop() исполняется после функции setup() и делает это многократно, то есть она крутится в замкнутом цикле. Исполняется один раз, потом сразу же без задержек второй раз, третий и т.д. до тех пор пока плата не будет выключена или пока не будет нажата кнопка reset. И соответственно так будет выполнена каждая команда/функция, содержащаяся внутри функции loop(). В нашем случае loop() содержит следующие команды

Код: Выделить всё

  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);


Константа LED_BUILTIN это целое число 13, поэтому для наглядности можно так и написать

Код: Выделить всё

  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);


Функция digitalWrite() подаёт сигнал заданного уровня HIGH или LOW (высокий или низкий, 1 или 0) на заданный цифровой вывод.
Функция delay() выполняет задержку (паузу) исполнения в миллисекундах. 1000 мс = 1 секунда.
И теперь что делают все вместе эти команды/функции?
В самом начале выполняется подача высокого уровня на цифровой выход 13. Затем пауза в течение 1 секунды. Потом подача сигнала низкого уровня на выход 13 и снова пауза 1 секунда. Функция loop() завершает свою работу и запускается снова, т.к. она работает в бесконечном замкнутом цикле. В результате получается следующее. Светодиод, подключенный к выводу 13 вспыхивает и горит одну секунду. Затем гаснет на секунду и снова вспыхивает, создавая таким образом мигание.

Мигание с периодичностью 2 секунды мы уже наблюдали. Пропробуем увеличить частоту ну раз эдак в пять, то есть в параметр функции delay() вместо 1000 впишем 200.

Код: Выделить всё

  digitalWrite(13, HIGH);
  delay(200);
  digitalWrite(13, LOW);
  delay(200);


Arduino. Изучаем вместе - 06_8.png


Теперь попробуем короткие редкие вспышки, поставим паузы 100 и 1500 мс

Код: Выделить всё

  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
  digitalWrite(13, HIGH);
  delay(100);
  digitalWrite(13, LOW);
  delay(100);
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);


Теперь делаем два коротких, один длинный.

Arduino. Изучаем вместе - 06_9.png


Видео разных вариантов миганий светодиода, встроенного в плату Arduino Uno.

https://youtu.be/pC06wgSa2Gc
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.

Аватара пользователя
Автор темы
KimIV

Arduino. Изучаем вместе

Сообщение #40 KimIV » 01 фев 2018, 16:43

Мигаем светодиодами

Теперь пробуем собрать простенькую схему управления внешним светодиодом. Перед сборкой схемы плату Arduino Uno и макетную панель закрепил на держателе для плат ардуино. Для сборки схемы понадобятся:
- Два проводка папа-папа,
- Один светодиод,
- И один резистор 220 Ом.

Светодиод взял первый попавшийся - жёлтый, а резистор нашёл по номиналу с помощью Многофункционального тестера GM328.

Arduino. Изучаем вместе - 07_1.jpg


Собрал вот такую схему и так это выглядит в реале.

Arduino. Изучаем вместе - 07_2.png
Arduino. Изучаем вместе - 07_3.jpg
Arduino. Изучаем вместе - 07_4.jpg


Последний наш скетч меняем следующим образом. Вместо числа 13 везде вписываем переменную ledPin, а саму эту переменную определяем и инициализируем в самом начале скетча.

Определение переменной - это описание её типа и имени.

Инициализация переменной - это присвоение первоначального значения.


Вот, что получилось:

Код: Выделить всё

int ledPin = 2;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(100);
  digitalWrite(ledPin, LOW);
  delay(100);
  digitalWrite(ledPin, HIGH);
  delay(100);
  digitalWrite(ledPin, LOW);
  delay(100);
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}


Arduino. Изучаем вместе - 07_5.png


То есть теперь для того, чтобы изменить номер цифрового вывода платы ардуино, на который мы будем подавать сигналы управления светодиодом, нам не надо выискивать в коде все места, где стоит число 13 и менять его на число 2. Для этого достаточно инициализировать переменную ledPin.

Добавим в схему ещё 5 светодиодов и 5 резисторов 220 Ом.

Arduino. Изучаем вместе - 07_6.png
Arduino. Изучаем вместе - 07_7.jpg
Arduino. Изучаем вместе - 07_8.jpg
Arduino. Изучаем вместе - 07_9.jpg
Arduino. Изучаем вместе - 07_10.jpg


И напишем скетч для управления цифровыми выводами платы от 2 до 7, то есть задействуем сразу 6 (шесть) выводов. Попробуем реализовать алгоритм "Бегущий огонь", то есть зажигаем первый светодиод. Через паузу гасим первый и сразу же зажигаем второй светодиод. Через паузу гасим второй и зажигаем третий и т.д. Вот код скетча.

Код: Выделить всё

void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  digitalWrite(2, HIGH);
  delay(200);
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  delay(200);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  delay(200);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  delay(200);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH);
  delay(200);
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  delay(200);
  digitalWrite(7, LOW);
}


В функции setup() мы устанавливаем режим работы выводов со 2-го по 7-ой как выходов, а в функции loop() выполняем управление этими выходами. В видео ниже можно посмотреть, как перемигиваются светодиоды и как создают эффект "Бегущего огня".

Пытливый читатель наверняка заметил, что код скетча нерационален и в нём много повторяющихся команд. Всё верно! Реальные программы так не пишут и обычно стараются избавляться от повторений в коде и сворачивать их либо в цикл, либо в отдельную функцию. Нам удобно это сделать циклом for. Ну а чтобы сразу же увидеть, что работает именно новый, более рационально написанный скетч, уменьшим паузу до 50 мс, то есть ускорим движение бегущего огня.

Код: Выделить всё

void setup() {
  for (int i=2; i<=7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int i=2; i<=7; i++) {
    digitalWrite(i, HIGH);
    delay(50);
    digitalWrite(i, LOW);
  }
}


В функции setup() циклическая переменная i последовательно принимает значения от 2 до 7 и для каждого из этих значений выполняется команда pinMode(i, OUTPUT), находящаяся внутри тела цикла for. И таким образом все цифровые выводы от 2-го до 7-го получают команду работать как выходы.

В функции loop() всё то же самое, только в теле цикла немного другие команды, а именно подача сигнала высокого уровня на выход. определяемый циклической переменной i, пауза, подача сигнала низкого уровня.

Ну а теперь поиграемся в волю и попробуем запрограммировать разные цветовые эффекты.

Бегущий огонь вправо-влево

Код: Выделить всё

void setup() {
  for (int i=2; i<=7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int i=2; i<=6; i++) {
    digitalWrite(i, HIGH);
    delay(100);
    digitalWrite(i, LOW);
  }
  for (int i=7; i>=3; i--) {
    digitalWrite(i, HIGH);
    delay(100);
    digitalWrite(i, LOW);
  }
}


Заполнение

Код: Выделить всё

void setup() {
  for (int i=2; i<=7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int i=2; i<=7; i++) {
    digitalWrite(i, HIGH);
    delay(100);
  }
  for (int i=2; i<=7; i++) {
    digitalWrite(i, LOW);
    delay(100);
  }
}


Индикаторная линейка

Код: Выделить всё

void setup() {
  for (int i=2; i<=7; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  for (int i=2; i<=7; i++) {
    digitalWrite(i, HIGH);
    delay(100);
  }
  for (int i=7; i>=2; i--) {
    digitalWrite(i, LOW);
    delay(100);
  }
}



Видео работы скетчей, рассмотренных в данном сообщении.

https://youtu.be/QXT8RlIEkS8
Ты должен делать добро из зла, потому что его больше не из чего делать. Уоренн Роберт Пенн.


Вернуться в «Системы ЧПУ»