Синтаксис на Arduino. Програмни езици

Въведение

Freeduino/Arduino е програмиран на специален език за програмиране - базиран е на C/C++ и ви позволява да използвате всяка негова функция. Строго погледнато, няма отделен език на Arduino, точно както няма компилатор на Arduino - написаните програми се преобразуват (с минимални промени) в програма C / C ++ и след това се компилират от компилатора AVR-GCC. Така че всъщност се използва C / C ++ вариант, специализиран за AVR микроконтролери.

Разликата е, че получавате проста среда за разработка и набор от основни библиотеки, които улесняват достъпа до периферните устройства "на борда" на микроконтролера.

Съгласете се, много е удобно да започнете да работите със сериен порт със скорост от 9600 бита в секунда, извършвайки повикване в един ред:

Serial.begin(9600);

И когато използвате "гол" C / C ++, ще трябва да се справите с документацията за микроконтролера и да извикате нещо подобно:

UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8;
UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1);
sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0);
sbi(UCSR0B, RXCIE0);

Ето кратък преглед на основните функции и функции Програмиране на Arduino. Ако не сте запознати със синтаксиса на езиците C/C++, съветваме ви да се обърнете към всяка литература по този въпрос или източници в Интернет.

От друга страна, всички представени примери са много прости и най-вероятно няма да имате затруднения да разберете изходните текстове и да напишете свои собствени програми дори без да четете допълнителна литература.

По-пълна документация английски език) е представен на официалния сайт на проекта - http://www.arduino.cc. Има и форум, връзки към допълнителни библиотеки и тяхното описание.

По аналогия с описанието на официалния уебсайт на проекта Arduino, "портът" се отнася до контакта на микроконтролера, изведен към конектора под съответния номер. Освен това има сериен порт за данни (COM порт).

Структура на програмата

Във вашата програма трябва да декларирате две основни функции: setup() и loop().

Функцията setup() се извиква веднъж, след всяко включване или нулиране на платката Freeduino. Използвайте го за инициализиране на променливи, задаване на режими на цифров порт и т.н.

Функцията loop() последователно изпълнява командите, описани в нейното тяло, отново и отново. Тези. след като функцията приключи, тя ще бъде извикана отново.

Да вземем прост пример:

void setup() // първоначални настройки
{
beginSerial(9600); // задава скорост на серийния порт на 9600 bps
pinMode(3, INPUT); // настройка на 3-ти порт за въвеждане на данни
}

// Програмата проверява 3-тия порт за сигнал на него и изпраща отговор до
// като текстово съобщение до серийния порт на компютъра
void loop() // тяло на програмата
{
if (digitalRead(3) == HIGH) // условие за запитване на порт 3
serialWrite("H"); // изпращане на съобщение под формата на буквата "H" до COM порта
друго
serialWrite("L"); // изпращане на съобщение под формата на буквата "L" до COM порта
забавяне (1000); // забавяне 1 сек.
}

pinMode(порт, режим);

Описание:

Конфигурира посочения порт за въвеждане или извеждане на сигнал.

Настроики:

port – номер на порта, чийто режим искате да зададете (цело число от 0 до 13).

режим - или INPUT (вход), или OUTPUT (изход).

pinMode(13, ИЗХОД); //13-ият щифт ще бъде изходът
pinMode(12, INPUT); //и 12-тото е входът

Забележка:

Аналоговите входове могат да се използват като цифрови входове/изходи, когато са достъпни чрез номера 14 (аналогов вход 0) до 19 (аналогов вход 5)

digitalWrite(порт, стойност);

Описание:

Задава нивото на напрежение на високо (HIGH) или ниско (LOW) на посочения порт.

Настроики:

порт: номер на порт

стойност: ВИСОКА или НИСКА

digitalWrite(13, HIGH); // задаване на пин 13 в състояние "високо".

стойност = digitalRead(порт);

Описание:

Чете стойност на посочения порт

Настроики:

порт: номер на запитван порт

Върната стойност: връща текущата стойност на порта (HIGH или LOW) от тип int

int стойност;
val = digitalRead(12); // анкета на 12-ия изход

Забележка:

Ако нищо не е свързано към порта за четене, тогава функцията digitalRead() може произволно да върне HIGH или LOW.

Аналогов вход/изход сигнал

стойност = analogRead(порт);

Описание:

Чете стойност от посочения аналогов порт. Freeduino съдържа 6 канала, 10 битови A/D преобразуватели всеки. Това означава, че входно напрежение от 0 до 5 V се преобразува в цяло число от 0 до 1023. Разделителната способност на четене е: 5 V/1024 стойности = 0,004883 V/стойност (4,883 mV). Необходими са приблизително 100 ns (0,0001 S), за да се прочете аналоговата входна стойност, така че максималната скорост на прочитане е приблизително 10 000 пъти в секунда.

Настроики:

Върната стойност: Връща int в диапазона от 0 до 1023, прочетено от посочения порт.

int стойност;
val = analogRead(0); // четене на стойност на аналогов вход 0

Забележка:

Аналоговите портове са вход за сигнал, дефиниран по подразбиране и, за разлика от цифровите портове, не е необходимо да се конфигурират чрез извикване на функцията pinMode.

analogWrite(порт, стойност);

Описание:

Извежда аналогова стойност към порта. Тази функция работи на: 3, 5, 6, 9, 10 и 11 Freeduino цифрови портове.

Може да се използва за промяна на яркостта на светодиода, за управление на двигателя и др. След извикване на функцията analogWrite, съответният порт ще работи в режим PWM до следващото извикване на функцията analogWrite (или функциите digitalRead / digitalWrite на същия порт).

Настроики:

порт: номер на запитвания аналогов вход

стойност: цяло число между 0 и 255. Стойност 0 генерира 0 V на посочения порт; стойност 255 генерира +5 V на посочения порт. За стойности между 0 и 255, портът бързо ще се променя между 0 и +5V - колкото по-висока е стойността, толкова по-често портът генерира HIGH (5V).

analogWrite(9, 128);// задава щифт 9 на стойност, еквивалентна на 2,5 V

Забележка:

Не е необходимо да извиквате функцията pinMode, за да настроите порта да се закрепи, преди да извикате функцията analogWrite.

Честотата на генериране на сигнала е приблизително 490 Hz.

време = millis();

Описание:

Връща броя милисекунди, откакто Freeduino изпълни текущата програма. Броячът ще препълни и ще се нулира след приблизително 9 часа.

Върната стойност: връща стойност от тип unsigned long

неподписан дълго време; // деклариране на времевата променлива от тип unsigned long
време = millis(); // предаване на броя милисекунди

забавяне (време_ms);

Описание:

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

Настроики:

time_ms – време на забавяне на програмата в милисекунди

забавяне (1000); //пауза 1 секунда

забавяне Микросекунди

забавяне Микросекунди(време_µs);

Описание:

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

Настроики:

time_µs – време на забавяне на програмата в микросекунди

забавяне Микросекунди (500); //пауза 500 микросекунди

pulseIn(порт, стойност);

Описание:

Чете импулс (висок или нисък) от цифров порт и връща продължителността на импулса в микросекунди.

Например, ако параметърът "value" е зададен на HIGH при извикване на функцията, тогава pulseIn() изчаква портът да получи високо ниво на сигнала. От момента, в който пристигне, започва обратното броене, докато пристанището получи ниско нивосигнал. Функцията връща дължината на импулса ( високо ниво) в микросекунди. Работи с импулси от 10 микросекунди до 3 минути. Имайте предвид, че тази функция няма да върне резултат, докато не бъде открит импулс.

Настроики:

порт: номер на порта, от който четем импулса

стойност: импулсен тип HIGH или LOW

Върната стойност: връща продължителността на импулса в микросекунди (тип int)

int продължителност; // декларация на променливата duration от тип int
продължителност = pulseIn(pin, HIGH); // измерване на продължителността на импулса

Серийна комуникация

Freeduino има вграден сериен контролер, който може да се използва за комуникация между устройства Freeduino/Arduino или към компютър. На компютър съответната връзка е представена от USB COM порт.

Комуникацията се осъществява на цифрови портове 0 и 1 и следователно не можете да ги използвате за цифров вход/изход, ако използвате функциите за серийни данни.

Serial.begin(скорост на предаване);

Описание:

Задава скоростта на предаване COM портбитове в секунда за сериен трансфер на данни. За да комуникирате с компютър, използвайте една от следните стандартни скорости: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200. Можете също така да посочите други скорости, когато комуникирате с друг микроконтролер чрез портове 0 и 1.

Настроики:

скорост на предаване на данни в битове за секунда.

Serial.begin(9600); //задайте скоростта на 9600 bps

сериен.наличен

count = serial.available();

Описание:

Байтовете, получени през серийния порт, влизат в буфера на микроконтролера, откъдето вашата програма може да ги прочете. Функцията връща броя байтове, натрупани в буфера. Серийният буфер може да съхранява до 128 байта.

Върната стойност:

Връща int стойност, броя байтове, налични за четене в серийния буфер, или 0, ако нищо не е налично.

if (Serial.available() > 0) ( // Ако има данни в буфера
// тук трябва да се получават и обработват данни
}

char = Serial.read();

Описание:

Чете следващия байт от серийния буфер.

Върната стойност:

Първият наличен байт входящи данни от серийния порт или -1, ако няма входящи данни.

incomingByte = Serial.read(); // четене на байт

Описание:

Изчиства входния буфер на серийния порт. Буферираните данни се губят и по-нататъшните извиквания на Serial.read() или Serial.available() ще имат смисъл за данните, получени след извикването на Serial.flush().

Serial.flush(); // Изчистете буфера - започнете да получавате данни "от нулата"

Описание:

Извеждане на данни към сериен порт.

Настроики:

Функцията има няколко форми за извикване в зависимост от типа и формата на изходните данни.

Serial.print(b, DEC) отпечатва ASCII низ, десетичното представяне на b.

int b = 79;

Serial.print(b, HEX) отпечатва ASCII низ, шестнадесетичното представяне на числото b.

int b = 79;

Serial.print(b, OCT) отпечатва ASCII низ, осмичното представяне на числото b.

int b = 79;
сериен печат (b, oct); //ще изведе низа "117" към порта

Serial.print(b, BIN) отпечатва ASCII низ, двоичното представяне на числото b.

int b = 79;
Serial.print(b, BIN); //ще изведе низа "1001111" към порта

Serial.print(b, BYTE) отпечатва малкия байт на b.

int b = 79;
Serial.print(b, BYTE); //отпечатва числото 79 (един байт). В монитора
//сериен порт получаваме знака "O" - негов
//кодът е 79

Serial.print(str) ако str е низ или масив от символи, изпраща str към COM порта байт по байт.

char байтове = (79, 80, 81); //масив от 3 байта със стойности 79,80,81
Serial.print("Ето нашите байтове:"); //отпечатва низа "Ето нашите байтове:"
Сериен печат (байтове); //извежда 3 знака с кодове 79,80,81 -
//това са знаците "OPQ"

Serial.print(b) ако b е от тип byte или char, отпечатва самото число b на порта.

charb = 79;
Сериен печат (b); //ще издаде знака "O" към порта

Serial.print(b) ако b е цяло число, отпечатва десетичното представяне на b към порта.

int b = 79;
Сериен печат (b); //ще изведе низа "79" към порта

Описание:

Функцията Serial.println е подобна на функцията Serial.print и има същите опции за извикване. Единствената разлика е, че след данните се извеждат два допълнителни знака - връщане на каретка (ASCII 13 или "\r") и знак за нов ред (ASCII 10 или "\n").

Пример 1 и пример 2 ще изведат едно и също нещо към порта:

int b = 79;
Serial.print(b, DEC); //ще изведе низа "79" към порта
Serial.print("\r\n"); //ще покаже знаците "\r\n" - нов ред
Serial.print(b, HEX); //ще изведе низа "4F" към порта
Serial.print("\r\n");//ще отпечата знаците "\r\n" - нов ред

int b = 79;
Serial.println(b, DEC); //ще изведе низа "79\r\n" към порта
Serial.println(b, HEX); //ще изведе низа "4F\r\n" към порта

В монитора на серийния порт получаваме.

Здравейте! Аз съм Аликин Александър Сергеевич, учител по допълнително образование, ръководя кръгове „Роботика“ и „Радиотехника“ в Централния детски и младежки театър на Лабинск. Бих искал да поговоря малко за опростен начин за програмиране на Arduino с помощта на програмата ArduBloсk.

Въведох тази програма в образователния процес и съм доволен от резултата, тя е в особено търсене сред децата, особено при писане на прости програми или за създаване на начален етап на сложни програми. ArduBloсk е графична среда за програмиране, т.е. всички действия се извършват с нарисувани картини с подписани действия на руски език, което значително опростява изучаването на платформата Arduino. Децата от 2-ри клас могат лесно да овладеят работата с Arduino благодарение на тази програма.

Да, някои може да кажат, че Scratch все още съществува и също така е много проста графична среда за програмиране на Arduino. Но Scratch не флашва Arduino, а само го контролира с помощта на USB кабел. Arduino зависи от компютъра и не може да работи автономно. Когато създавате свои собствени проекти, автономността на Arduino е основното нещо, особено когато създавате роботизирани устройства.

Дори добре познатите LEGO роботи, като NXT или EV3, вече не са толкова интересни за нашите ученици с навлизането на програмата ArduBloсk в програмирането на Arduino. Освен това Arduino е много по-евтин от всички LEGO дизайнери и много компоненти могат просто да бъдат взети от стара потребителска електроника. Програмата ArduBloсk ще помогне не само на начинаещи, но и на активни потребители на платформата Arduino в тяхната работа.

И така, какво е ArduBlock?Както казах, това е среда за графично програмиране. Почти изцяло преведен на руски. Но в ArduBloсk акцентът не е само това, но и фактът, че програмата ArduBloсk, написана от нас, се преобразува в код Arduino IDE. Тази програма е вградена в средата за програмиране Arduino IDE, т.е. тя е плъгин.

По-долу е даден пример за мигащ светодиод и преобразувана програма в Arduino IDE. Цялата работа с програмата е много проста и всеки ученик може да я разбере.


В резултат на работата по програмата можете не само да програмирате Arduino, но и да изучавате команди, които са неразбираеми за нас в текстовия формат на Arduino IDE, но ако сте твърде мързеливи, за да пишете стандартни команди, трябва бързо да скицирате извадете проста програма в ArduBlok с бърза манипулация с мишката и я отстранете в Arduino IDE.

За да инсталирате ArduBlok, първо трябва да изтеглите и инсталирате Arduino IDE от официалния уебсайт на Arduino и да разберете настройките, когато работите с Ардуино платка UNO. Как да направите това е описано на същия сайт или в Amperk, или погледнете в YouTube. Е, когато разбрахте всичко това, трябва да изтеглите ArduBlok от официалния уебсайт тук. Не препоръчвам да теглите най-новите версии, те са много трудни за начинаещи, но версията от 2013-07-12 е най-важната, този файл е най-популярният там.

След това преименуваме изтегления файл на ardublock-all и в папката „документи“. Създайте следните папки: Arduino > tools > ArduBlockTool > tool и в последната хвърляме изтегления и преименуван файл. ArduBlok работи за всички операционна системаааа, даже и на линукс, аз лично го тествах на XP, Win7, Win8, всички примери са за Win7. Инсталацията на програмата е еднаква за всички системи.


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

За да работите в ArduBlok, трябва да стартирате Arduino IDE. След това отиваме в раздела Инструменти и там намираме елемента ArduBlok, кликваме върху него - и ето го нашата цел.


Сега нека да разгледаме интерфейса на програмата. Както вече разбрахте, в него няма настройки, но има много икони за програмиране и всяка от тях носи команда в текстовия формат на Arduino IDE. В новите версии има още повече икони, така че се справете с ArduBlok последна версиятрудно и някои от иконите не са преведени на руски.


В раздел „Управление“ ще открием разнообразие от цикли.


В секцията „Портове“ можем да управляваме стойностите на портовете, както и на звуковия излъчвател, серво машината или ултразвуковия сензор за близост, свързани към тях.


В секцията „Числа / Константи“ можем да изберем цифрови стойности или да създадем променлива, но е малко вероятно да използвате тази по-долу.


В раздела "Оператори" ще намерим всички необходими оператори за сравнение и изчисление.


Разделът Помощни програми използва предимно икони с течение на времето.


"TinkerKit Bloks" е разделът за закупени сензори TinkerKit. Разбира се, ние нямаме такъв комплект, но това не означава, че иконите няма да работят за други комплекти, напротив, много е удобно за момчетата да използват икони като включване на светодиод или бутон . Тези знаци се използват в почти всички програми. Но те имат една особеност - когато са избрани, има неправилни икони, указващи портове, така че те трябва да бъдат премахнати и да се замени иконата от секцията "числа / константи", най-горната в списъка.


"DF Robot" - този раздел се използва, ако има посочени сензори в него, понякога се намират. И днешният ни пример не е изключение, имаме "Регулируем IR превключвател" и "Сензор за линия". "Сензорът за линия" е различен от този на снимката, тъй като е от Амперка. Действията им са идентични, но сензорът от Amperka е много по-добър, тъй като има регулатор на чувствителността.


Seeedstudio Grove - Никога не съм използвал сензорите на този раздел, въпреки че има само джойстици. Този раздел е разширен в нови версии.


И последният раздел е „Linker Kit“. Представените в него сензори не ми попаднаха.

Бих искал да покажа пример за програма на робот, движещ се по лентата. Роботът е много прост, както при сглобяване, така и при придобиване, но на първо място. Нека започнем с неговото придобиване и сглобяване.

Ето самия комплект части, всичко е закупено от уебсайта на Amperka.


  1. AMP-B001 Motor Shield (2 канала, 2 A) 1 890 рубли
  2. AMP-B017 Troyka Shield 1690 рубли
  3. AMP-X053 Отделение за батерия 3×2 AA 1 60 RUB
  4. AMP-B018 Линеен сензор цифров 2 580 RUB
  5. ROB0049 Двуколесна платформа miniQ 1 1890 RUB
  6. SEN0019 Инфрачервен сензор за препятствия 1 390 RUB
  7. FIT0032 Стойка за инфрачервен сензор за препятствия 1 90 RUB
  8. A000066 Arduino Uno 1 1150 RUB


Като начало ще сглобим платформата на колелата и ще запоим проводниците към двигателите.


След това монтираме стелажите за монтиране на дъската Arduino UNO, които са взети от старите дънна платкаили други подобни прикачени файлове.


След това монтираме платката Arduino UNO на тези стелажи, но няма да можем да затегнем нито един болт - конекторите ни пречат. Можете, разбира се, да ги запоите, но зависи от вас.


Закрепете след това инфрачервен сензорпрепятствия на специалната му опора. Моля, обърнете внимание, че контролът на чувствителността е отгоре, това е за по-лесно регулиране.



Сега инсталираме цифрови линейни сензори, тук трябва да потърсим няколко болта и 4 гайки за тях.Инсталираме две гайки между самата платформа и линейния сензор и фиксираме сензорите с останалите.


Следващата инсталация на Motor Shield или по друг начин можете да извикате драйвера на двигателя. В нашия случай обърнете внимание на джъмпера. Няма да използваме отделно захранване за двигателите, така че е инсталирано в тази позиция. Долната част е уплътнена с тиксо, за да няма случайно късо съединение от USB конектора на Arduino UNO, за всеки случай.



Инсталирайте Troyka Shield върху моторния щит. Необходимо е за удобство при свързване на сензори. Всички сензори, които използваме са цифрови, така че линейните сензори са свързани към портове 8 и 9, както се наричат ​​още щифтове, а инфрачервеният сензор за препятствия е свързан към порт 12. Не забравяйте да отбележите, че не можете да използвате портове 4, 5, 6, 7, тъй като те се използват от Motor Shield за управление на двигателите. Дори специално нарисувах тези портове с червен маркер, за да могат учениците да го разберат.


Ако вече сте забелязали, добавих черен ръкав, за всеки случай, така че отделението за батерии, което поставихме, да не излети. И накрая, фиксираме цялата конструкция с обикновена гумена лента.

Връзките на отделението за батерии могат да бъдат 2 вида. Първа жична връзка към Тройка Шилд. Възможно е също така да запоите захранващия щепсел и да го свържете към Ардуино платка UNO.



Ето нашия робот готов. Преди да започнете да програмирате, ще трябва да научите как работи всичко, а именно:
- Мотори:
Порт 4 и 5 се използват за управление на единия двигател, а 6 и 7 - на другия;
Регулираме скоростта на въртене на двигателите с PWM на портове 5 и 6;
Напред или назад чрез сигнални портове 4 и 7.
- Сензори:
Ние всички сме цифрови, така че те дават логически сигнали под формата на 1 или 0;
А за да се регулират имат специални регулатори и с помощта на подходяща отвертка се калибрират.

Подробности можете да намерите в Amperka. Защо тук? Тъй като има много информация за работа с 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); analogWrite(6, 50); digitalWrite(7 , LOW); ) ) else ( if (digitalRead) (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. Така нареченият "бъг" позволява да мислите и да се опитвате да запомните команди за прецизно отстраняване на грешки в програмите.

Пожелавам ти успех.

28 09.2016

Мислили ли сте да улесните живота си? За да има неща, които да решават ежедневни, рутинни задачи вместо вас. Умно устройство, което би полезна функция, например, поливаше градината, почистваше стаята, носеше товара. Тези задачи могат да бъдат решени. Но самото закупуване няма да е достатъчно. Всеки индустриален логически контролер или микросхема се нуждае от „мозък“, за да изпълни определена последователност от действия. В нашия случай езикът за програмиране Arduino е подходящ за извършване на операции.

От тази статия ще научите:

Поздрави приятели! За тези, които не ме познават, казвам се Семьон Гридин. Можете да прочетете за мен. Днешната статия ще бъде посветена на две основни програми, без които няма да имаме по-нататъшно движение и взаимно разбиране.

Общо описание на езиците за програмиране

Както писах по-горе, ще разгледаме две популярни среди за разработка. По аналогия с, могат да бъдат разделени на графичен редактор и „интелигентен бележник“. Това са програмите Arduino IDE и FLprog.


Основата на средата за разработка е обработка / окабеляване - това е обичайният C ++, допълнен с функции и различни библиотеки. Има няколко версии за работа windows системи, Mac OS и Linux.

Каква е тяхната фундаментална разлика? Arduino IDE е среда за разработка, която описва програмния код. И FLprog е подобен на CFC CoDeSyS, който ви позволява да рисувате диаграми. Коя среда е най-добра? И двете са добри и удобни по свой начин, но ако искате да се занимавате сериозно с контролерите, най-добре е да научите езици като C. Основното им предимство е гъвкавостта и неограничеността на алгоритъма. Наистина харесвам Arduino IDE.

Описание на Arduino IDE

Дистрибуцията може да бъде изтеглена от официален сайт. Изтеглете архива, отнема малко повече от 100 mb. Инсталацията е стандартна, както всички приложения за Windows. В пакета трябва да има инсталирани драйвери за всички видове платки. Ето как изглежда работният прозорец на програмата.

сряда Разработка на Arduinoвключва:

  • редактор на кодове;
  • зони за съобщения;
  • прозорци за извеждане на текст;
  • ленти с инструменти с бутони за често използвани команди;
  • множество менюта

Настройки на Arduino IDE

Извиква се програма, написана в средата за разработка Arduinoскица. Скицата е написана в текстов редактор, който има цветно осветяване на генерирания програмен код. Пример за проста програма на снимката по-долу.

Допълнителна функционалност може да се добави сбиблиотеки,който е специално разработен код. По принцип това е в достъпа, затворен от разработчика. Средата обикновено идва със стандартен набор, който може да се добавя с течение на времето. Те са в поддиректориятабиблиотекиАрдуино директория.

Много библиотеки се доставят с примери, разположени в папкатапример.Избирането на библиотека от менюто ще добави към източниклинии:

Ардуино

#включи

#включи

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

След като свързахме електронната платка към компютъра. Извършваме следните настройки - избираме платката Arduino и Com порта, през който ще се свързваме.

Ардуино

void setup() ( // инициализиране на цифров пин 13 като изход. pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000 );

void setup()(

// инициализиране на цифров пин 13 като изход.

pinMode(13, ИЗХОД) ;

void loop()(

digitalWrite (13, ВИСОКО) ;

забавяне (1000);

digitalWrite (13, НИСКО) ;

забавяне (1000);

Така че, между другото, е удобно да проверите производителността на платката, която идва от магазина. Бързо и лесно.

Има още едно удобно нещо. Нарича сеСериен монитор (Сериен монитор). Показва данните, изпратени до платформатаАрдуино.Обикновено гледам какви сигнали ми дават разни сензори свързани към платката.


Свързване на библиотеки

Съществуват различни начиниза добавяне на персонализирани функции. Има три начина за включване на библиотеки:

  1. Използване на Library Manager
  2. Чрез импортиране като .zip файл
  3. Инсталиране ръчно.

1. Използване на Library Manager.В работния прозорец на програмата изберете раздела Скица. След това щракнете върху бутона Добавяне на библиотека. Управителят на библиотеката ще отвори пред нас. Прозорецът ще покаже вече инсталирани файлове с подписинсталиран,и такива, които могат да бъдат инсталирани.

2. Чрез импортиране като .zip файл.Често в интернет можете да намерите библиотечни файлове, опаковани в архиви с разширение zip. Той съдържа .h заглавен файл и .cpp кодов файл. По време на инсталацията не е необходимо да разопаковате архива. Достатъчно е в менюто Sketch - Connect Library - Add .ZIP library

3.Ръчен монтаж.Първо затворете Програма Ардуино IDE. Първо разопаковаме нашия архив. И прехвърляме файлове с разширение .h и .cpp в папка със същото име като архива. Пускаме папката в основната директория.

Моите документи\Arduino\библиотеки

Описание на FLPprog

FLprog е безплатен проект на трета страна, който ви позволява да работите с функционални блокове, или със стълбовидни диаграми. Тази среда е удобна за хора - не за програмисти. Позволява ви визуално и визуално да видите алгоритъма с помощта на диаграми и функционални блокове. Дистрибуцията може да бъде изтеглена от официален сайт.


От доста време следя проекта. Момчетата се развиват, непрекъснато добавят нова функционалност и променят старата. Виждам перспективи в тази среда. Тъй като изпълнява две важни функции:простота и лекота на използване.

Нека се опитаме да създадем прост проект с вас. Ще превключим изход 13 към светодиода.

Създаваме нов проект. В горния прозорец добавете точно количествовходове и изходи, задайте име и задайте физически вход или изход на платката.


Изваждаме елементите, от които се нуждаем, от дървото на обектите, елементите, от които се нуждаем, върху платното за редактиране. В нашия случай можем да използваме обикновен RS тригер за включване и изключване.


След като създадете алгоритъма, щракнете върху бутона за компилиране, програмата дава готова скица в IDE.

Разгледахме възможностите и удобството на програмите за разработване на алгоритми на контролера от серията Arduino. Има и програми, които ви позволяват да създавате структурни диаграми и визуални снимки. Но препоръчвам да използвате текстов редактор, защото ще ви бъде по-лесно по-късно. Кажи ми коя среда предпочиташ и защо?

На 22 септември участвах в семинар в Краснодар „Тъч панел контролери ARIES SPK“. Проведохме конференция в модния и красив хотел Бристол. Беше много интересно и яко.


В първата част на семинара ни разказаха за възможностите и предимствата на продуктите на OWEN. След това имаше кафе пауза с понички. Взех куп всичко, и понички, и бисквити, и сладки, защото бях много гладен. =)

Във втората част на семинара, след обяд, ни представиха. Много неща се казаха за Web - визуализацията. Тази тенденция започва да набира скорост. Е, разбира се, управлявайте оборудването чрез всеки интернет браузър. Наистина е страхотно. Между другото, самата техника е в куфар.


Ще публикувам серия от статии за CoDeSyS 3.5 в близко бъдеще. Така че, ако някой се интересува, да се абонира или просто да дойде на гости. Винаги ще бъда щастлив!

Между другото, почти забравих, следващата статия ще бъде за електронната платка Arduino. Ще бъде интересно, не го пропускайте.

Ще се видим в следващите статии.

С уважение, Гридин Семьон.

И така, имате процесор. Вероятно разбирате, че процесорът може по някакъв начин да бъде програмиран да прави това, което искате. За да се извърши полезна работа, е необходимо (а) да се напише полезна програма и (б) да се даде на процесора за изпълнение.

Като цяло няма значение какъв процесор имате: най-новият Intel Pentium във вашия лаптоп или микроконтролерът на платката Arduino. Принципи за писане на програми, т.е. програмиранеса еднакви и в двата случая. Единствената разлика е скоростта и обхватът на възможностите за работа с други устройства.

Какво е програма и къде да я напиша

Процесорът, въпреки сложността на производството, по същество е доста просто и ясно нещо. Той не знае как да мисли. Той може само сляпо, байт по байт, да изпълнява инструкциите, които са му били подхлъзнати. Ето груб пример за последователност от инструкции:

Инструкция байтКакво означава това за процесора
00001001 означава: вземете следващия байт и го запазете в клетка номер 1
00000110 ... това е просто следващият байт, който помним в клетка номер 1: числото 5
00011001 означава: извадете единица от стойността в клетка 1 и оставете актуализирания резултат там
00101001 означава: сравнете стойността в клетка номер 1 с нула и ако е нула - прескочете толкова байта, колкото е посочено в следващия байт
00000100 ... ако резултатът е нула, искаме да прескочим 4 байта до предпоследната инструкция
10000011
01000001 ... буквата "А" просто отговаря на този код
00101000 означава, че искаме да прескочим толкова байта назад, колкото е следващият байт
00000110 ...ще прескочим 6 байта назад, към инструкция №3
10000011 означава, че искаме да покажем знака, чийто код е записан в следващия байт
00100001 ... знак "!" просто съвпада с този код

В резултат на изпълнението на такава последователност от инструкции на екрана ще се покаже паник фразата „AAAA!“.

Доста много код за такава проста цел! Ясно е, че ако всички програми бяха написани така, директно, разработването на сложни продукти щеше да отнеме векове.

Защо са необходими езици за програмиране

За да се опрости задачата милион пъти, бяха измислени езици за програмиране. Има много от тях и дори от тези, които постоянно се чуват, можете бързо да си припомните дузина или две: Assembler, C, C ++, C #, Java, Python, Ruby, PHP, Scala, JavaScript.

Програмите на тези езици са много по-близо до човешкия естествен език. И затова се пишат по-лесно, по-бързо и по-приятно и най-важното - много по-лесно Прочети: на вас веднага след писане, на вас след година или на ваш колега.

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

И така, има програми на език, който е доста разбираем за човек: те също се наричат ​​"изходен код", просто "код" или "изходни кодове". Те се записват в обикновени текстови файлове с помощта на всякаквитекстов редактор, дори и с бележник. След това те се превръщат в набори от нули и единици, разбираеми за процесора с помощта на компилатора: компилаторът получава изходния код като вход и създава двоичен изпълним файл, този, който се разбира от процесора.

Двоичните файлове не могат да се четат и по принцип са предназначени само за изпълнение от процесора. Може и да имат различен типв зависимост от това за какво са получени: .exe - това са програми за Windows, .hex - програми за изпълнение от микроконтролер като Arduino и др.

Защо има толкова много езици за програмиране и каква е разликата?

    Защо? Защото има много хора и компании на Земята и мнозина вярват, че могат да го направят по-добре от всеки друг: по-удобно, по-ясно, по-бързо, по-тънко.

    Каква е разликата: различните езици имат различен баланс на скорост на писане, четливост и скорост на изпълнение.

Нека да разгледаме същата програма, която показва на екрана песен за 99 бутилки бира на различни езици за програмиране.

Например езикът Perl. Написано бързо; невъзможно е да се разбере какво има предвид програмистът; изпълнява се бавно:

sub b( $n = 99 - @_ - $_ || No; "$n бутилка" . "s" x!!-- $n . " бира" ); $w = "на стената" ; die карта ( b. "$w, \н". b. ", \n Свали едно, раздай го,\n ". b(0) . „$w. \n\n"} 0 .. 98

език Java. Написано е относително дълго; лесен за четене; изпълнява се доста бързо, но заема много памет:

клас бутилки ( публичен статичен void main( низаргументи) ( низ s = "s"; за (int beers= 99 ; beers>- 1 ; ) ( Система.out .print (beers + "bottle" + s + " of beer on the wall, " ) ; Система.out .println (бира + " бутилка" + s + " бира, " ); ако (бира== 0 ) ( Система.out .print( „Отидете до магазина, купете още“,) ; Система.out .println( "99 бутилки бира на стената.\n ") ; Система.изход(0) ; ) друго Система.out .print( „Вземи един, раздай го наоколо“) ; s = (-- бири == 1)? "" : "с" ; Система.out .println(бира + "бутилка" + s + " бира на стената.\n ") ; } } }

асемблерен език. Пише се дълго време; труден за четене; работи много бързо:

кодов сегмент предполага cs: код, ds: код org 100h start:; Основен цикъл mov cx, 99; бутилки за стартиране с loopstart: извикайте printcx; отпечатайте числото mov dx, отместена линия1 ; отпечатайте останалата част от първия ред mov ah, 9; MS-DOS процедура за печат на низове int 21h извикване printcx; отпечатайте числото mov dx, отместена линия2_3 ; останалата част от 2-ри и 3-ти ред mov ah, 9 int 21h dec cx; вземете едно повикване printcx; отпечатайте числото mov dx, отместена линия4 ; отпечатайте останалата част от четвъртия ред mov ah, 9 int 21h cmp cx, 0; Без бира? jne loopstart; ако не, продължете през 20 часа; излезте от MS-DOS ; подпрограма за отпечатване на CX регистър в десетична система printcx: mov di, отместване numbufferend ; попълнете буфера от края mov брадва, cx ; поставете числото в AX, за да можем да го разделим printcxloop: mov dx, 0 ; дума от висок ред на числител - винаги 0 mov bx, 10 div bx ; разделете DX:AX на 10. AX=коефициент, DX=остатъкдобавете dl, "0" ; преобразувайте остатъка в ASCII знак mov [ds: di], dl; поставете го в буфера за печат cmp ax, 0; Още цифри за изчисляване? е printcxend; ако не, край на dec di ; поставете следващата цифра преди текущата jmp printcxloop; цикъл printcxend: mov dx, di ; печат, започвайки от Последниятцифрово изчислен mov ah, 9 int 21h ret; Линия за данни1 db "бутилки бира на стената,", 13 , 10 , "$" line2_3 db "бутилки бира," , 13 , 10 , „Вземи един, раздай го наоколо“, 13 , 10 , "$" ред4 db "бутилки бира на стената.", 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" код завършва край начало

Как се програмира Arduino?

Говорейки за Arduino или микроконтролери от Atmel, на какъв език могат да се пишат програми за тях? Теоретичният отговор: на всеки. Но на практика изборът е ограничен до Assembler, C и C++. Това се дължи на факта, че в сравнение с настолен компютър те имат много ограничени ресурси. Килобайти памет, не гигабайти. Мегахерци на процесора, а не гигахерци. Това е цена за евтиност и енергийна ефективност.

Така че имате нужда от език, който може да компилира и работи ефективно. Тоест, да преведете в тези същите нули и единици от инструкциите възможно най-оптимално, без да харчите ценни инструкции и празна памет. Тези езици са също толкова ефективни. Използвайки ги, дори в тесните граници на ресурсите на микроконтролера, можете да пишете програми с богати функции, които работят бързо.

Assembler, както видяхте, не е най-простият и елегантен и в резултат на това C/C++ е водещият език за Arduino.

Много източници казват, че Arduino е програмиран Ардуино език, Обработка, Окабеляване. Това не е напълно правилно твърдение. Arduino е програмиран в C / C ++ и това, което се нарича тези думи, е просто удобен „комплект за тяло“, който ви позволява да решавате много типични задачи, без да преоткривате колелото всеки път.

Защо C и C++ се споменават в едно и също изречение? C++ е добавка към C. Всяка C програма е валидна C++ програма, но не и обратното. Можете да използвате и двете. Най-често дори няма да мислите какво използвате, когато решавате текущия проблем.

Преминете към точката: първата програма

Нека напишем първата програма Arduino и да накараме дъската да я изпълни. Трябва да създадете текстов файл с изходния код, да го компилирате и да поставите получения двоичен файл на микроконтролера на платката.

Да вървим по ред. Нека напишем изходния код. Можете да го напишете в Notepad или друг редактор. Все пак, за да бъде работата по-удобна, има така наречените среди за разработка (IDE: Integrated Development Environment). Те предоставят текстов редактор с подчертаване и подсказки, компилатор, който работи с бутон, и много други радости под формата на един инструмент. За Arduino тази среда се нарича Arduino IDE. Той е свободно достъпен за изтегляне на официалния уебсайт.

Инсталирайте средата и я стартирайте. В прозореца, който се показва, ще видите: по-голямата част от пространството е дадено на текстовия редактор. Там е написан кодът. Кодът в света на Arduino също се нарича скица.

Така че нека напишем скица, която не прави нищо. Тоест възможно най-малката правилна C++ програма, която просто изгаря време.

void setup() ( ) void loop() ( )

Все още няма да се фокусираме върху значението на писмения код. Нека го компилираме. За да направите това, в Arduino IDE има бутон "Проверка" на лентата с инструменти. Щракнете върху него и след няколко секунди бинарният файл ще бъде готов. Това ще бъде съобщено от надписа „Готово компилиране“ под текстовия редактор.

В резултат на това имаме двоичен файл с разширение .hex, който може да се изпълнява от микроконтролера.

Сега трябва да го поставите в Arduino. Този процес се нарича зареждане, мигане или мигане. За да извършите качване в Arduino IDE, има бутон "Качване" на лентата с инструменти. Свържете Arduino към компютъра чрез USB кабел, щракнете върху „Качване“ и след няколко минути програмата ще бъде качена на Arduino. В този случай програмата, която е била там преди, ще бъде изтрита.

Успешният фърмуер ще бъде обявен с надписа „Готово качване“.

Ако срещнете грешка при опит за изтегляне, уверете се, че:

    В менюто Tools → Board се избира портът, към който всъщност е свързан Arduino. Можете да включите и изключите USB кабела, за да видите кой порт се появява и изчезва: това е Arduino.

    Инсталирали сте необходимите драйвери за Arduino. Това се изисква за Windows, не се изисква за Linux и се изисква само за по-стари платки преди Arduino Duemilanove на MacOS.

Честито! Изминахте целия път от чиста плоча до работеща програма Arduino. Нека не прави нищо, но това вече е успех.