FLProg – альтернативне середовище програмування Arduino. Опис проекту. Програмування Arduino за допомогою ArduBloсk на прикладі робота, що рухається смугою Графічні середовища, що відображають код у вигляді графіки

💖 Подобається?Поділися з друзями посиланням

Цей урок дає мінімальні знання, необхідні для програмування систем Ардуїно мовою C. Можна тільки переглянути його і надалі використовувати як довідкову інформацію. Тим, хто програмував на C в інших системах, можна пропустити статтю.

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

Структура програми Ардуїно.

Структура програми Ардуїно досить проста й у мінімальному варіанті і двох частин setup() і loop().

void setup() (

void loop() (

Функція setup() виконується один раз, коли живлення або скидання контролера. Зазвичай у ній відбуваються початкові установки змінних, регістрів. Функція повинна бути присутня в програмі, навіть якщо в ній нічого немає.

Після завершення setup() керування переходить до функції loop(). Вона у нескінченному циклі виконує команди, записані у її тілі (між фігурними дужками). Власне, ці команди і здійснюють усі алгоритмічні дії контролера.

Початкові правила синтаксису мови C.

; крапка з комоюВирази можуть містити скільки завгодно багато прогалин, переносів рядків. Ознакою завершення виразу є символ ”точка з комою”.

z = x + y;
z = x
+ y;

( ) фігурні дужкивизначають блок функції чи виразів. Наприклад, у функціях setup() та loop().

/* … */ блок коментаряобов'язково закрити.

/* це блок коментаря */

// однорядковий коментар, Закривати не треба, діє до кінця рядка.

// це один рядок коментаря

Змінні та типи даних.

Змінна це комірка оперативної пам'яті, у якій зберігається інформація. Програма використовує змінні зберігання проміжних даних обчислень. Для обчислень можуть бути використані дані різних форматів, різної розрядності, тому змінні в мові C мають такі типи.

Тип даних Розрядність, біт Діапазон чисел
boolean 8 true, false
char 8 -128 … 127
unsigned char 8 0 … 255
byte 8 0 … 255
int 16 -32768 … 32767
unsigned int 16 0 … 65535
слово 16 0 … 65535
long 32 -2147483648 … 2147483647
unsigned long 32 0 … 4294967295
short 16 -32768 … 32767
float 32 -3.4028235+38 … 3.4028235+38
double 32 -3.4028235+38 … 3.4028235+38

Типи даних вибираються з необхідної точності обчислень, форматів даних тощо. Не варто, наприклад, для лічильника, що рахує до 100, вибирати тип long. Працюватиме, але операція займе більше пам'яті даних і програм, вимагатиме більше часу.

Оголошення змінних.

Вказується тип даних, а потім ім'я змінної.

int x; // оголошення змінної з ім'ям x типу int
float widthBox; // оголошення змінної з ім'ям widthBox типу float

Усі змінні мають бути оголошені до використання.

Змінна може бути оголошена в будь-якій частині програми, але залежить від того, які блоки програми можуть її використовувати. Тобто. у змінних є області видимості.

  • Змінні, оголошені на початку програми до функції void setup(), вважаються глобальними і доступні в будь-якому місці програми.
  • Локальні змінні оголошуються всередині функцій або блоків, таких як цикл for, і можуть використовуватися тільки в оголошених блоках. Можливі кілька змінних із одним ім'ям, але різними областями видимості.

int mode; // змінна доступна всім функціям

void setup() (
// Порожній блок, початкові установки не потрібні
}

void loop() (

long count; // змінна count доступна лише функції loop()

for (int i=0; i< 10;) // переменная i доступна только внутри цикла
{
i++;
}
}

При оголошенні змінної можна задати початкове значення (проініціалізувати).

int x = 0; // оголошується змінна x з початковим значенням 0
char d = 'a'; // оголошується змінна d з початковим значенням, рівним коду символу ”a”

При арифметичних операціях з різними типамиданих відбувається автоматичне перетворення типів даних. Але найкраще завжди використовувати явне перетворення.

int x; // змінна int
char y; // змінна char
int z; // змінна int

z = x + (int) y; // змінна y явно перетворена на int

Арифметичні операції.

Операції відносин.

Логічні операції.

Операції над покажчиками.

Бітові операції.

& І
| АБО
^ ВИКЛЮЧНЕ АБО
~ ІНВЕРСІЯ
<< Сдвиг ліворуч
>> ЗРУГ ВПРАВО

Операції змішаного надання.

Вибір варіантів, керування програмою.

Оператор IFперевіряє умову у дужках і виконує наступне вираз чи блок у фігурних дужках, якщо умова істинна.

if (x == 5) // якщо x=5, то виконується z=0
z=0;

if (x > 5) // якщо x >
( z = 0; y = 8; )

IF … ELSEдозволяє зробити вибір між двома варіантами.

if (x > 5) // якщо x > 5, виконується блок z=0, y=8;
{
z=0;
y=8;
}

{
z=0;
y=0;
}

ELSE IF- дозволяє зробити множинний вибір

if (x > 5) // якщо x > 5, виконується блок z=0, y=8;
{
z=0;
y=8;
}

else if (x > 20) // якщо x > 20 виконується цей блок
{
}

else // інакше виконується цей блок
{
z=0;
y=0;
}

SWITCH CASE- множинний вибір. Дозволяє порівняти змінну (у прикладі x) з кількома константами (у прикладі 5 і 10) і виконати блок, в якому змінна дорівнює константі.

switch (x) (

case 5:
// код виконується, якщо x = 5
break;

case 10:
// код виконується, якщо x = 10
break;

default:
// код виконується якщо не збіглося жодне попереднє значення
break;
}

Цикл FOR. Конструкція дозволяє організовувати цикли із заданою кількістю ітерацій. Синтаксис виглядає так:

for (дія до початку циклу;
умова продовження циклу;
дію наприкінці кожної ітерації) (

// код тіла циклу

Приклад циклу зі 100 ітерацій.

for (i=0; i< 100; i++) // начальное значение 0, конечное 99, шаг 1

{
sum = sum + I;
}

Цикл WHILE. Оператор дозволяє організовувати цикли з конструкцією:

while (вираз)
{
// код тіла циклу
}

Цикл виконується доти, доки вираз у дужках істинний. Приклад циклу на 10 ітерацій.

x = 0;
while (x< 10)
{
// код тіла циклу
x++;
}

DO WHILE- Цикл з умовою на виході.

do
{
// код тіла циклу
) while (вираз);

Цикл виконується поки що вираз істинно.
BREAK- Оператор виходу з циклу. Використовується для того, щоб перервати виконання циклів for, while, do while.

x = 0;
while (x< 10)
{
if (z> 20) break; // якщо z > 20, вийти з циклу
// код тіла циклу
x++;
}

GOTO- Оператор безумовного переходу.

goto metka1; // Перехід на metka1
………………
metka1:

CONTINUE- Пропуск операторів до кінця тіла циклу.

x = 0;
while (x< 10)
{
// код тіла циклу
if (z> 20) continue; // якщо z> 20, то повернутися на початок тіла циклу
// код тіла циклу
x++;
}

Масиви.

Масив це область пам'яті, де послідовно зберігаються кілька змінних.

Оголошується масив так.

int ages; // масив із 10 змінних типу int

float weight; // масив зі 100 змінних типу float

При оголошенні масиви можна ініціалізувати:

int ages = (23, 54, 34, 24, 45, 56, 23, 23, 27, 28);

Звертаються до змінних масивів так:

x = ages; // x надається значення з 5 елемента масиву.
ages = 32; // 9 елементу масиву задається значення 32

Нумерація елементів масивів завжди із нуля.

Опції.

Функції дозволяють виконувати ті самі дії з різними даними. У функції є:

  • ім'я, яким її викликають;
  • аргументи - дані, які функція використовує для обчислення;
  • тип даних, що повертається функцією.

Описується функція користувача поза функціями setup() і loop().

void setup() (
// код виконується один раз під час запуску програми
}

void loop() (
// Основний код, виконується у циклі
}

// оголошення функції користувача з ім'ям functionName
type functionName(type argument1, type argument1, … , type argument)
{
// Тіло функції
return();
}

Приклад функції обчислює суму квадратів двох аргументів.

int sumQwadr (int x, int y)
{
return (x * x + y * y);
}

Виклик функції відбувається так:

d=2; b = 3;
z = sumQwadr (d, b); // z буде сума квадратів змінних d і b

Функції бувають вбудовані, користувацькі, що підключаються.

Дуже коротко, але цих даних має вистачити, щоб почати писати програми на C для систем Ардуїно.

Останнє, що я хочу розповісти в цьому уроці, як прийнято оформлювати програми на C. Думаю, якщо ви читаєте цей урок вперше, варто пропустити цей розділ і повернуться до нього пізніше, коли оформлятиме.

Головна мета зовнішнього оформлення програм – це покращити читаність програм, зменшити кількість формальних помилок. Тому для досягнення цієї мети можна сміливо порушувати усі рекомендації.

Імена у мові C.

Імена, що представляють типи даних, мають бути написані у змішаному регістрі. Перша буква імені має бути заголовна (верхній регістр).

Signal, TimeCount

Змінні мають бути записані іменами в змішаному регістрі, перша літера мала (нижній регістр).

Рубрика: . Ви можете додати до закладок.

Даний блог присвячений цьому проекту, і тут я розповідатиму про новини проекту, і досягнення учасників співтовариства користувачів програми. Проект присвячений створенню візуального середовища програмування плат Arduino, і тому, перш ніж розповідати про програму FLProg, я хочу зробити невеликий оглядіснуючих програм, призначених для програмування цих плат.

Середовище програмування плат ардуїно можна поділити на такі типи:

  1. Прокачані «Блокноти»
  2. Текстові середовища розробки
  3. Графічні середовища, що візуалізують структуру коду.
  4. Графічні середовища, які відображають код у вигляді графіки.
  5. Візуальні середовища програмування, які не використовують код.
Розглянемо кожен тип.

Прокачані «Блокноти»

До цього типу відносяться оригінальне середовище програмування Arduino-IDE, а також безліч її клонів.

Проектування програми для контролера у ній відбувається мовою Processing/Wiring, що є діалектом мови Сі (скоріше Сі++). Це середовище є, по суті, звичайним текстовим редактором з можливістю завантаження написаного коду в контролер

Текстові середовища розробки

Альтернативою Arduino IDE є середовище розробки від виробника мікроконтролерів Atmel – AVRStudio.

Програмування в ній ведеться на чистому C, і вона вже має набагато більше можливостей і схожа на серйозні IDE для «справжніх» мов програмування.

Ці два типи програм розраховані на досвідчених програмістів, які добре знають мову та можуть за допомогою них створювати серйозні проекти.

Графічні середовища, що візуалізують структуру коду.

Це програми, які, по суті, є розширенням форматування для звичайного текстового редакторакоду. У ньому програма так само пишеться мовою С, але у зручнішому варіанті. Зараз таких серед дуже багато, найяскравіші приклади: Scratch, S4A, Ardublock. Вони дуже добре підходять для початкового навчання програмування мовою С, оскільки відмінно показують структуру та синтаксис мови. Але для великих серйозних проектів програма виходить громіздкою.

Графічні середовища, що відображають код у вигляді графіки

Це програми, що приховують код та замінюють його графічними аналогами. Вони так само повторюється структура мови, формуються цикли, переходи, умови. Так само дуже добре підходять для навчання побудови алгоритмів, з наступним переходом на програмування класичними мовами. І так само не підходять для побудови великих проектів через громіздкість відображення, що отримується. Приклад такої програми: MiniBlog, Algorithm Builder, Flowcode

Описані вище типи програм розраховані на програмістів чи тих, хто вирішив вивчати класичне програмування. Але для виготовлення кінцевого пристрою крім безпосередньо програмування контролера зазвичай потрібна розробка зовнішньої обв'язки плати, розробка та розрахунок силової частини, вхідних розв'язок та багато іншого. Із цим у програмістів часто виникають проблеми. Зате з цим чудово справляються електрики та електронники. Але серед них мало програмістів, які б змогли скласти програму для контролера. Поєднання програміста та електронника – досить рідкісний випадок. Внаслідок такої ситуації реальних, закінчених проектів на основі плат Arduino (та й інших контролерів) одиниці. Для вирішення цієї проблеми служать програми останнього типу.

Візуальні середовища програмування, які не використовують код.

Дані програми реалізують принцип, який уже багато років застосовується практично всіма виробниками контролерів промислового застосування. Він полягає у створенні програм для контролера мовами FBD або LAD. Власне, як такими мовами вони не є. Це, швидше, графічні середовища малювання принципових чи логічних схем. Згадаймо, що процесори які завжди були мікропроцесорами, а створювалися з урахуванням цифрових мікросхем. Тому тим, хто звик працювати з цифровою технікою, більше сподобається робота на них, ніж написання коду класичними мовами програмування. Прикладом таких програм є проекти Horizont та FLProg. Програми цього добре підходять як вивчення побудови імпульсної і релейної техніки, так створення серйозних проектів.


Ну і нарешті, герой цього блогу, проект FLProg.

Оскільки я багато років працюю розробником систем АСУТП, я постарався зібрати у програмі FLProg все, що мені найбільше сподобалося в середовищі від провідних виробників промислового обладнання (Tia-Portal, Zelio Soft, Logo Soft Comfort).
Програма дозволяє складати схеми у двох видах: функціональні схеми (FBD) та релейні схеми (LAD).

FBD (Function Block Diagram) – графічна мова програмування стандарту МЕК 61131-3. Програма утворюється зі списку ланцюгів, що виконуються послідовно зверху донизу. Під час програмування використовуються набори бібліотечних блоків. Блок (елемент) - це підпрограма, функція або функціональний блок(І, АБО, НЕ, тригери, таймери, лічильники, блоки обробки аналогового сигналу, математичні операції та ін.). Кожен окремий ланцюг є виразом, складеним графічно з окремих елементів. До виходу блоку підключається блок, утворюючи ланцюг. Усередині ланцюга блоки виконуються строго у порядку їхнього з'єднання. Результат обчислення ланцюга записується у внутрішню змінну чи подається вихід контролера.



Ladder Diagram (LD, LAD, РКС) – мова релейної (сходової) логіки. Синтаксис мови зручний заміни логічних схем, виконаних на релейної техніці. Мова орієнтована фахівців з автоматизації, які працюють на промислових підприємствах. Забезпечує наочний інтерфейс логіки роботи контролера, що полегшує не тільки завдання власне програмування та введення в експлуатацію, а й швидкий пошук неполадок у обладнанні, що підключається до контролера. Програма мовою релейної логіки має наочний та інтуїтивно зрозумілий інженерам-електрикам графічний інтерфейс, що представляє логічні операції, як електричний ланцюг із замкнутими та розімкненими контактами. Перебіг або відсутність струму в цьому ланцюзі відповідає результату логічної операції (істина - якщо струм тече; брехня - якщо струм не тече). Основними елементами мови є контакти, які можна уподібнити парі контактів реле або кнопки. Пара контактів ототожнюється з логічною змінною, а стан цієї пари - зі значенням змінної. Розрізняються нормально замкнуті та нормально розімкнені контактні елементи, які можна зіставити з нормально замкнутими та нормально розімкненими кнопками в електричних ланцюгах.

Такий спосіб програмування виявився дуже зручним для легкого входження у розробку систем АСУ інженерів-електриків та електронників. Розробляючи проекти пристроїв, можуть легко прив'язати роботу цих установок до алгоритмів роботи контролера.

Побудована на цих уявленнях програма FLProg працює з Arduino. Чому?
Плата дуже зручна для швидкої розробки та налагодження своїх пристроїв, що важливо не лише радіоаматорам, але й дуже корисно, наприклад, і в шкільних гуртках, і у навчальних лабораторіях коледжів. Одна з переваг – вам не потрібний програматор. Ви підключаєте плату Arduino до комп'ютера і готову програму завантажуєте із середовища розробки. В даний час існує багатий вибір модулів Arduino, додаткових модулів, що працюють з Arduino, датчиків та пристроїв.

В даний час програмою підтримуються наступні версії Arduino: Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino ATmega168), Arduino Pro (ATmega328), Arduino UNO. Крім того, нещодавно в списку підтримуваних контролерів з'явилася плата Intel Galileo gen2. Надалі передбачається поповнення цього списку, і, можливо, додавання плат, заснованих на контролерах STM.

Проект у програмі FLProg є набором своєрідних плат, на кожній з яких зібраний закінчений модуль загальної схеми. Для зручності роботи кожна плата має найменування та коментарі. Також кожну плату можна згорнути (для економії місця у робочій зоні, коли роботу над нею закінчено) та розгорнути.

Склад бібліотеки елементів для мови FBD на даний момент.

Оформлення

  • Напис
  • Зображення
Базові елементи
  • Таблиця станів
Спеціальні блоки
Тригери
Таймери
Лічильники
Математика
Алгебра
Порівняння
UART
  • Відправлення до UART
  • Прийом із UART
  • Відправка змінної до UART
  • Прийом змінної з UART
Перемикач
Мотори
  • ServoMotor
  • StepMotor
Годинник реального часу
Дисплеї
  • Дисплей на чіпі НD44780
  • Підсвічування дисплея на чіпі НD44780 I2C
Рядки
  • Складання рядків
  • Порівняння рядків
  • Довжина рядка
  • Пошук підрядки
  • Отримання підрядка
  • Отримати символ з рядка
  • Додати Char до рядка
Масиви
  • Запис елемента в масив
  • Отримання елемента масиву
  • Сума елементів масиву
  • Пошук елемента в масиві
Датчики
SD карта
  • Вивантаження файлу з карти SD
  • Запис змінної на карту SD
Конвертація типів
  • Перетворення рядків
  • -> Byte
  • -> Char
Мікросхеми розширень
  • Розширювач висновків 74HC595
  • Драйвер світлодіодів MAX7219
Операції з бітами
  • Дешифратор
  • Шифратор
  • Читання біта
  • Запис битий
Різне
  • Матрична клавіатура
  • П'єзо динамік
  • Сканування шини OneWare
EEPROM
  • Запис у EEPROM
  • Читання з EEPROM
Комунікації
  • ResitiveVariableFromCommunication
  • WebServerPage
  • Сенсором
  • WebClient
Готові послуги
  • narodmon.ru
  • goplusplatform.com

Склад бібліотеки елементів для мови LAD на даний момент.

Оформлення

  • Напис
  • Зображення
Базові блоки
  • Контакт
  • Котушка
  • Захист від брязкоту
  • Виділення переднього фронту
  • Таблиця станів
Спеціальні реле
  • Двостабільне реле
  • Реле часу
  • Генератор
  • Реле порівняння
Алгебра
  • RANDOM
Аналогові блоки
  • Масштабування
  • Математика
  • Лічильник
  • Аналоговий перемикач
  • Перемикач багато до одного
  • Перемикач один до багатьох
  • Аналоговий вхід контролера
  • Аналоговий вихід контролера
  • Вхід аналогового з'єднувача
  • Вихід аналогового з'єднувача
  • Швидкісний лічильник
UART
  • Відправлення до UART
  • Прийом із UART
  • Відправка змінної до UART
  • Прийом змінної з UART
Мотори
  • Сервомотор
  • Кроковий двигун
Годинник реального часу
  • Отримати дані
  • Будильник
  • Встановлення часу
Дисплеї
  • Дисплей на чіпі HD44780
  • Блок управління підсвічуванням дисплея на чіпі HD4480 I2C
  • Блок декодування семисегментного індикатора
Рядки
  • Складання рядків
  • Порівняння рядків
  • Довжина рядка
  • Пошук підрядки
  • Отримання підрядка
  • Отримати символ з рядка
  • Додати Char до рядка
Масиви
  • Запис елемента в масив
  • Отримання елемента масиву
  • Сума елементів масиву
  • Пошук елемента в масиві
Датчики
  • Ульразвуковий далекомір HC-SR04
  • Датчик температури та вологості DHT11 (DHT21, DHT22)
  • Датчик температури DS18x2x
  • IR Ressive
  • BMP-085
  • BH1750 Light Meter
SD карта
  • Запис змінної на карту SD
  • Вивантаження файлу з карти SD
Конвертування типів
  • Конвертація рядків
  • Перетворення Float на Integer
  • -> Byte
  • -> Char
Мікросхеми розширень
  • Розширювач висновків 74HC595
  • Драйвер світлодіодів MAX7219
Операції з бітами
  • Шифратор
  • Дешифратор
  • Читання біта
  • Запис битий
Різне
  • Матрична клавіатура
  • П'єзо динамік
  • Сканування шини OneWare
EEPROM
  • Запис у EEPROM
  • Читання з EEPROM
Комунікації
  • Блок відправки змінної через комунікації
  • Прийом змінної через комунікації
  • Сторінка Webсервера
  • Web клієнт
Готові послуги
  • Передача даних на narodmon.ru
  • Дистанційне керування через RemoteXY

Більш докладно про проект я розповім у наступних постах, а насамкінець невелике відео, що показує принципи роботи в програмі та можливість управління платою з програми на смартфоні.

Ви можете допомогти і переказати трохи коштів на розвиток сайту

Вітаю! Я Алікін Олександр Сергійович, педагог додаткової освіти, веду гуртки «Робототехніка» та «Радіотехніка» у ЦДЮТТ м. Лабінська. Хотів би трохи розповісти про спрощений спосіб програмування Arduino за допомогою програми ArduBlosk.

Цю програму я ввів в освітній процес і захоплений результатом, у дітей вона має особливий попит, особливо при написанні найпростіших програм або для створення якогось початкового етапускладних програм. ArduBloсk є графічним середовищем програмування, т. е. всі дії виконуються з намальованими картинками з підписаними діями російською, що у рази спрощує вивчення платформи Arduino. Діти вже з 2-го класу легко освоюють роботу з Arduino завдяки цій програмі.

Так, хтось може сказати, що ще існує Scratch і він теж дуже просте графічне середовище для програмування Arduino. Але Scratch не прошиває Arduino, а лише керує ним за допомогою USB кабелю. Arduino залежить від комп'ютера і може працювати автономно. При створенні власних проектів автономність Arduino - це головне, особливо при створенні роботизованих пристроїв.

Навіть усіма відомі роботи LEGO, такі як NXT або EV3 нашим учням вже не такі цікаві з появою в програмуванні Arduino програми ArduBloсk. Ще Arduino набагато дешевше за будь-які конструктори LEGO і багато компонентів можна просто взяти від старої побутової електронної техніки. Програма ArduBlosk допоможе у роботі не тільки початківцям, але й активним користувачам платформи Arduino.

Отже, що таке ArduBloсk?Як я вже казав, це графічне середовище програмування. Майже повністю перекладена російською мовою. Але в ArduBlosk особливість не тільки це, а й те, що написану нами програму ArduBlosk конвертує в код Arduino IDE. Ця програма вбудовується у середовище програмування Arduino IDE, тобто це плагін.

Нижче наведено приклад миготливого світлодіода та конвертованої програми в Arduino IDE. Вся робота з програмою дуже проста і розібратися в ній зможе будь-який школяр.

В результаті роботи на програмі можна не тільки програмувати Arduino, але й вивчати незрозумілі нам команди текстовому форматі Arduino IDE, а якщо ж «лінь» писати стандартні команди - варто швидкими маніпуляціями мишкою накидати простеньку програму в ArduBlok, а в Arduino IDE її налагодити.

Щоб встановити ArduBlok, необхідно для початку завантажити та встановити Arduino IDE з офіційного сайту Arduino та розібратися з налаштуваннями під час роботи з платою Arduino UNO. Як це зробити описано на тому ж сайті або на Амперці, або подивитися на просторах YouTube. Ну а коли з усім цим розібралися, необхідно завантажити ArduBlok з офіційного сайту, ось . Останні версії завантажувати не рекомендую, для початківців вони дуже складні, а ось версія від 2013-07-12 – саме те, цей файл там найпопулярніший.

Потім завантажений файл перейменовуємо в ardublock-all і в папці «документи». Створюємо наступні папки: Arduino > tools > ArduBlockTool > tool і останнім кидаємо завантажений і перейменований файл. ArduBlok працює на всіх операційних системах, навіть на Linux, перевіряв сам особисто на XP, Win7, Win8, усі приклади для Win7. Встановлення програми для всіх систем є однаковим.

Ну, а якщо простіше, я приготував на Mail-диску 7z архів, розпакувавши який знайдете 2 папки. В одній уже робоча програма Arduino IDE, а в іншій папці вміст потрібно надіслати документи до папки.

Для того щоб працювати в ArduBlok, необхідно запустити Arduino IDE. Після чого заходимо у вкладку Інструменти і там знаходимо пункт ArduBlok, натискаємо на нього – і ось вона, ціль наша.

Тепер розберемося з інтерфейсом програми. Як ви вже зрозуміли, налаштувань у ній немає, а ось значків для програмування достатньо і кожен з них несе за собою команду в текстовому форматі Arduino IDE. У нових версіях значків ще більше, тому розібратися з ArduBlok останньої версії складно і деякі з значків не переведені на російську.

У розділі "Управління" ми знайдемо різноманітні цикли.

У розділі "Порти" ми можемо з вами керувати значеннями портів, а також підключеними до них звуковипромінювача, сервомашини або ультразвукового датчика наближення.

У розділі «Числа/Константи» ми можемо з вами вибрати цифрові значення або створити змінну, а ось те, що нижче навряд чи використовуватимете.

У розділі «Оператори» ми з вами знайдемо всі необхідні оператори порівняння та обчислення.

У розділі «Утиліти» використовуються значки з часом.

"TinkerKit Bloks" - це розділ для придбаних датчиків комплекту TinkerKit. Такого комплекту у нас, звичайно, немає, але це не означає, що для інших наборів значки не підійдуть, навіть навпаки - хлопцям дуже зручно використовувати такі значки, як включення світлодіода або кнопка. Ці знаки використовуються практично у всіх програмах. Але у них є особливість - при їх виборі стоять невірні значки порти, що позначають, тому їх необхідно видалити і підставити значок з розділу «числа/константи» найвищий у списку.

"DF Robot" - цей розділ використовується за наявності вказаних у ньому датчиків, вони іноді зустрічаються. І наш сьогоднішній приклад – не виняток, ми маємо «Регульований ІЧ вимикач» та «Датчик лінії». Датчик лінії відрізняється від того, що на картинці, так як він від фірми Амперка. Дії їх ідентичні, але датчик від Амперки набагато кращий, тому що в ньому є регулятор чутливості.

"Seeedstudio Grove" - ​​датчики цього розділу мною жодного разу не використовувалися, хоча тут тільки джойстики. У нових версіях цей розділ розширено.

І останній розділ це "Linker Kit". Датчики, представлені у ньому, мені не траплялися.

Хочеться показати приклад програми на роботі, що рухається смугою. Робот дуже простий, як у складанні, так і в придбанні, але про все по порядку. Почнемо з його придбання та складання.

Ось самий набір деталей все було придбано на сайті Амперка.

  1. AMP-B001 Motor Shield (2 канали, 2 А) 1 890 руб
  2. AMP-B017 Troyka Shield 1 690 руб
  3. AMP-X053 Батарейний відсік 3×2 AA 1 60 руб
  4. AMP-B018 Датчик лінії цифровий 2 580 руб
  5. ROB0049 Двоколісна платформа miniQ 1 1890 руб
  6. SEN0019 Інфрачервоний датчик перешкод 1 390 руб
  7. FIT0032 Кріплення для інфрачервоного датчика перешкод 1 90 руб
  8. A000066 Arduino Uno 1 1150 руб

Для початку зберемо колісну платформу та припаяємо до двигунів дроту.

Потім встановимо стійки, для кріплення плати Arduino UNO, які були взяті від старої материнської плати чи інші подібні кріплення.

Потім кріпимо на ці стійки плату Arduino UNO, але один болтик прикрутити не вийде - роз'єми заважають. Можна, звичайно, їх випаяти, але це вже на вашу думку.

Наступним кріпимо інфрачервоний датчик перешкод його спеціальне кріплення. Зверніть увагу, що регулятор чутливості знаходиться зверху, це для зручності регулювання.

Тепер встановлюємо цифрові датчики лінії, тут доведеться пошукати пару болтиків і 4 гайки до них. Дві гайки встановлюємо між самою платформою та датчиком лінії, а рештою фіксуємо датчики.

Наступним встановлюємо Motor Shield чи інакше можна назвати драйвер двигунів. У нашому випадку зверніть увагу на джампер. Ми не будемо використовувати окреме живлення для двигунів, тому він встановлений у цьому положенні. Нижня частина заклеюється ізолентою, щоб не було випадкових замикань від USB роз'єму Arduino UNO, це про всяк випадок.

Зверху Motor Shield встановлюємо Troyka Shield. Він необхідний зручності з'єднання датчиків. Всі сенсори цифрові, що використовуються нами, тому датчики лінії підключені до 8 і 9 порту, як їх ще називають піни, а інфрачервоний датчик перешкод підключений до 12 порту. Обов'язково зверніть увагу, що не можна використовувати порти 4, 5, 6, 7, оскільки вони використовуються Motor Shield для керування двигунами. Я ці порти навіть спеціально зафарбував червоним маркером, щоби учні розібралися.

Якщо ви вже звернули увагу, мною була додана чорна втулка, це про всяк випадок, щоб встановлений нами батарейний відсік не вилетів. І, нарешті, всю конструкцію ми фіксуємо звичайною гумкою.

Підключення батарейного відсіку може бути 2-х видів. Перший підключення проводів до Troyka Shield. Також можна підпаяти штекер живлення та підключати вже до самої плати Arduino UNO.

Ось наш робот готовий. Перед тим як почати програмувати, треба буде вивчити, як усе працює, а саме:
- Мотори:
Порт 4 і 5 використовуються для керування одним двигуном, а 6 і 7 іншим;
Швидкістю обертання двигунів ми регулюючи ШИМом на портах 5 та 6;
Вперед або назад, подаючи сигнали порти 4 і 7.
- Датчики:
У нас всі цифрові, тому пропонують логічні сигнали у вигляді 1 або 0;
А щоб їх відрегулювати, у них передбачені спеціальні регулятори, а за допомогою відповідної викрутки їх можна відкалібрувати.

Подробиці можна дізнатися на Амперці. Чому тут? Тому що там дуже багато інформації щодо роботи з Arduino.

Ну що ж, ми, мабуть, усі переглянули поверхово, вивчили і, звичайно ж, зібрали робота. Тепер його необхідно запрограмувати, ось вона – довгоочікувана програма!

І програма конвертована в Arduino IDE:

Void setup() ( pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6 , OUTPUT); ) void loop() ( if (digitalRead(12)) ( if (digitalRead(8)) ( if (digitalRead(9))) ( digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite( 6, 255);digitalWrite(7 , HIGH); ) else ( digitalWrite(4 , HIGH); analogWrite(5, 255); (9)) ( digitalWrite(4 , LOW); analogWrite(5, 50); analogWrite(6, 255); digitalWrite(7 , HIGH); ) else ( digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); ) ) ) else ( digitalWrite(4 , HIGH); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7 , HIGH); ) )

На закінчення хочу сказати, ця програма просто знахідка для освіти, навіть для самонавчання вона допоможе вивчити команди Arduino IDE. Найголовніша особливість - це те, що більше 50 значків установки, вона починає «глючити». Так, дійсно, це особливість, так як постійне програмування тільки на ArduBlok не навчить вас програмування Arduino IDE. Так званий «глюк» дає можливість замислюватись і намагатися запам'ятовувати команди для точного налагодження програм.

Бажаю успіхів.

Сергій Глушенко

В даний час у світі почався бум з використання мікроконтролерів у різних саморобках та стартапах. Справді, ціни на мікроконтролери впали, а можливості постійно зростають. Та й наші друзі, китайці, навчилися виготовляти периферію до них і продають її до того ж за смішними цінами. Але з програмуванням мікроконтролерів все не так райдужно.

З чого все почалося і як розвивалося

З моменту появи мікропроцесорів розвиток принципів роботи з ними йде шляхом зростання абстракції. Перший етап представляв програмування у машинних кодах. Програмування було складним, довгим і вимагало дуже специфічного розуму. Тому програмістів було дуже мало.

Але людина істота лінива, а ліньки, як відомо, двигун прогресу. Вигадали перший рівень абстракції - асемблер. Писати програми стало простіше та веселіше. Кількість програмістів зросла. Але все одно асемблер не дуже відрізнявся від машинних кодів.

Тож з'явився наступний рівень абстракції. Мови високого рівня. Основною метою цих мов була можливість пояснити машині, що від неї хочуть, мовою максимально наближеною до людської. Це дозволяло займатися програмуванням людям із менш специфічним складом розуму. Тому з розвитком мов високого рівня кількість програмістів зростала, і відповідно зростала кількість корисних програмякі вони створювали.

Як справи зараз

Звичайно, для початку роботи безпосередньо з контролером потрібна певна підготовка. Тобто, необхідні програматор, настроєне середовище для програмування на комп'ютері, та й, звичайно, знання мови програмування. Крім того, потрібне вміння в роботі з паяльником, розробці друкованих плат, знання в електротехніці та електроніці. Отже поріг входження в область створення власних пристроїв на мікроконтролерах залишається високим.

Крім того, для такої роботи потрібне поєднання навичок, які досить рідко зустрічаються разом. Програмісти рідко дружать із паяльником, а електронники не часто є програмістами. Для програмістів вирішили проблему створенням плати Arduino, яка дозволяє збирати пристрої без використання інструментів.

Для електронників та електриків все гірше. До останнього часу для того, щоб створити свій пристрій із застосуванням мікроконтролера, вони мали два шляхи. Або самим вивчати мову програмування "С", або просити допомоги у програміста. Обидва шляхи не найкращі. Для того щоб стати програмістом, необхідний певний склад розуму, не завжди сумісний з досвідом читання електричних схем. А знайомого програміста може опинитися під рукою.

У той же час давно існують середовища програмування, адаптовані під звичайного інженера - електронника, ну або просто електрика. Я маю на увазі середовище програмування промислових контролерів. ПЛК. Вони дозволяють створювати програмне забезпеченнядля контролерів мовами FBDі LAD. Власне, як такими мовами вони не є. Це, швидше, графічні середовища малювання принципових чи логічних схем.

FBD (Function Block Diagram)

- графічну мову програмування стандарту МЕК 61131-3. Програма утворюється зі списку ланцюгів, що виконуються послідовно зверху донизу. Під час програмування використовуються набори бібліотечних блоків. Блок (елемент) - це підпрограма, функція чи функціональний блок (І, АБО, НЕ, тригери, таймери, лічильники, блоки обробки аналогового сигналу, математичні операції та інших.). Кожен окремий ланцюг є виразом, складеним графічно з окремих елементів. До виходу блоку підключається блок, утворюючи ланцюг. Усередині ланцюга блоки виконуються строго у порядку їхнього з'єднання. Результат обчислення ланцюга записується у внутрішню змінну чи подається вихід контролера.

Ladder Diagram (LD, LAD, РКС)


- мова релейної (сходової) логіки. Синтаксис мови зручний заміни логічних схем, виконаних на релейної техніці. Мова орієнтована інженерів з автоматизації, які працюють на промислових підприємствах. Забезпечує наочний інтерфейс логіки роботи контролера, що полегшує не тільки завдання власне програмування та введення в експлуатацію, а й швидкий пошук неполадок у обладнанні, що підключається до контролера. Програма мовою релейної логіки має наочний та інтуїтивно зрозумілий інженерам-електрикам графічний інтерфейс, що представляє логічні операції, як електричний ланцюг із замкнутими та розімкненими контактами. Перебіг або відсутність струму в цьому ланцюзі відповідає результату логічної операції (істина - якщо струм тече; брехня - якщо струм не тече). Основними елементами мови є контакти, які можна уподібнити парі контактів реле або кнопки. Пара контактів ототожнюється з логічною змінною, а стан цієї пари - зі значенням змінної. Розрізняються нормально замкнуті та нормально розімкнені контактні елементи, які можна зіставити з нормально замкнутими та нормально розімкненими кнопками в електричних ланцюгах.

Такий підхід виявився дуже зручним для легкого входження у розробку систем АСУ інженерів-електриків та електронників. Розробляючи проекти установок, могли легко прив'язати роботу цих установок до алгоритмів роботи контролера. В обслуговуванні цих установок на об'єкті також краще, коли існуючий обслуговуючий персонал може легко перевірити роботу системи АСУ, знайти проблему. І при цьому немає необхідності викликати по кожній дрібниці програміста з «Центру». І це підхід себе виправдав. На сьогоднішній день майже всі системи промислової автоматики створені за допомогою таких засобів розробки.

Таке середовище розробки має Siemens, ABB, Schneider Electric… та й практично у всіх виробників ПЛК. Здавалося б, ідеальне рішення для любителів саморобок. Але, як завжди, є «але». Всі ці середовища програмування прив'язані до промислових контролерів певного виробника. І ціни на ці контролери мало надихають. Дуже рідко який сімейний бюджет дозволить придбати контролер ціною кілька десятків тисяч рублів.

Натомість плати Arduino ідеально підходять для саморобів та кулібіних, на яких наша країна завжди була, є і буде багата. Але знову «але». Програмуються ці плати мовою C. Для більшості цих найрозумніших людей, з дуже прямими руками, що ростуть із належного місця, мова С. це китайська абетка. Вони можуть придумати, намалювати, зібрати, налагодити та запустити найскладніші схеми, але If, For, Case, Void тощо. – це не для них. Звичайно, можна почитати інструкції в інтернеті, погратися якийсь час, блимати світлодіодом за допомогою прикладу. Але для більш серйозного застосування потрібне детальне вивчення мови. А навіщо їм це?

Вони не збираються бути професійними програмістами. Вони мають інший шлях. Вони щось вигадали. Так, це простіше та красивіше зібрати за допомогою мікроконтролера, але стає для цього програмістом, витративши місяці на вивчення мови? Ні звичайно. Збирають по-старому, простіше, звичайно, але у своїй області.

На підставі всіх цих викладок і було створено проект FLProg. Основна ідея проекту – поєднати принципи промислового програмування з дешевизною та зручністю Arduino. Проект пропонує новий рівень абстракції з досить сміливою заявою

Щоб програмувати мікроконтролери, не обов'язково знати мови програмування!

В результаті вийшов інструмент, що дозволяє створювати свої проекти на Arduino будь-якій людині, яка знайома з електротехнікою та електронікою, що дозволяє створити свій виріб з використанням даних плат.

Проект складається із двох частин.

Перша частина - це десктоп-додаток FLProg, що є графічним середовищем програмування плат Arduino.

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

Ось список плат Arduino, що підтримуються програмою на сьогоднішній день:

Arduino Diecimila
Arduino Duemilanove
Arduino Leonardo
Arduino Lilypad
Arduino Mega 2560
Arduino Micro
Arduino Mini
Arduino Nano (ATmega168)
Arduino Nano (ATmega328)
Arduino Pro Mini
Arduino Pro (ATmega168)
Arduino Pro (ATmega328)
Arduino Uno

Незабаром очікується поповнення у сімействі підтримуваних плат. Arduino Due вже в дорозі, а плату Intel Galileo (gen.2) обіцяв надати керівник лабораторії інтернету речей при Санкт-Петербурзькому Державному університеті телекомунікацій ім. проф. М.А. Бонч-Бруєвича. Згодом у міру придбання планується підтримка плат заснованих на контролерах STM.

Проект FLProg являє собою набір плат, на кожній з яких зібраний закінчений модуль загальної схеми. Для зручності роботи кожна плата має найменування та коментарі. Також кожну плату можна згорнути (для економії місця в робочій зоні, коли роботу над нею закінчено) і розгорнути. Червоний індикатор у найменуванні плати свідчить про те, що у схемі плати є помилки.

У правій частині робочої зони розташована бібліотека елементів. У схему елементи переносяться простим перетягуванням. При подвійному натисканні елемента буде показана інформація про нього.

Ось список доступних блоків на сьогоднішній день.

Базові елементи



Спеціальні блоки

Тригери



Таймери


Лічильники


Математика



Алгебра




Порівняння

Com-порт

Send
SendVariable
ReceiveVariable

Перемикач


Мотори

ServoMotor
StepMotor

Годинник реального часу


Дисплеї

Дисплей на чіпі НD44780
Підсвічування дисплея на чіпі НD44780 I2C

Рядки

Складання рядків

Датчики



SD карта

Запис змінної на карту SD
Вивантаження файлу з карти SD

Конвертація типів

Перетворення рядків

Мікросхеми розширень

Розширювач висновків 74HC595

Операції з бітами

Шифратор
Дешифратор
Читання біта
Запис битий

Різне

Матрична клавіатура
П'єзодинамік

Запис у EEPROM
Читання з EEPROM

Комунікації

Сенсором
ResitiveVariableFromCommunication
WebServerPage
WebClient

Базові блоки

Контакт
Котушка
Захист від брязкоту
Виділення переднього фронту

Спеціальні реле

Двостабільне реле
Реле часу
Генератор
Реле порівняння

Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM

Аналогові блоки

Масштабування
Математика
Лічильник
Аналоговий перемикач
Перемикач багато до одного
Перемикач один до багатьох
Аналоговий вхід контролера
Аналоговий вихід контролера
Вхід аналогового з'єднувача
Вихід аналогового з'єднувача
Швидкісний лічильник

CommPort

Передача в ComPort
Передача змінної через Comm port
Прийом змінної через Comm port

Мотори

Сервомотор
Кроковий двигун

Годинник реального часу

Отримати дані
Будильник
Встановлення часу

Дисплеї

Дисплей на чіпі HD44780
Блок управління підсвічуванням дисплея на чіпі HD4480 I2C
Блок декодування семисегментного індикатора

Рядки

Складання рядків

Датчики

Ультразвуковий далекомір HC-SR04
Датчик температури та вологості DHT11 (DHT21, DHT22)
Датчик температури DS18x2x
IR Ressive
BMP-085

SD карта

Запис змінної на карту SD
Вивантаження файлу з карти SD

Конвертування типів

Конвертація рядків
Перетворення Float на Integer

Мікросхеми розширень

Розширювач висновків 74HC595

Операції з бітами

Шифратор
Дешифратор
Читання біта
Запис битий

Різне

Матрична клавіатура
П'єзодинамік

Запис у EEPROM
Читання з EEPROM

Комунікації

Блок відправки змінної через комунікації
Прийом змінної через комунікації
Сторінка Web сервера
Web клієнт

В даний час ведеться розробка функціональних блоків для роботи з три-осьовим гіроскопом, люксометром та іншими датчиками і сенсорами. Також ведеться робота над організацією обміну даними через блютуз, радіоканал та інтерфейс RS-485. У подальших планах. розробка SCADA-системи для організації інтерфейсу систем, розроблених у програмі FLProg на персональному комп'ютері чи графічних дисплеях.

Список периферійного обладнання, яке підтримується програмою, доступний на сайті проекту за посиланням:

Для частини обладнання в розділі на сайті присутні оглядові статті, що полегшують розуміння його застосування в програмі.

У верхній частині робочої зони розташований список тегів (змінних та входів виходів) (FBD) або встановленого обладнання (LAD). Теги або обладнання переносяться на схему простим перетягуванням.

Після завершення роботи над проектом провадиться його компіляція. Після компіляції автоматично відкриється програма Arduino 1.5.7 із завантаженим скетчем вашого проекту. У програмі "Arduino IDE 1.5.7" вам необхідно буде вказати номер COM-порту, до якого підключено ваш контролер, вибрати його тип, і зробити заливку скетчу в контролер. Докладніше про програму "Arduino IDE 1.5.7" можна почитати на сайті Arduino.ru.

Де завантажити FLProg?

У рамках проекту існує сайт http://flprog.ru. Основне завдання сайту – дати можливість користувачам завантажити останню версіюпрограми, дізнатися про нововведення та зміни.

Завантажити програму можна без реєстрації на сайті, але для зареєстрованих користувачів функціонал сайту помітно розширюється. Реєстрація дуже проста і вимагає лише підтвердження електронної пошти. Жодних інших даних при цьому вводити не потрібно.

На сторінці завантаження програми завжди доступні дві версії: інсталятор та портативна версія, яка не потребує встановлення. Якщо можливо, я також викладаю файл оновлень значно меншого розміру, що дозволяє оновити попередню версію.

Також на сторінці завантаження можна переглянути список нововведень та виправлених помилок для цієї версії та перейти до архіву попередніх версій.

В останні роки гуртки програмування та робототехніки стали вкрай популярними та доступними навіть для учнів. початкової школи. Це стало можливим завдяки застосуванню графічних середовищ програмування, які, слід зазначити, активно використовуються і великими компаніями. Щоб розповісти про графічні середовища програмування, ми вибрали три найбільш популярні з них.

Visuino – це безкоштовне графічне середовище, що працює на базі сумісних з Arduino промислових контролерів (ПЛК) Controllino. Вона дає можливість створення складних систем автоматизації та рішень IoT (Internet of Things, інтернету речей), причому зробити це можна, просто переміщуючи та з'єднуючи візуальні блоки. Програмне середовище автоматично генерує код для промислових контролерів.

Отже, що треба зробити. Вибираємо компоненти (модулі) з панелі компонентів та переміщуємо їх у область проектування. Потім їх необхідно з'єднати та налаштувати властивості. Це робиться за допомогою інспектора об'єктів.

До плюсів Visuino відноситься великий набір компонентів для математичних та логічних функцій, сервоприводів, дисплеїв, інтернету та ін.

Коли ПЛК запрограмовано, графічне середовище нагадує доступний спосібпідключення до контролера. Це може бути послідовний порт, Ethernet, Wi-Fi чи GSM.

Нарешті, ваш проект готовий: всі контролери прописані, все працює. Тепер, натиснувши на Arduino логотип, розташований на верхній панеліВи змусите Visuino створити коди для Arduino і відкрити середовище його розробки (Arduino IDE), через яке вже можна скомпілювати код і завантажити його в ПЛК.

Порада. Якщо встановлена ​​плата не відповідає вашому Arduino, можна змінити її за допомогою команди «Select Board» (Вибрати панель).

Це графічне середовище програмування було створено у 2003 році, коли група співробітників MIT Media Lab вирішила розробити мову програмування, доступну абсолютно для всіх. Через війну публіці був представлений Scratch.

Найбільше він, мабуть, схожий на Lego. Принаймні принцип той самий: це об'єктно орієнтоване середовище, в якому програми збираються з деталей, різнокольорових та яскравих. Ці деталі можна переміщати, видозмінювати, змушувати взаємодіяти по-різному. Основа Scratch - блоки команд, таких як сенсори, змінні, рух, звук, оператори, зовнішність, перо, контроль та ін. графічний редактордає можливість намалювати будь-який об'єкт. Не минуло й п'яти років з моменту створення Scratch, як виник проект Scratch для Arduino (скорочено – S4A), що дозволяє програмувати ПЛК Arduino.

До плюсів системи відноситься те, що вона русифікована і повністю локалізована - будь-хто знайдемо безліч даних по ній. Крім того, робота в даному графічному середовищі є доступною навіть для школярів молодших класів, які навіть ще не надто впевнено читають.

Порада. Для новачків у Scratch існує спеціальний ресурс: https://scratch-ru.info.

Коли людина вже повністю освоїв Scratch, але ще не доріс до Wiring, на якому програмуються Arduino-сумісні плати, саме час порадити йому написаний Java інструмент ArduBloсk. Особливо гарний він для тих, хто захоплюється робототехнікою.

У чому різниця? Справа в тому, що Scratch не вміє прошивати Arduino, він лише керує його ПЛК через USB. Таким чином, Arduino не може працювати сам собою, адже він залежить від комп'ютера.

По суті, ArduBloсk - це проміжний етап між дитячою Scratch і цілком професійною, хоч і доступною Visuino, оскільки так само, як остання, має можливість перепрошивки Arduino-сумісних контролерів.

Порада. Не забудьте встановити на свій ПК Java-машину. Це не займе багато часу.

Отже, більше графічних середовищ - добрих та різних. Хай буде з вами Arduino.

Фото: компанії-виробники, pixabay.com Чи захоплюєтеся Ви програмуванням? Так, я програміст Так, це дуже цікава справа Я не захоплююсь, але моя дитина - так Ні, мені це не цікаво Переглянути результати Завантаження … Читайте також:

Міні-ПК Raspberry Pi 3 Model B+ зможе стати центром «розумного» будинку



Розповісти друзям