Инсталиране и конфигуриране на Arduino в Windows. Благодаря за вниманието

Добавен на 12 февруари 2016 в 18:00

Тази статия ще ви помогне да започнете с Arduino и включва описание различни видове Arduino как да изтеглите среда за разработка на софтуер Софтуер Arduino, и описва различните платки и аксесоари, налични за Arduino, които ще ви трябват, за да разработите вашите Arduino проекти.

Arduino е контролер с една платка с отворен изходни кодове, който може да се използва в много различни приложения. Това е може би най-лесният и евтин вариант за микроконтролер за любители, студенти и професионалисти за разработване на проекти, базирани на микроконтролер. Платките Arduino използват микроконтролер Atmel AVR или микроконтролер Atmel ARM, а някои версии имат USB интерфейс. Те също имат шест или повече аналогови входни пина и четиринадесет или повече цифрови входно/изходни (I/O) пина, които се използват за свързване на сензори, задвижващи механизми и други периферни вериги към микроконтролера. Цената на платките Arduino, в зависимост от набора от функции, варира от шест до четиридесет долара.

Видове Arduino платки

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

  • Arduino робот
  • arduino Ethernet

Разнообразието от платки Arduino и техническите им описания можете да разгледате в секция "" на секция "Купете" на този сайт.

Софтуер (IDE)

Софтуерът, използван за програмиране на Arduino, е интегрирана среда за разработка Arduino IDE. IDE е Java приложение, което работи на много различни платформи, включително PC, Mac и Linux системи. Предназначен е за начинаещи, които не са запознати с програмирането. Той включва редактор, компилатор и товарач. IDE също така включва библиотеки с кодове за използване на периферни устройства като серийни портове и различни видове дисплеи. Програмите за Arduino се наричат ​​"sketch" и са написани на език, много подобен на C или C++.

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

USB кабел за Arduino

Програмиране

Програмирането на Arduino е лесно: първо използвате редактора на кода на IDE, за да напишете вашата програма, след това компилирате и я изтегляте с едно кликване.

Програмата Arduino включва две основни функции:

  • настройвам()
  • цикъл ()

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

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

Програмни функции

Следва списък на най-често използваните функции, когато Програмиране на Arduino:

  • pinMode - настройва щифта на входен или изходен режим;
  • analogRead - чете аналоговото напрежение на аналогов входен пин;
  • analogWrite - записва аналогово напрежение на аналогов изходен пин;
  • digitalRead - чете стойността на цифров входен пин;
  • digitalWrite - Задава стойността на цифров изходен щифт на високо или ниско ниво;
  • Serial.print - Записва данни в серийния порт като четлив за човека ASCII текст.

Ардуино библиотеки

Библиотеките на Arduino са колекции от функции, които ви позволяват да контролирате устройства. Ето някои от най-широко използваните библиотеки:

  • EEPROM - четене и запис в "постоянна" памет;
  • Ethernet - за свързване към интернет чрез платката Arduino Ethernet Shield;
  • Firmata - за комуникация с приложения на компютър чрез стандартен сериен протокол;
  • GSM - за свързване към GSM/GRPS мрежата чрез GSM платка;
  • LiquidCrystal - за управление на дисплеи с течни кристали (LCD);
  • SD - за четене и запис на SD карти;
  • Серво - за управление на сервоуреди;
  • SPI - за комуникация с устройства, използващи SPI шина;
  • SoftwareSerial - за серийна комуникация чрез всякакви цифрови пинове;
  • Степер - за управление на стъпкови двигатели;
  • TFT - за рисуване на текст, изображения и фигури върху Arduino TFT екрани;
  • WiFi - за свързване към интернет с помощта на Arduino WiFi shield;
  • Wire - двупроводен интерфейс (TWI/I2C) за предаване и получаване на данни чрез мрежа от устройства или сензори.

Стъпки за настройка на Arduino


Предупреждение: Може да се наложи да инсталирате драйвери, ако системата ви не открие Arduino.

Arduino разширителни платки

Arduino щитовете (Arduino Shields) са платки, които се свързват с Arduino, за да ви дадат възможност да свържете периферни устройства, сензори и задвижващи механизми към Arduino. По-долу е даден списък на някои популярни разширителни платки:

  • GSM щит;
  • Ethernet Shield;
  • WiFi щит;
  • моторен щит;
  • Прото-щит;
  • Джойстик Шийлд;
  • Bluetooth щит;
  • Xbe щит.

Компоненти и аксесоари

По-долу е даден списък на всички части и аксесоари, които обикновено се използват с Arduino за разработване на проекти:

  • Батерия 9V
  • светодиоди
  • бутони
  • кондензатори
  • регулатори на напрежението
  • сензори (IR, температура и др.)
  • Резистори
  • Потенциометър
  • Двигатели (двигатели постоянен ток, серво, BLDC)
  • Arduino разширителни платки

Всичко необходимо за оформлението можете да намерите в подраздела

В този урок ще разгледаме устройството и принципа на работа на сервосистемите. Нека анализираме две прости скици за управление на серво с помощта на потенциометър на Arduino. Ще научим и нови команди на езика за програмиране C++ − серво.напишете, серво.четене, сервоприкачванеи научете как да свържете библиотека в скици, за да управлявате серво и други устройства чрез Arduino.

Какво е серво

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

Серво задвижванията се използват широко за симулиране на механичните движения на роботите. Серво задвижването се състои от сензор (скорост, позиция и т.н.), блок за управление на задвижването от механична система и електронна схема. Редукторите (зъбните колела) на устройството са изработени от метал, въглеродни влакна или пластмаса. Пластмасовите зъбни колела на сервомотора не издържат на големи натоварвания и удари.

Сервомоторът има вграден потенциометър, който е свързан към изходящия вал. Чрез завъртане на вала, сервото променя стойността на напрежението на потенциометъра. Платката анализира напрежението на входния сигнал и го сравнява с напрежението на потенциометъра, въз основа на разликата, моторът ще се върти, докато изравни напрежението на изхода и потенциометъра.



Серво управление с широчинно-импулсна модулация

Как да свържете серво към Arduino

Схемата на свързване на серво към Arduino обикновено е следната: черен проводник към GND, червен проводник към 5V, оранжев/жълт проводник към аналогов щифт с PWM (широчинно-импулсна модулация). Серво управлението на Arduino е доста просто, но сервомоторите могат да бъдат 180 ° и 360 ° в ъгли на въртене, което трябва да се вземе предвид в роботиката.

За урока се нуждаем от следните подробности:

  • Плащане Ардуино Уно;
  • Дъска за хляб;
  • USB кабел;
  • 1 серво;
  • 1 потенциометър;
  • Проводници "папка-папка" и "папка-майка".


В първата скица ще разгледаме как да контролираме серво на Arduino с помощта на командата myservo.write(0). Ще използваме и стандартната библиотека Servo.h. Свържете сервото към платката Arduino, според диаграмата на снимката по-горе и качете готовата скица. В процедурата void loop() ние просто ще зададем желания ъгъл на въртене за сервото и времето за изчакване до следващото въртене.

#включи Сервосерво1; // деклариране на серво променлива от тип "servo1" void setup() // настройка на процедурата(servo1.attach(11); // свързване на серво към аналогов изход 11) void loop() // процедура loop(servo1.write(0); // задаване на ъгъл на въртене на 0забавяне (2000); // изчакайте 2 секунди servo1.write(90); // задайте ъгъла на въртене на 90забавяне (2000); // изчакайте 2 секунди servo1.write(180); // задайте ъгъла на въртене на 180забавяне (2000); // изчакайте 2 секунди)

Обяснения към кода:

  1. Стандартната библиотека Servo.h съдържа набор от допълнителни команди, които могат значително да опростят скицата;
  2. Променливата Servo е необходима, за да не се объркате при свързване на множество серво към Arduino. Ние даваме на всяко устройство собствено име;
  3. Командата servo1.attach(10) свързва задвижването към аналогов изход 10.

Какво да търсите:

  1. В процедурата void loop() завъртаме устройството на 0-90-180 градуса и се връщаме в първоначалната позиция, тъй като процедурата на цикъла се повтаря циклично;

  1. Инсталирайте вашия Arduino серво контрол в скицата.

Серво управление чрез потенциометър



Свързване на серво и потенциометър към Arduino Uno

Arduino позволява не само управление, но и четене на индикации от серво. Командата myservo.read(0) чете текущия ъгъл на серво вала и можем да го видим на монитора на порта. Нека предоставим по-сложен пример за управление на серво с потенциометър на Arduino. Сглобете веригата на потенциометъра и качете скицата за серво управление.

#включи // свържете библиотеката за работа със сервотоСерво серво // деклариране на серво променлива от тип "servo" void setup() // настройка на процедурата(servo.attach(10); // свързване на серво към аналогов изход 10 pinMode(A0, INPUT); // свържете потенциометър към аналогов вход A0 Serial.begin(9600); // свържете монитор на порт) void loop() // процедура loop(servo.write(analogRead(A0)/4); // предава стойности за серво вала Serial.println(analogRead(A0)); // показване на показанията на потенциометъра на монитораСериен .println(analogRead(A0)/4); // изведе сигнала, приложен към сервото Serial.println(); // извежда празен ред към монитора на портазабавяне (1000); // забавяне от една секунда }

Обяснения към кода:

  1. Този път наименувахме сервото в скицата като серво;
  2. Командата servo.write(analogRead(A0)/4) прехвърля стойностите за серво вала - разделяме полученото напрежение от потенциометъра на четири и изпращаме дадена стойносткъм сервото.
  3. Командата Serial.println (servo.read(10)) чете стойността на ъгъла на серво вала и я изпраща към монитора на порта.

Какво да търсите:

  1. На монитора на порта можем да видим ъгъла на въртене на серво вала.
  2. Стандартните библиотеки се намират в папката C:\Program Files\Arduino\libraries.

Задача за самостоятелно изпълнение:

  1. Покажете стойността на напрежението на потенциометъра на монитора на порта.

Вие сте горд собственик на дъска Arduino. Какво да правя след това? И тогава трябва да направите приятели Arduino с компютър. Ще разгледаме как да започнете с Arduino Uno на операционната система Windows.

1. Инсталирайте Arduino IDE

Първо трябва да инсталирате Arduino Integrated Development Environment (Arduino IDE) на вашия компютър.

Инсталирането на Arduino IDE с помощта на инсталатора ще ви спести от повечето потенциални проблеми с драйвера и софтуерната среда.

2. Стартирайте Arduino IDE

След като изтеглите и инсталирате Arduino IDE, нека го стартираме!

Пред нас е прозорецът на Arduino IDE. Обърнете внимание - все още не сме свързали нашата платка Arduino Uno към компютъра, а в долния десен ъгъл надписът "Arduino Uno на COM1" вече се показва. Ето как Arduino IDE ни казва, че в момента е конфигуриран да работи с целта. Ардуино платка uno. И когато дойде времето, Arduino IDE ще търси Arduino Uno на COM1.

Ще променим тези настройки по-късно.

Нещо се обърка?

    Arduino IDE не стартира? JRE (Java Runtime Environment) вероятно не е инсталиран правилно на компютъра. Моля, вижте параграф (1) за Настройка на Arduino IDE: Инсталаторът ще свърши цялата работа по внедряването на JRE.

3. Свързване на Arduino към компютър

След като инсталирате Arduino IDE, е време да свържете Arduino Uno към компютъра.

Свържете Arduino Uno към компютър чрез USB кабел. Ще видите, че светодиодът “ON” на платката се включва и светодиодът “L” ще започне да мига. Това означава, че към платката е подадено захранване и микроконтролерът Arduino Uno е започнал да изпълнява фабрично програмираната програма „Blink“ (мигащ светодиод).

За да настроим Arduino IDE да работи с Arduino Uno, трябва да знаем какъв е номерът на COM порта компютър ардуино uno. За да направите това, отидете в "Диспечер на устройства" на Windows и отворете раздела "Портове (COM и LPT)". Трябва да видим следната картина:


Това означава, че операционната система е разпознала нашата платка Arduino Uno като COM порт, избрала е правилния драйвер за него и е присвоила номер 7 на този COM порт.Ако свържем друга платка Arduino към компютъра, операционната система ще й присвои различен номер. Ето защо, ако имате няколко платки Arduino, е много важно да не се бъркате с номерата на COM портовете.

Нещо се обърка?

4. Настройване на Arduino IDE за работа с Arduino Uno

Сега трябва да кажем на Arduino IDE, че платката, с която ще говори, е на COM порт COM7.

За да направите това, отидете в менюто "Сервиз" → "Сериен порт" и изберете порта "COM7". Сега Arduino IDE знае - нещо има на порт "COM7". И с това "нещо" тя скоро ще трябва да общува.


За да няма съмнения в Arduino IDE, е необходимо директно да посочите: „Ще използваме Arduino Uno!“. За да направите това, отидете в менюто "Сервиз" → "Платка" и изберете нашия "Arduino Uno".


Нещо се обърка?

    Празен ли е списъкът със серийни портове? Така че Arduino Uno не е свързан правилно. Върнете се към стъпка (3), за да отстраните грешки във връзката.

    Arduino IDE е невероятно бавен при навигация в менюта? Деактивирайте всички външни "Bluetooth Serial" устройства в Device Manager. Например виртуално устройство за свързване мобилен телефонпрез Bluetooth може да причини това поведение.

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

Arduino IDE съдържа много готови примери, в които можете бързо да надникнете в решението на всеки проблем. В него има и прост пример за "Blink". Нека го изберем.


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

Вместо ред:

Закъснение (1000) ;

Забавяне (100) ;

Пълна версия на кода:

/* Мига Включва светодиод, включен за една секунда, след това изгасен за една секунда, многократно. Този примерен код е обществено достояние. */ // Пин 13 има светодиод, свързан към повечето Arduino платки.// дайте му име: int led = 13 ; // рутинната настройка се изпълнява веднъж, когато натиснете reset: void setup()( // инициализиране на цифровия щифт като изход. pinMode(led, OUTPUT) ; ) // цикълът се изпълнява отново и отново завинаги: void loop() ( digitalWrite(led, HIGH) ; // включете светодиода (ВИСОКО е нивото на напрежение)забавяне (100); // изчакайте втори digitalWrite(led, LOW) ; // изключете светодиода, като направите напрежението НИСКОзабавяне (100); // изчакайте за секунда)


Светодиодът "L" сега трябва да мига и изключва за една десета от секундата. Това е 10 пъти по-бързо от фабричната версия.

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

Нещо се обърка?

    Зареждането води до грешка като avrdude: stk500_get sync(): not in sync: resp = 0x00? Това означава, че Arduino е конфигуриран неправилно. Върнете се към предишните стъпки, за да се уверите, че устройството е разпознато операционна системаи правилните настройки за COM порта и модела на платката са зададени в Arduino IDE.

Във връзка с

Този симулатор работи най-добре в браузъра Chrome
Нека разгледаме по-отблизо Arduino.

Arduino не е голям компютър, към който могат да се свързват външни вериги. Arduino Uno използва Atmega 328P
Това е най-големият чип на дъската. Този чип изпълнява програми, които се съхраняват в неговата памет. Можете да изтеглите програмата през usb от Ардуино IDE. USB портът също така осигурява захранване на arduino.

Има отделен контакт. На платката има два изхода, обозначени с 5v и 3.3v, които са необходими за захранване на различни устройства. Ще намерите и щифтове с надпис GND, това са щифтове за заземяване (земята е 0V). Платформата Arduino разполага и с 14 цифрови пина (пинове), обозначени с числа от 0 до 13, които са свързани към външни възли и имат две състояния, високо или ниско (включено или изключено). Тези контакти могат да работят като изходи или като входове, т.е. те могат или да предават някои данни и да управляват външни устройства, или да получават данни от устройства. Следните щифтове на платката са обозначени с A0-A5. Това са аналогови входове, които могат да получават данни от различни сензори. Това е особено полезно, когато трябва да измерите определен диапазон, като например температура. Аналоговите входове имат допълнителни функциикоито могат да се използват отделно.


Как да използвате макет.

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

Макетът има редици дупки, където можете да вмъкнете части и проводници. Някои от тези отвори са електрически свързани помежду си.

Двата горен и долен ред са свързани последователно по цялата дъска. Тези редове се използват за захранване на веригата. Може да бъде 5v или 3.3v, но така или иначе, първото нещо, което трябва да направите, е да свържете 5v и GND към макетната платка, както е показано. Понякога тези редови връзки могат да бъдат прекъснати в средата на дъската, тогава, ако имате нужда, можете да ги свържете, както е показано на фигурата.












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



Първото нещо, което ще свържем към нашия микроконтролер, е светодиод. Схема електрически връзкипоказано на снимката.


Каква е целта на резистора във веригата? В този случай той ограничава тока, който преминава през светодиода. Всеки светодиод е проектиран за определен ток и ако този ток е по-голям, тогава светодиодът ще се повреди. Можете да разберете каква стойност трябва да има резисторът, като използвате закона за ома. За тези, които не знаят или са забравили, законът на Ом казва, че има линейна връзка между тока и напрежението. Тоест, колкото повече напрежение прилагаме към резистора, толкова повече ток ще тече през него.
V=I*R
Където V- напрежение на резистора
аз- ток през резистора
Ре съпротивлението, което трябва да се намери.
Първо, трябва да разберем напрежението на резистора. Повечето 3 мм или 5 мм светодиоди, които ще използвате, имат работно напрежение 3в. Така че на резистора трябва да изплатим 5-3 \u003d 2v.

След това изчисляваме тока, преминаващ през резистора.
Повечето 3 и 5 мм светодиоди светят с пълна яркост при 20 mA. Ток, по-голям от този, може да ги унищожи, а по-малък ток ще намали яркостта им, без да причини никаква вреда.

И така, искаме да включим светодиода в 5v верига, така че да има ток от 20mA. Тъй като всички части са включени в една верига, резисторът също ще има ток от 20 mA.
Получаваме
2V=20mA*R
2V=0.02A*R
R = 100 ома

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

Поставете светодиода в дупките в средата на платката, така че дългият му проводник да е свързан към един от проводниците на резистора. Свържете другия край на резистора към 5V и свържете другия край на светодиода към GND. Светодиодът трябва да светне.

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

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

Анатомия на скица на Arduino.

Програмите за Arduino се наричат ​​sketch. Те имат две основни функции. функция настройвами функция цикъл
вътре в тази функция ще зададете всички основни настройки. Кои изходи ще работят като вход или изход, кои библиотеки за свързване, инициализиране на променливи. функция Настройвам()изпълнява се само веднъж по време на скицата, когато стартира изпълнението на програмата.
това е Главна функция, който се изпълнява след настройвам(). Всъщност това е самата програма. Тази функция ще работи за неопределено време, докато не изключите захранването.

Arduino мигащ светодиод





В този пример ще свържем LED верига към една от цифровите Ардуино щифтовеи ние ще го включваме и изключваме с помощта на програмата, както и ще научите няколко полезни функции.




Тази функция се използва в настройвам()част от програмата и служи за инициализиране на пиновете, които ще използвате като вход (ВХОД)или изход (ИЗХОД). Няма да можете да четете или записвате данни от щифта, докато не го зададете съответно pinMode. Тази функция има два аргумента: ПИН номере ПИН номерът, който ще използвате.

режим-задава как ще работи щифтът. На входа (ВХОД)или изход (ИЗХОД). За да светне светодиодът, трябва да подадем сигнал ОТАрдуино. За да направим това, ние конфигурираме щифта за излизане.
- тази функция се използва за задаване на състоянието (състояние)пина (ПИН номер). Има две основни състояния (като цяло те са 3), едното е ВИСОКО, ще има 5v на щифта, другото е нискои щифтът ще бъде 0v. Така че, за да запалим светодиода, трябва да настроим щифта, свързан към светодиода високо ниво ВИСОКО.

Закъснение. Служи за забавяне на програмата за период, определен в ms.
По-долу е кодът, който кара светодиода да мига.
//LED мига

int ledPin = 7;// Arduino щифт, към който е свързан светодиодът

void setup()(
pinMode(ledPin, OUTPUT);// задайте pin като OUTPUT
}

void loop() (
digitalWrite(ledPin, HIGH);//свети светодиода
забавяне (1000);// забавяне 1000 ms (1 секунда)
забавяне (1000);//изчакайте 1 сек
}

Малки пояснения по кода.
Редовете, които започват с "//" са коментари, Arduino ги игнорира.
Всички команди завършват с точка и запетая, ако ги забравите, ще получите съобщение за грешка.

ledPinе променлива. Променливите се използват в програмите за съхраняване на стойности. В този пример променливата ledPinстойността 7 е присвоена, това е щифтовият номер на Arduino. Когато Arduino в програмата срещне ред с променлива ledPin, ще използва стойността, която посочихме по-рано.
Така че записвайте pinMode(ledPin, ИЗХОД)подобно на вписването pinMode(7, ИЗХОД).
Но в първия случай просто трябва да промените променливата и тя ще се промени във всеки ред, където се използва, а във втория случай, за да промените променливата, ще трябва да направите промени с манипулатори във всяка команда.

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

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

Управление на множество светодиоди.

В този пример ще научите как да управлявате множество светодиоди. За да направите това, инсталирайте още 3 светодиода на платката и ги свържете към резисторите и щифтовете на Arduino, както е показано на снимката по-долу.

За да включвате и изключвате светодиодите на свой ред, трябва да напишете програма, подобна на тази:
// Мигане на няколко светодиода

int led1Pin = 4;
int led2Pin = 5;
intled3Pin = 6;
int led4Pin = 7;

void setup()(
//задайте щифтове като EXIT
pinMode(led1Pin, ИЗХОД);
pinMode(led2Pin, ИЗХОД);
pinMode(led3Pin, ИЗХОД);
pinMode(led4Pin, ИЗХОД);
}

void loop() (
digitalWrite(led1Pin, HIGH);//свети светодиода
digitalWrite(led1Pin, LOW);//изключете светодиода
закъснение(1000);//закъснение 1 сек

// направете същото за останалите 3 светодиода
digitalWrite(led2Pin, HIGH);//свети светодиода
digitalWrite(led2Pin, LOW);//изключете светодиода
закъснение(1000);//закъснение 1 сек

DigitalWrite(led3Pin, HIGH);//свети светодиода
забавяне (1000);// забавяне 1 сек
digitalWrite(led3Pin, LOW);//изключете светодиода
закъснение(1000);//закъснение 1 сек

DigitalWrite(led4Pin, HIGH);//свети светодиода
забавяне (1000);// забавяне 1 сек
digitalWrite(led4Pin, LOW);//изключете светодиода
закъснение(1000);//закъснение 1 сек
}

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

DigitalWrite (led4Pin, HIGH);
забавяне (1000);
digitalWrite(led4Pin, LOW);
забавяне (1000);
пълен код на скица в прикачения файл (изтегляния: 429)

Регулиране на яркостта на LED

Понякога ще трябва да промените яркостта на светодиодите в програмата. Това може да стане с командата analogWrite() . Тази команда включва и изключва светодиода толкова бързо, че окото не вижда това трептене. Ако светодиодът е включен през половината време и изключен през половината време, тогава визуално ще изглежда, че свети с половината от яркостта си. Това се нарича широчинно-импулсна модулация (PWM или PWM на английски). ШИМ се използва доста често, тъй като може да се използва за управление на "аналогов" компонент с помощта на цифров код. Не всички щифтове на Arduino са подходящи за тази цел. Само тези заключения, близо до които е направено такова обозначение " ~ ". Ще го видите до щифтове 3,5,6,9,10,11.
Свържете един от вашите светодиоди към един от щифтовете на PWM (щифтът на автора е 9). Сега стартирайте скицата на мигащия светодиод, но първо променете командата digitalWrite()на analogWrite(). analogWrite()има два аргумента: първият е номерът на щифта, а вторият е стойността на ШИМ (0-255), по отношение на светодиодите това ще бъде тяхната яркост, а за електрическите двигатели скоростта на въртене. По-долу е примерен код за различна яркост на LED.
//Промяна на яркостта на светодиода

int ledPin = 9;// към този щифт е свързан светодиод
void setup()(
pinMode(ledPin, OUTPUT);// инициализиране на щифт за изход
}

void loop() (
analogWrite(ledPin, 255); // пълна яркост (255/255 = 1)
забавяне (1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//изключете светодиода
забавяне (1000);//пауза 1 сек

AnalogWrite(ledPin, 191);//яркост с 3/4 (191/255 ~= 0,75)
забавяне (1000);//пауза 1 сек
digitalWrite(ledPin, LOW);//изключете светодиода
забавяне (1000);//пауза 1 сек

AnalogWrite(ledPin, 127); // половин яркост (127/255 ~= 0,5)
забавяне (1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//изключете светодиода
забавяне (1000);//пауза 1 сек

AnalogWrite(ledPin, 63);//четвърт яркост (63/255 ~= 0,25)
забавяне (1000);// пауза 1 сек
digitalWrite(ledPin, LOW);//изключете светодиода
забавяне (1000);//пауза 1 сек
}

Опитайте да промените стойността на ШИМ в командата analogWrite()за да видите как това се отразява на яркостта.
След това ще научите как да регулирате плавно яркостта от пълна до нула. Можете, разбира се, да копирате част от кода 255 пъти
analogWrite(ledPin, яркост);
забавяне(5);//кратко забавяне
яркост=яркост+1;

Но разбирате - няма да е практично. Най-добрият начин да направите това е да използвате FOR цикъла, който използвахме по-рано.
Следващият пример използва два цикъла, единият за намаляване на яркостта от 255 на 0


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

}

забавяне (5)използва се за забавяне на скоростта на затихване и затихване 5*256=1280ms=1,28сек.)
Първият ред използва " яркост-", за да намалите стойността на яркостта с 1 всеки път, когато цикълът се повтаря. Имайте предвид, че цикълът ще работи, докато яркост >=0.Подмяна на табелата > на знака >= включихме 0 в диапазона на яркост. Тази скица е моделирана по-долу. // плавно променя яркостта

int ledPin = 9;// към този щифт е свързан светодиод

void setup()(
pinMode(ledPin, OUTPUT);// инициализиране на щифт за изход
}

void loop() (
// плавно увеличаване на яркостта (0 до 255)
за (int яркост=0;яркост=0;яркост--)(
analogWrite(ledPin,яркост);
забавяне (5);
}

Забавяне (1000);//изчакайте 1 сек
//бавно намалете яркостта (255 до 0)
for (int brightness=255;brightness>=0;brightness--)(
analogWrite(ledPin,яркост);
забавяне (5);
}

Забавяне (1000);//изчакайте 1 сек
}
}
Не изглежда много добре, но идеята е ясна.

RGB LED и Arduino

RGB светодиодът всъщност представлява три светодиода с различни цветове в един пакет.


Като включите различни светодиоди с различна яркост, можете да комбинирате и да получите различни цветове. За Arduino с 256 градации получавате 256^3=16581375 възможни цвята. В действителност, разбира се, те ще бъдат по-малко.
Светодиодът, който ще използваме като общ катод. Тези. и трите светодиода са структурно свързани чрез катоди към един изход. Ще свържем този щифт към щифта GND. Останалите изходи, чрез ограничителни резистори, трябва да бъдат свързани към изходите на ШИМ. Авторът използва щифтове 9-11.По този начин ще бъде възможно да се контролира всеки светодиод отделно. Първата скица показва как да включите всеки светодиод поотделно.





//RGB LED тест

//пинови връзки
int red = 9;
int зелено = 10;
int синьо = 11;

void setup()(
pinMode(червен, ИЗХОД);
pinMode(синьо, ИЗХОД);
pinMode(зелен, ИЗХОД);
}

void loop()(
//включване/изключване на червения светодиод
digitalWrite(червено, ВИСОКО);
забавяне (500);
digitalWrite(червено, НИСКО);
забавяне (500);

//включване/изключване на зеления светодиод
digitalWrite(зелено, ВИСОКО);
забавяне (500);
digitalWrite(зелено, НИСКО);
забавяне (500);

//включване/изключване на синия светодиод
digitalWrite(синьо, ВИСОКО);
забавяне (500);
digitalWrite(синьо, НИСКО);
забавяне (500);
}

Следващият пример използва командите analogWrite()и да получите различни произволни стойности на яркост за светодиодите. Ще видите различни цветове, променящи се на случаен принцип.
//RGB LED - произволни цветове

//пинови връзки
int red = 9;
int зелено = 10;
int синьо = 11;
void setup()(
pinMode(червен, ИЗХОД);
pinMode(синьо, ИЗХОД);
pinMode(зелен, ИЗХОД);
}
void loop()(
//изберете произволен цвят
analogWrite(червено, произволно(256));
analogWrite(синьо, произволно(256));
analogWrite(зелено, произволно(256));
закъснение(1000);//изчакайте една секунда
}

Произволен(256)- връща произволно число между 0 и 255.
В прикачения файл скица, която ще демонстрира плавните преходи на цветовете от червено към зелено, след това към синьо, червено, зелено и т.н. (изтегляния: 162)
Примерът за скица работи, но има много повтарящ се код. Можете да опростите кода, като напишете своя собствена помощна функция, която плавно ще променя от един цвят в друг.
Ето как ще изглежда: (изтегляния: 187)
Нека разгледаме дефиницията на функцията част по част. Функцията се извиква фейдъри има два аргумента. Всеки аргумент е разделен със запетая и има типа, деклариран на първия ред от дефиницията на функцията: void fader (int color1, int color2). Можете да видите, че и двата аргумента са декларирани като вътр, и те са наименувани цвят1и цвят2като условни променливи за дефиниране на функцията. Празнотаозначава, че функцията не връща никакви стойности, тя просто изпълнява команди. Ако трябва да напишете функция, която връща резултата от умножение, тя ще изглежда така:
int множител(int number1, int number2)(

int продукт = число1*номер2;
връщане на продукт;

}
Забележете как декларирахме типа вътркато тип връщане вместо
невалиден.
Във функцията има команди, които вече сте използвали в предишната скица, само номерата на ПИН кодовете бяха заменени с цвят1и цвят2. Функцията се извиква фейдър, неговите аргументи се изчисляват като цвят1=червени цвят2 = зелен. Архивът съдържа пълна скица с помощта на функции (изтегляния: 142)

Бутон

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



Това означава, че докато бутонът не е натиснат, през него не протича ток, а след отпускане бутонът се връща в първоначалното си положение.
Във веригата, в допълнение към бутона, се използва резистор. В този случай не ограничава тока, но "издърпва" бутона до 0v (GND). Тези. докато бутонът не бъде натиснат, щифтът на Arduino, към който е свързан, ще бъде нисък. Резисторът, използван във веригата 10 kΩ.



//дефиниране на щракване върху бутон
int buttonPin = 7;
void setup()(
pinMode(buttonPin, INPUT);//инициализиране на входния пин
Serial.begin(9600);//инициализиране на серийния порт
}
void loop()(
if (digitalRead(buttonPin)==HIGH)(//ако бутонът е натиснат
Serial.println("натиснат"); // показване на надписа "натиснат"
) иначе (
Serial.println("ненатиснат");// else "ненатиснат"
}
}
В тази скица има няколко нови команди.
-Тази команда приема стойността High (високо ниво) и low (ниско ниво) на изхода, който проверяваме. Преди това в setup() този изход трябва да бъде конфигуриран като вход.
; // където buttonPin е номерът на щифта, към който е свързан бутонът.
Серийният порт позволява на Arduino да изпраща съобщения до компютъра, докато самият контролер изпълнява програмата. Това е полезно за отстраняване на грешки в програма, изпращане на съобщения до други устройства или приложения. За да разрешите прехвърлянето на данни през серийния порт (друго име за UART или USART), трябва да го инициализирате в настройката ()

Serial.begin()има само един аргумент - това е скоростта на трансфер на данни между Arduino и компютъра.
Скицата използва команда за показване на съобщение на екрана в Arduino IDE (Инструменти >> Сериен монитор).
- дизайнът ви позволява да контролирате напредъка на програмата чрез комбиниране на няколко проверки на едно място.
Ако(ако) digitalRead върне ВИСОКО, тогава на монитора се показва думата "натиснат". В противен случай (в противен случай) думата "натиснат" се показва на монитора. Сега можете да опитате да включите и изключите светодиода с едно натискане на бутон.
//откриване на натискане на бутон с LED изход
int buttonPin = 7;
int ledPin = 8;
void setup()(
pinMode(buttonPin, INPUT);//този път ще зададем pin на бутона като INPUT
pinMode(ledPin, ИЗХОД);
Serial.begin(9600);
}
void loop()(
if (digitalRead(buttonPin)==HIGH)(
digitalWrite(ledPin, HIGH);
Serial.println("натиснат");
) иначе (
digitalWrite(ledPin,LOW);
Serial.println("ненатиснат");
}
}

Аналогов вход.

analogReadви позволява да четете данни от един от аналоговите изводи на Arduino и извежда стойност в диапазона от 0 (0V) до 1023 (5V). Ако напрежението на аналоговия вход е 2,5 V, тогава ще бъде отпечатано 2,5 / 5 * 1023 = 512
analogReadима само един аргумент - Това е номерът на аналоговия вход (A0-A5). Следващата скица показва кода за отчитане на напрежение от потенциометър. За да направите това, свържете се променлив резистор, крайните щифтове към щифтове 5V и GND, а средният щифт към вход A0.


Изпълнете следния код и вижте в серийния монитор как се променят стойностите в зависимост от завъртането на копчето на резистора.
//аналогов вход

int potPin = A0;//централният щифт на потенциометъра е свързан към този щифт

void setup()(
//аналоговият щифт е активиран по подразбиране, така че не е необходима инициализация
Serial.begin(9600);
}

void loop()(
int potVal = analogRead(potPin);//potVal е число между 0 и 1023
Serial.println(potVal);
}
Следващата скица съчетава скицата за натискане на бутон и скицата за управление на яркостта на LED. Светодиодът ще се включи от бутона, а потенциометърът ще контролира яркостта на сиянието.
//откриване на натискане на бутон с LED изход и променлив интензитет
int buttonPin = 7;
int ledPin = 9;
int potPin = A0;
void setup()(
pinMode(бутонPin, INPUT);
pinMode(ledPin, ИЗХОД);
Serial.begin(9600);
}
void loop()(
if (digitalRead(buttonPin)==HIGH)(//при натиснат бутон
int analogVal = analogRead(potPin);
int scaledVal = map(analogVal, 0, 1023, 0, 255);
analogWrite(ledPin, scaledVal);//включване на светодиода с интензитет, зададен от pot
Serial.println("натиснат");
) иначе (
digitalWrite(ledPin, LOW);//изключване, ако бутонът не е натиснат
Serial.println("ненатиснат");
}
}