Arduino програмиране на руски. Блог › Arduino: Програмиране без програмиране. Общо описание на езиците за програмиране

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

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

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

От 65 курса, които Станфорд предлага, поне половината изискват умения по програмиране. Преди около четири години те се появиха в т. нар. академични академии. Лаура Рая, дипломиран ръководител на Инженерния център за технологии и дигитални изкуства в Мадрид, вярва, че единственият начин хората да не останат безработни е да се научат как да контролират роботи. „Разберете логиката как и защо уредите работят само за да оцелеят и да бъдат автономни“, казва той. Продуктите вече не се продават с ръководства; от човек се очаква да има минимална технологична интуиция. Всичко, което правим, е по алгоритъм.

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

Време е всички да разберат как и защо. С появата на микрокомпютрите, нов свят. Компютрите бяха невероятно сложни в сравнение с това, което създавахме в извънработно време. Ето схемата на компютъра. Добре, нека опитаме нещо по-дидактично.

Компютърът се състои от следните части. Адресите, например, бяха дълги 3 думи или 12 бита. Тоест, правилно казано, обърна вътрешната пагинация. Часовникът беше 740 kHz и можеше да изпълни 600 инструкции в секунда. Микроконтролерът е проектиран да изпълнява индивидуални задачи независимо, надеждно и надеждно. Можете да програмирате микроконтролера да чете данни от сензори, да определя температурата на аквариума и ако е твърде ниска, да включва нагревателя. Твърде високото охлаждане се увеличава.

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

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

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

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


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

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

Тогава ще кажете: "Но Кардосо е много скъп." Вернер фон Браун ще стане негов най-добър приятелако намерите кутия от тези чипове в Peenemünde. Рискувате да станете най-добрият приятел на Хитлер. Оригиналният дизайн е направен за "дизайнери и художници", така че неговата крива на обучение е много удобна за потребителя. Всички машини, които ни заобикалят и правят неща сами, го правят, защото някой им е дал правилните инструкции.

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

Експеримент 3: веднъж или винаги?

Компютърните програми обикновено се пишат много устно. Всеки блок е еквивалентен на няколко реда код, точно като първото изображение. Така можете да създавате сложни програми, без да знаете вълшебните думи на езиците за програмиране. По същество разликата е следната. В основния цикъл поставяте всички блокове, които искате да повторите многократно.

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

  • Върнете се към проекта, който сте създали по-рано, или започнете отначало.
  • Изберете дали искате да го направите веднъж или да го повтаряте всеки път.
  • Опитайте се да поставите няколко блока един след друг.
Този начин за създаване на програма е много полезен.

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


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

Следователно трябва да четем или записваме в хардуерните входно/изходни регистри на този компонент и да погледнем неговото разпределение, за да разберем имената на изводите и тяхното оформление. Какво е език за програмиране? . Както всеки друг език, езикът за програмиране има свои собствени правила за синтаксис. Лошото е, че за разлика от непознат, който се опитва да ви разбере, в програмирането, ако не спазвате стриктно правилата на синтаксиса, програмата няма да работи. Има едно важно предимство: всички езици за програмиране са подобни.

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

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

Програмата се чете отгоре надолу. Състои се от набори от инструкции и условия, които правят програмата динамична. Когато стартираме програма, се казва, че тя се компилира за компютъра и се изпълнява по това време. Трябва ли да сте силен в математиката, за да програмирате? . Ако знаете какво е събиране, изваждане, деление и умножение, тогава светът на програмирането е ваш.

Променливи, константи и типове

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


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

Да предположим, че стайната температура е 27°. На езика Arduino ще пишем по следния начин. Може да сте забелязали точката и запетая в края на декларацията на променливата. Ето защо правите грешки на първо място и това е съвсем нормално, това е навик за приемане. Говорихме за променливи и константи, тук температурата е променлива. Тоест може да се промени по всяко време в програмата. За да направите това, няма нищо по-лесно, да кажем, че температурата сега е 31 °, ще напишем така.

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


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


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

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

В този раздел ще видим три важни елемента, които ще ви служат, когато сте на път да напишете своя код. Да кажем, че имате температура в три стаи във вашата къща и искате да имате средна температура в къщата. Нека започнем с деклариране на променливи. Изчислете средната стойност на температурата.


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


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

Наистина можем да създадем променлива и да й присвоим стойността на друга променлива или, както тук, сумата от няколко променливи. В подобрената версия кодът ще изглежда така. Сега, когато имаме средна температура, би било хубаво да я поставим някъде.

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


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


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

Нищо много лошо, този помпозен термин просто се отнася до сливането на два или повече реда от знаци. Ако наистина не получавате решението точно тук. Който добра програмаще бъде без контролни структури? Това ще бъде нединамична програма.

Малките програми, които сме инсталирали досега, са идеални, за да ви научат как да кодирате, но са малко скучни. Целта на програмирането е да се създаде автономна програма, която взема решения въз основа на предоставеното. В тази част ще видим 4-те най-важни управленски структури.


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

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

Този пример проверява дали 10 е по-голямо от 5 или не. Ако е вярно, един се изпълнява между скобите, оградени със зелено. Ако е невярно, това, което е написано между наградите, оградени с жълто, се изпълнява. И така, започвате да разбирате полезността на този тип. Тъй като 10 е по-голямо от 5, условието е вярно и човек прави това, което е в скобите, оградено със зелено. Всичко след това се игнорира.


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


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

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

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

Ето самия комплект части, всичко е закупено от уебсайта на 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 вида. Първа жична връзка към Тройка Шилд. Възможно е също така да запоите захранващия щепсел и да го свържете към самата платка Arduino 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. Така нареченият "бъг" позволява да мислите и да се опитвате да запомните команди за прецизно отстраняване на грешки в програмите.

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

Въведение

Freeduino/Arduino е програмиран на специален език за програмиране - базиран е на C/C++ и ви позволява да използвате всяка негова функция. Строго погледнато, отделно Ардуино езикне съществува, точно както няма компилатор 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, съответният порт ще работи в режим на широчинно-импулсно модулирано напрежение до следващото извикване на функцията 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" към порта

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