Зураг төсөлдөө Arduino ашиглахгүй байх хэд хэдэн шалтгаан бий. Эхлэгчдэд зориулсан Arduino Uno Arduino uno r3 төслүүд дээрх ер бусын төслүүд

Энэ нийтлэлд би бүрэн цуглуулахаар шийдсэн алхам алхмаар зааварчилгаа Arduino эхлэгчдэд зориулсан. Бид Arduino гэж юу болох, сурч эхлэхэд юу хэрэгтэй, програмчлалын орчинг хаанаас татаж авах, хэрхэн суулгах, тохируулах, энэ нь хэрхэн ажилладаг, програмчлалын хэлийг хэрхэн ашиглах, мөн бүрэн хэмжээний програмыг бий болгоход шаардлагатай бусад олон зүйлийг авч үзэх болно. Эдгээр микроконтроллеруудын гэр бүлд суурилсан нарийн төвөгтэй төхөөрөмжүүд.

Энд би хураангуй доод хэмжээг өгөхийг хичээх болно, ингэснээр та Arduino-тэй ажиллах зарчмуудыг ойлгох болно. Програмчлагдсан микроконтроллеруудын ертөнцөд илүү бүрэн дүрэхийн тулд энэ сайтын бусад хэсэг, нийтлэлд анхаарлаа хандуулаарай. Би зарим талыг илүү нарийвчлан судлахын тулд энэ сайт дээрх бусад материалын холбоосыг үлдээх болно.

Arduino гэж юу вэ, энэ нь юунд зориулагдсан вэ?

Arduino бол электрон дизайнер, энэ нь хэн бүхэнд төрөл бүрийн цахилгаан механик төхөөрөмжийг бүтээх боломжийг олгодог. Arduino нь програм хангамж, техник хангамжаас бүрдэнэ. Програм хангамжийн хэсэгхөгжүүлэлтийн орчин (програм хангамж бичих, дибаг хийх програм), олон бэлэн, тохиромжтой номын сан, хялбаршуулсан програмчлалын хэл зэргийг багтаасан болно. Техник хангамжид микроконтроллеруудын томоохон шугам багтдаг ба бэлэн модулиудтэдэнд. Үүний ачаар Arduino-тэй ажиллах нь маш хялбар!

Arduino-ийн тусламжтайгаар та програмчлал, цахилгаан инженерчлэл, механикийн чиглэлээр суралцах боломжтой. Гэхдээ энэ бол зөвхөн боловсролын бүтээн байгуулагч биш юм. Үүн дээр үндэслэн та үнэхээр хэрэгтэй төхөөрөмж хийж чадна.
Энгийн анивчдаг гэрэл, цаг агаарын станц, автоматжуулалтын системээс эхлээд төгсгөл хүртэл ухаалаг гэр, CNC машин болон нисгэгчгүй агаарын тээврийн хэрэгсэл. Боломжууд нь таны төсөөллөөр хязгаарлагдахгүй, учир нь хэрэгжүүлэх олон тооны заавар, санаанууд байдаг.

Arduino Starter Kit

Arduino-г сурч эхлэхийн тулд та микроконтроллерийн самбар болон нэмэлт хэсгүүдийг олж авах хэрэгтэй. Arduino эхлэлийн иж бүрдэл худалдаж авах нь хамгийн сайн арга юм, гэхдээ та өөрт хэрэгтэй бүх зүйлийг өөрөө сонгох боломжтой. Би багц сонгохыг зөвлөж байна, учир нь энэ нь илүү хялбар бөгөөд ихэвчлэн хямд байдаг. Энд танд зайлшгүй судлах шаардлагатай хамгийн сайн багц болон бие даасан хэсгүүдийн холбоосууд байна:

Эхлэгчдэд зориулсан үндсэн Arduino хэрэгсэл:Худалдан авах
Сургалт болон анхны төслүүдэд зориулсан том багц:Худалдан авах
Нэмэлт мэдрэгч ба модулиудын багц:Худалдан авах
Arduino Uno бол хамгийн энгийн бөгөөд тохиромжтой загвар юм.Худалдан авах
Сурах, загвар гаргахад хялбар гагнуургүй талхны хавтан:Худалдан авах
Тохиромжтой холбогчтой утаснуудын багц:Худалдан авах
LED багц:Худалдан авах
Эсэргүүцлийн багц:Худалдан авах
Товчлуурууд:Худалдан авах
Потенциометр:Худалдан авах

Arduino IDE хөгжүүлэлтийн орчин

Програм хангамж бичих, дибаг хийх, татаж авахын тулд та татаж аваад суулгах хэрэгтэй Arduino IDE. Энэ нь маш энгийн бөгөөд тохиромжтой програм. Би вэбсайт дээрээ хөгжүүлэлтийн орчныг татаж авах, суулгах, тохируулах үйл явцыг аль хэдийн тайлбарласан. Тиймээс би энд зөвхөн холбоосыг үлдээх болно Хамгийн сүүлийн үеийн хувилбархөтөлбөрүүд болон

Хувилбар Windows Mac OS X Линукс
1.8.2

Arduino програмчлалын хэл

Таны гарт микроконтроллерийн самбар болон компьютер дээрээ хөгжүүлэлтийн орчин суулгасан үед та анхны ноорог (програм хангамж) бичиж эхлэх боломжтой. Үүнийг хийхийн тулд та програмчлалын хэлийг сайн мэддэг байх хэрэгтэй.

Arduino програмчлал нь урьдчилан тодорхойлсон функцүүдтэй C++ хэлний хялбаршуулсан хувилбарыг ашигладаг. Бусад C төрлийн програмчлалын хэлнүүдийн нэгэн адил код бичих хэд хэдэн дүрэм байдаг. Энд хамгийн үндсэн нь байна:

  • Заавар бүрийн араас цэг таслал (;) тавих ёстой.
  • Функцийг зарлахаасаа өмнө функцээс буцаасан өгөгдлийн төрлийг зааж өгөх ёстой, эсвэл функц нь утга буцаахгүй бол хүчингүй болно.
  • Мөн хувьсагчийг зарлахын өмнө өгөгдлийн төрлийг зааж өгөх шаардлагатай.
  • Тайлбарыг дараах байдлаар тэмдэглэв: // Inline ба /* блок */

Та өгөгдлийн төрөл, функц, хувьсагч, оператор, хэлний бүтцийн талаар илүү ихийг мэдэх боломжтой бөгөөд энэ бүх мэдээллийг цээжлэх, санах шаардлагагүй. Та үргэлж лавлах ном руу орж, тодорхой функцийн синтаксийг харж болно.

Бүх Arduino програм хангамж дор хаяж 2 функц агуулсан байх ёстой. Эдгээр нь setup() ба loop() юм.

тохируулах функц

Бүх зүйл ажиллахын тулд бид ноорог бичих хэрэгтэй. Товчлуурыг дарсны дараа LED гэрэл асааж, дараагийн дарсны дараа унтарцгаая. Энд бидний анхны ноорог байна:

// холбогдсон төхөөрөмжүүдийн зүү бүхий хувьсагчид int switchPin = 8; int ledPin = 11; // товчлуурын төлөвийг хадгалах хувьсагч ба LED логикийн lastButton = LOW; boolean currentButton = LOW; boolean ledOn = худал; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // Boolean debounse (boolean last) (boolean current = digitalRead(switchPin); if( last != current) ( саатал () 5); одоогийн = digitalRead(switchPin); ) буцах гүйдэл; ) хүчингүй давталт() ( currentButton = debbounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite(ledPin, ledOn); )

// холбогдсон төхөөрөмжүүдийн зүү бүхий хувьсагч

int switchPin = 8 ;

int ledPin = 11 ;

// товчлуур болон LED-ийн төлөвийг хадгалах хувьсагч

boolean lastButton = LOW ;

boolean currentButton = LOW ;

boolean ledOn = худал;

хүчингүй тохиргоо() (

pinMode(SwitchPin, INPUT);

pinMode(ledPin, OUTPUT);

// салгах функц

boolean debounse (boolean сүүлчийн) (

логикийн гүйдэл = дижитал Унших(шилжүүлэгч пин);

хэрэв (сүүлийн != одоогийн ) (

саатал(5);

одоогийн = дижитал Унших(шилжүүлэгч зүү);

буцах гүйдэл;

хүчингүй давталт() (

currentButton = debounse(lastButton);

хэрэв (сүүлийн товчлуур == БАГА && одоогийн товчлуур == ӨНДӨР ) (

ledOn =! ledOn;

lastButton = одоогийн товчлуур;

digitalWrite(ledPin, ledOn);

Энэ ноорог дээр би бүтээсэн нэмэлт функц debounse холбоо барихыг дарах. Миний вэбсайт дээр холбоо барих тухай мэдээлэл бий. Энэ материалыг заавал шалгаж үзээрэй.

PWM Arduino

Импульсийн өргөн модуляц (PWM) нь дохионы ажлын мөчлөгийг ашиглан хүчдэлийг хянах үйл явц юм. Өөрөөр хэлбэл, PWM ашиглан бид ачааллыг жигд хянах боломжтой. Жишээлбэл, та LED-ийн гэрлийг жигд өөрчлөх боломжтой боловч гэрэлтүүлгийн энэхүү өөрчлөлтийг хүчдэлийг бууруулах замаар бус харин бага дохионы интервалыг нэмэгдүүлэх замаар олж авдаг. PWM-ийн ажиллах зарчмыг энэ диаграммд үзүүлэв.

Бид LED дээр PWM-ийг хэрэглэхэд тэр хурдан асч, унтарч эхэлдэг. Давтамж хэт өндөр учраас хүний ​​нүд үүнийг харж чадахгүй. Гэхдээ видео зураг авалтын үеэр та LED асахгүй байх мөчүүдийг харах болно. Камерын фрэймийн хурд нь PWM давтамжийн олон биш тохиолдолд энэ нь тохиолдох болно.

Arduino нь импульсийн өргөн модулятортой. Та PWM-ийг зөвхөн микроконтроллероор дэмжигдсэн зүү дээр ашиглаж болно. Жишээлбэл, Arduino Uno болон Nano нь 6 PWM зүүтэй: эдгээр нь D3, D5, D6, D9, D10, D11 зүү юм. Бусад самбар дээр зүү нь өөр байж болно. Та сонирхож буй самбарынхаа тайлбарыг олж болно

Arduino-д PWM-г ашиглахын тулд пин дугаар болон PWM утгыг 0-ээс 255 хүртэлх аргумент болгон авдаг. 0 нь өндөр дохиогоор дүүргэх 0%, 255 нь 100% юм. Жишээ болгон энгийн ноорог бичье. LED чийдэнгээ жигд асаагаад нэг секунд хүлээгээд гөлгөр унтарцгаая гэх мэтээр хязгааргүй үргэлжлүүлье. Энэ функцийг ашиглах жишээ энд байна:

// LED нь зүү 11-д холбогдсон int ledPin = 11; хүчингүй тохиргоо() ( pinMode(ledPin, OUTPUT); ) хүчингүй давталт() ( for (int i = 0; i)< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) (analogWrite(ledPin, i); саатал(5); ) )

// LED зүү 11-д холбогдсон

int ledPin = 11 ;

хүчингүй тохиргоо() (

pinMode(ledPin, OUTPUT);

хүчингүй давталт() (

хувьд (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

саатал(5);

саатал(1000);

хувьд (int i = 255; i > 0; i -- ) (

Arduino-г хэрхэн сонгох вэЭнэ асуулт Arduino ашиглан анх удаа төсөл зохиохоор шийдсэн хүн бүрт гарч ирдэг. Бид шаардлагатай нарийн ширийн зүйлийг шийдсэн: мэдрэгч, мэдрэгч, модулиуд гэх мэт олон төрлийн Arduino хавтангуудтай тулгарсан бөгөөд үүнээс гадна самбар бүр хоёр, гурван аналогтой байдаг. Зарим хүмүүс илүү үнэтэй, хүчирхэг байх тусмаа Arduino Due гэх мэт ноцтой шийдлүүдийг худалдаж авдаг гэж боддог бөгөөд дараа нь бүх ноорог үүн дээр ажиллахгүй гэдгийг ойлгодог бөгөөд энэ нь тэдний бүрэн хүчийг даван туулахад хэцүү байдаг. төхөөрөмж өөрөө. Бусад нь эсрэгээрээ явж, нөөцийн хязгаарлалттай (санах ой, зүү, порт, цагийн давтамж, тэжээл). Тэр алтан дунджийг яаж олох вэ? Үүнийг олохыг хичээцгээе...

Төл давуу тал Сул талууд

Arduino Uno

ProMini болон Nano зэрэг функцууд
  • Самбар нь Arduino гэр бүлийн хамгийн түгээмэл зүйл бөгөөд үүнд зориулж хамгийн олон тооны хичээлүүд бий болсон.
  • DIP самбар байгаа тул та микроконтроллерыг өөрчлөх боломжтой
  • Arduino ProMini, Nano болон Micro-тэй ижил функцтэй, самбар нь хэмжээнээсээ хэд дахин том.

Arduino Mega 2560

  • Arduino UNO-д зориулж бүтээсэн бамбайнууд тохиромжтой
  • Хамгийн их зүү тоо
  • Бүх төрлийн санах ойн өргөтгөсөн багтаамж
  • Утас ашиглахгүйгээр Breadboard дээр суулгах боломжгүй

Ардуино Леонардо

MICRO гэх мэт функцууд

  • Arduino UNO-д зориулж бүтээсэн бамбайнууд тохиромжтой
  • Уг самбар нь Arduino UNO-ийн сайжруулсан хувилбар бөгөөд түүний ихэнх ноорогтой ажилладаг
  • Утас ашиглахгүйгээр Breadboard дээр суулгах боломжгүй
  • Arduino Uno-д зориулж бүтээсэн зарим ноорог Леонардо дээр ажиллахгүй, учир нь... янз бүрийн микроконтроллеруудыг ашигладаг

Arduino хугацаа дууссан


  • Arduino Mega шиг тээглүүрүүдийн тоо
  • Хоёр аналог гаралтыг хэрэгжүүлсэн
  • 84 МГц давтамжтай 32 битийн хүчирхэг микроконтроллер ашигладаг
  • Утас ашиглахгүйгээр Breadboard дээр суулгах боломжгүй
  • Бүх Arduino гэр бүлийн хамгийн том самбарын хэмжээ
  • Бүх ноорог ийм өндөр цагийн давтамжийг өгдөггүй
  • Бүх зүйл бамбай биш 3.3V-ийн хязгаарын хүчдэл бүхий дохиог дамжуулах
  • Нийлүүлэлтийн хүчдэл 3.3V

Arduino ProMini 3.3V

Nano болон UNO зэрэг функцууд


  • Микроконтроллерийн хамгийн бага давтамж нь ердөө 8 МГц
  • Нийлүүлэлтийн хүчдэл 3.3V

Arduino ProMini 5V

Nano болон UNO зэрэг функцууд

  • Breadboard дээр диаграмм зохиоход ашиглаж болно
  • Arduino гэр бүлийн хамгийн жижиг самбар
  • Гадаргуугаар бэхлэх боломжийг олгодог гагнуурын контактгүй нийлүүлдэг
  • Arduino UNO-д зориулж бүтээсэн бамбай нь тохиромжгүй
  • Гадны программист шаардлагатай USB хянагч байхгүй

Arduino NANO V3.0

ProMini болон UNO зэрэг функцууд


  • Breadboard дээр диаграмм зохиоход ашиглаж болно
  • Уг самбар нь Arduino ProMini-ээс арай том боловч USB порттой бөгөөд гадны программист ашиглах шаардлагагүй.
  • Arduino UNO-д зориулж бүтээсэн бамбай нь тохиромжгүй
  • Хянагчтай USB портыг нэвтрүүлсэн нь ачаалагчийн хувьд зориулагдсан флаш санах ойн хэмжээг нэмэгдүүлэхэд хүргэсэн (Arduino ProMini-тэй харьцуулахад)

Arduino MICRO

Леонардо шиг функциональ байдал


  • Breadboard дээр диаграмм зохиоход ашиглаж болно
  • Самбар нь Arduino Nano-аас арай том боловч Arduino Leonardo-ийн бүх функцтэй.
  • Төрөл бүрийн загварчлал хийх боломжтой USB төхөөрөмжүүдкомпьютерт холбогдсон үед (самбар нь хулгана, гар гэх мэт харагдах болно)
  • Arduino UNO-д зориулж бүтээсэн бамбай нь тохиромжгүй
  • USB хянагчийн функцийг микроконтроллер руу шилжүүлэх нь ачаалагчийн хувьд хуваарилагдсан флаш санах ойн хэмжээг нэмэгдүүлэхэд хүргэсэн.

Arduino-г сонгоход нөлөөлсөн эхний асуулт-Ямар төсөл хэрэгжүүлэхийг хүсэж байна вэ?

Хэрэв та бэлэн төсөл бүтээхийг хүсч байвал, эелдэг байдлаар бусад хөгжүүлэгчид өгсөн, дараа нь логик худалдан авалт нь төсөл анх бий болсон Arduino байх болно. Одоо ОХУ-д Arduino хавтанг Geduino брэндийн дор тарааж байгааг энд тэмдэглэх нь зүйтэй. . Энэ нь таны зөв ойлгосноор Arduino Micro нь Geduino Micro-ээс нэр, лого (энэ нь аналог биш) гэж албан ёсны вэбсайтад бичсэнээр ялгаатай юм. Сүүлийнх нь хямд тул сонголт нь ойлгомжтой.

Хэрэв та төслөө шийдээгүй байгаа бол, гэхдээ өөрийн туршилтанд зориулж Arduino худалдаж авахыг хүсч байгаа бол чухал хүчин зүйл бол тоо хэмжээ юм янз бүрийн жишээсүлжээнд, нэг эсвэл өөр Arduino дор. Энд эргэлзээгүй удирдагч бол Arduino UNO юм , энэ нь энэ самбар нь Arduino шугамын хамгийн эртнийх боловч хуучирсангүй, учир нь бий болсон цагаасаа хойш нэлээд өөрчлөгдсөнтэй холбон тайлбарлаж байна.

Хэрэв та өөрийн төслийг хэрэгжүүлэхээр төлөвлөж байгаа бол, дараа нь Arduino-г сонгохдоо арилгах аргаар хандах хэрэгтэй. Хэрэв таны төсөл Arduino Uno-д зориулсан зүү бүхий модулиудтай бол Arduino Nano-ийн аналог Arduino ProMini 3.3V, Arduino ProMini 5V-ийг хас.), гэхдээ өөр төрлийн USB холбогчтой, бага зэрэг өөр хэмжээтэй, өөр USB хянагч, өөр төрлийн микроконтроллерийн хайрцаг, самбарын өнгө гэх мэт байж болно. Эндээс та эдгээр самбарууд нь ижил цувралын ATmega микроконтроллер ашигладаг тул анхныхаа функцийг давтдаг гэдгийг ойлгох хэрэгтэй (тэдгээр нь ижил төстэй нэрээр). Самбарын хэмжээс, микроконтроллерийн орон сууц, төрөл USB порт, зурагнаас тодорхойлж болно. Нэрэнд нь "CH340G" байгаа нь USB хянагч нь Arduino-д зориулсан стандарт FTDI чип биш харин түүний аналог CH340G гэсэн үг тул ийм Arduino-г компьютерт холбохын тулд та CH340G чипийн драйвер суулгах хэрэгтэй. . Эдгээр самбарууд нь нэг удаагийн жолооч суурилуулах нь хүндрэл учруулахгүй гэж үздэг хүмүүст тохиромжтой бөгөөд хямд үнэ нь анхны нэрнээс давуу тал болно.

Arduino нь бүх дизайн сонирхогчдын дунд маш их алдартай. Үүнийг сонсоогүй хүмүүст ч бас танилцуулах хэрэгтэй.

Arduino гэж юу вэ?

Та Arduino-г хэрхэн товч тайлбарлах вэ? Хамгийн оновчтой үгээрбайх болно: Arduino бол та янз бүрийн зүйлийг үүсгэж болох хэрэгсэл юм электрон тоног төхөөрөмж. Үндсэндээ энэ бол ерөнхий зориулалтын техник хангамжийн тооцоолох платформ юм. Үүнийг барихад ашиглаж болно энгийн хэлхээнүүд, мөн нэлээд төвөгтэй төслүүдийг хэрэгжүүлэхэд зориулагдсан.

Дизайнер нь оролт гаралтын самбар болох техник хангамж дээр суурилдаг. Самбарыг програмчлахын тулд C/C++ дээр суурилсан хэлүүдийг ашигладаг. Тэдгээрийг тус тусын боловсруулалт/утас гэж нэрлэдэг. С бүлгээс тэд туйлын энгийн байдлыг өвлөн авсан бөгөөд үүний ачаар ямар ч хүн маш хурдан эзэмшиж чаддаг бөгөөд мэдлэгийг практикт ашиглах нь тийм ч чухал асуудал биш юм. Ажлын хялбар байдлыг ойлгохын тулд Arduino нь эхлэгч шидтэн дизайнеруудад зориулагдсан гэж ихэвчлэн хэлдэг. Хүүхдүүд ч гэсэн Arduino самбарыг ойлгодог.

Та үүн дээр юу цуглуулж чадах вэ?

Arduino-ийн хэрэглээ нь маш олон янз байдаг бөгөөд үүнийг нийтлэлийн төгсгөлд санал болгож буй хамгийн энгийн жишээнүүд болон манипулятор, робот эсвэл үйлдвэрлэлийн машин зэрэг нэлээд төвөгтэй механизмд ашиглаж болно. Зарим гар урчууд ийм системийг таблет, утас, гэрийн хяналт, хамгаалалтын систем, ухаалаг гэрийн систем эсвэл зүгээр л компьютер хийхэд ашигладаг. Туршлагагүй хүмүүс ч эхлүүлж чаддаг эхлэгчдэд зориулсан Arduino төслүүдийг өгүүллийн төгсгөлд оруулав. Тэдгээрийг бүр анхдагч системийг бий болгоход ашиглаж болно виртуал бодит байдал. Arduino програмчлалын хангадаг нэлээн олон талын техник хангамж, боломжуудын ачаар.

Би бүрэлдэхүүн хэсгүүдийг хаанаас худалдаж авах вэ?

Италид үйлдвэрлэсэн эд ангиудыг эх хувь гэж үздэг. Гэхдээ ийм багцын үнэ бага биш юм. Тиймээс хэд хэдэн компани, тэр ч байтугай хувь хүмүүс Arduino-тай нийцтэй төхөөрөмж, эд ангиудыг гар аргаар хийдэг бөгөөд үүнийг үйлдвэрлэлийн клон гэж хошигнодог. Ийм клон худалдаж авахдаа тэд ажиллах болно гэж баттай хэлж чадахгүй, гэхдээ мөнгө хэмнэх хүсэл нь ихээхэн хохирол учруулдаг.

Бүрэлдэхүүн хэсгүүдийг багцын нэг хэсэг болгон эсвэл тусад нь худалдаж авч болно. Машин, нисдэг тэрэг угсрах урьдчилан бэлтгэсэн иж бүрдэл хүртэл байдаг янз бүрийн төрөлудирдлага эсвэл хөлөг онгоц. Хятадад үйлдвэрлэсэн дээрх зураг шиг иж бүрдэл нь 49 долларын үнэтэй.

Тоног төхөөрөмжийн талаар дэлгэрэнгүй

Arduino самбар нь энгийн AVR микроконтроллер, энэ нь ачаалагчаар анивчсан бөгөөд шаардлагатай хамгийн бага USB-UART порттой. Бусад чухал бүрэлдэхүүн хэсгүүд байдаг, гэхдээ нийтлэлийн хүрээнд зөвхөн эдгээр хоёр бүрэлдэхүүн хэсэгт анхаарлаа хандуулах нь дээр.

Нэгдүгээрт, микроконтроллерийн тухай, боловсруулсан програм байрладаг нэг хэлхээ дээр баригдсан механизм. Хөтөлбөр нь товчлуурыг дарах, үүсгэх бүрэлдэхүүн хэсгүүдээс (резистор, транзистор, мэдрэгч гэх мэт) дохиог хүлээн авах гэх мэт нөлөөлж болно. Түүнээс гадна мэдрэгч нь зорилгодоо маш өөр байж болно: гэрэлтүүлэг, хурдатгал, температур, зай, даралт, саад тотгор гэх мэт. Энгийн эд ангиудыг LED болон жиргээчээс эхлээд график дэлгэц гэх мэт нарийн төвөгтэй төхөөрөмж хүртэл дэлгэцийн төхөөрөмж болгон ашиглаж болно. Хөдөлгүүр, хавхлага, реле, серво, цахилгаан соронзон болон бусад олон чанарыг авч үзсэн бөгөөд тэдгээрийг жагсаахад маш их цаг хугацаа шаардагдана. MK нь холболтын утас ашиглан эдгээр жагсаалтын заримтай шууд ажилладаг. Зарим механизм нь адаптер шаарддаг. Гэхдээ загвар зохион бүтээж эхэлмэгц өөрийгөө урж хаяхад хэцүү байх болно. Одоо Arduino програмчлалын талаар ярилцъя.

Самбарын програмчлалын үйл явцын талаар илүү ихийг олж мэдэх

Микроконтроллер дээр ажиллахад аль хэдийн бэлэн болсон програмыг програм хангамж гэж нэрлэдэг. Нэг төсөл эсвэл Arduino төсөл байж болох тул олох үйл явцыг хурдасгахын тулд програм хангамж бүрийг тусдаа хавтсанд хадгалахыг зөвлөж байна. шаардлагатай файлууд. Энэ нь тусгай төхөөрөмж болох програмистууд ашиглан MK болор дээр гэрэлтдэг. Энд Arduino нэг давуу талтай - үүнд програмист хэрэггүй. Эхлэгчдэд зориулсан Arduino програмчлах нь хэцүү биш байхын тулд бүх зүйл хийгдсэн. Бичсэн кодыг USB кабелиар дамжуулан MK-д ачаалж болно. Энэ давуу талыг урьдчилан бүтээсэн програмист биш, харин тусгай програм хангамж - ачаалагчаар олж авдаг. Ачаалагч нь холболтын дараа шууд ажиллаж эхлэх бөгөөд ямар нэгэн команд байгаа эсэх, болорыг анивчуулах эсэх, Arduino төсөл байгаа эсэх зэргийг сонсдог тусгай програм юм. Ачаалагчийг ашиглах нь хэд хэдэн сонирхолтой давуу талуудтай:

  1. Зөвхөн нэг холбооны суваг ашиглах нь нэмэлт цаг хугацаа шаарддаггүй. Тиймээс Arduino төслүүд нь олон төрлийн утас холбох шаардлагагүй бөгөөд тэдгээрийг ашиглахад төөрөгдөл үүсэх болно. Амжилттай ажиллахад нэг USB кабель хангалттай.
  2. Тахир гараас хамгаалах. Микроконтроллерийг шууд програм хангамж ашиглан тоосгоны төлөвт оруулах нь маш хялбар бөгөөд та шаргуу ажиллах шаардлагагүй болно. Ачаалагчтай ажиллахдаа та аюултай байж болзошгүй тохиргоонд нэвтрэх боломжгүй болно (мэдээж хөгжүүлэлтийн програмын тусламжтайгаар, эс тэгвээс бүх зүйл эвдэрч болзошгүй). Тиймээс, эхлэгчдэд зориулсан Arduino нь ойлгомжтой, тохиромжтой гэсэн үүднээс төдийгүй тэдэнтэй ажилладаг хүний ​​туршлагагүйгээс үүдэлтэй хүсээгүй санхүүгийн зардлаас зайлсхийх боломжийг олгоно.

Эхлэх төслүүд

Та иж бүрдэл, гагнуурын төмөр, жилий, гагнуур худалдаж авсны дараа маш нарийн төвөгтэй бүтцийг нэн даруй баримал хийх ёсгүй. Мэдээжийн хэрэг, та тэдгээрийг хийж чадна, гэхдээ Arduino-д анхлан суралцагчдад зориулсан амжилтанд хүрэх боломж нь нарийн төвөгтэй төслүүдэд маш бага байдаг. Ур чадвараа сургаж, сайжруулахын тулд та Arduino-ийн харилцан үйлчлэл, үйл ажиллагааг ойлгоход туслах хэд хэдэн энгийн санааг хэрэгжүүлэхийг оролдож болно. Эхлэгчдэд зориулсан Arduino-тэй ажиллах эхний алхамуудын хувьд бид танд дараахь зүйлийг анхаарч үзэхийг зөвлөж байна.

  1. Arduino-ийн ачаар ажиллах боломжтой нэгийг бий болго.
  2. Arduino-д тусдаа товчлуурыг холбож байна. Энэ тохиолдолд та товчлуурыг 1-р цэгээс LED-ийн гэрлийг тохируулах боломжтой болгож болно.
  3. Потенциометрийн холболт.
  4. Серво хөтөчийн удирдлага.
  5. Гурван өнгийн LED-тэй холбогдох, ажиллах.
  6. Пьезоэлектрик элементийг холбох.
  7. Фоторезисторыг холбох.
  8. Хөдөлгөөн мэдрэгчийг холбох ба түүний ажиллагааны талаархи дохио.
  9. Чийгшил эсвэл температур мэдрэгчийг холбох.

Ирээдүйд зориулсан төслүүд

Бие даасан LED-үүдийг холбохын тулд та Arduino-г сонирхож байгаа нь магадлал багатай юм. Өөрийнхөө машин эсвэл нисдэг эргэдэг тавцан хийх боломж таныг татдаг байх. Эдгээр төслүүдийг хэрэгжүүлэхэд хэцүү бөгөөд маш их цаг хугацаа, тэсвэр тэвчээр шаардагдана, гэхдээ дууссаны дараа та хүссэн зүйлээ авах болно: эхлэгчдэд зориулсан үнэ цэнэтэй Arduino дизайны туршлага.

Arduino дахь саатал нь маш том үүрэг гүйцэтгэдэг. Тэдгээргүйгээр тодорхой хугацааны дараа LED анивчдаг Blink-ийн хамгийн энгийн жишээ ч ажиллах боломжгүй. Гэхдээ ихэнх шинэхэн програмистууд цаг хугацааны хоцрогдлын талаар бага мэддэг бөгөөд энэ командын гаж нөлөөг мэдэлгүйгээр зөвхөн Arduino саатлыг ашигладаг. Энэ нийтлэлд би цаг хугацааны функцууд болон тэдгээрийг Arduino IDE дээр хэрхэн ашиглах талаар дэлгэрэнгүй ярих болно.

Arduino-д цаг хугацаа, түр зогсолттой ажиллах үүрэгтэй хэд хэдэн өөр өөр тушаалууд байдаг:

  • саатал()
  • сааталМикросекунд()
  • миллис()
  • микро()

Тэдгээр нь нарийвчлалаараа ялгаатай бөгөөд код бичихдээ анхаарах ёстой өөрийн гэсэн шинж чанартай байдаг.

Arduino саатуулах функцийг ашиглах

Синтакс

Arduino delay нь хамгийн энгийн команд бөгөөд анхлан суралцагчид ихэвчлэн ашигладаг. Үндсэндээ энэ нь хаалтанд заасан миллисекундын тоогоор програмыг түр зогсоодог саатал юм. (Нэг секундэд 1000 миллисекунд байна.) Хамгийн их утга нь 4294967295 мс байж болох бөгөөд энэ нь ойролцоогоор 50 хоногтой тэнцэнэ. Энэ тушаал хэрхэн ажилладагийг тодорхой харуулсан энгийн жишээг харцгаая.

Хүчингүй болгох тохиргоо() ( pinMode(13, OUTPUT); ) хүчингүй давталт() (digitalWrite(13, HIGH); // 13 саатал руу өндөр дохио илгээх (10000); // 10000мс буюу 10 секунд digitalWrite13-ыг түр зогсоох, БАГА) ; // 13 саатал руу бага дохио илгээх (10000); // 10000мс эсвэл 10 секунд түр зогсоох)

Аргын хувьд тохируулахБид 13-р зүүг гаралт болгон ашиглахыг зааж өгсөн. Хөтөлбөрийн үндсэн хэсэгт эхлээд өндөр дохиог зүү рүү илгээдэг, дараа нь бид 10 секундын саатал гаргадаг. Энэ хугацаанд хөтөлбөр түр зогссон бололтой. Дараа нь бага дохио өгч, дахин саатал гарч, бүх зүйл дахин эхэлдэг. Үүний үр дүнд бид зүү нь 5 В эсвэл 0-ээр ээлжлэн тэжээгддэг болохыг олж мэдэв.

Саатал ашиглан түр зогсоох үед програмын ажил түр зогссон, програм мэдрэгчээс ямар ч мэдээлэл хүлээн авахгүй гэдгийг та тодорхой ойлгох хэрэгтэй. Энэ нь Arduino саатуулах функцийг ашиглах хамгийн том сул тал юм. Та тасалдлыг ашиглан энэ хязгаарлалтыг даван туулж болно, гэхдээ бид энэ талаар тусдаа өгүүллээр ярих болно.

LED анивчсан саатлын жишээ

Саатуулах функц хэрхэн ажилладагийг харуулах жишээ хэлхээ.
Та LED болон резистор бүхий хэлхээг барьж болно. Дараа нь бид стандарт жишээтэй байх болно - LED анивчих. Үүнийг хийхийн тулд та эерэг контакттай LED-ийг гаралт гэж тодорхойлсон зүү рүү холбох хэрэгтэй. Бид LED-ийн чөлөөт хөлийг ойролцоогоор 220 Ом резистороор холбодог (бага зэрэг боломжтой). Дотор талыг нь хараад туйлшралыг тодорхойлж болно. Дотор нь том аяга нь хасах, жижиг хөл нь нэмэхтэй холбогдсон байна. Хэрэв таны LED шинэ бол та туйлшралыг утаснуудын уртаар тодорхойлж болно: урт хөл нь нэмэх, богино хөл нь хасах юм.

delayMicroseconds функц

Энэ функц нь саатлын бүрэн аналог бөгөөд түүний хэмжилтийн нэгж нь миллисекунд биш, харин микросекунд (1 секундэд 1,000,000 микросекунд байдаг) юм. Хамгийн их утга нь 16383 байх бөгөөд энэ нь 16 миллисекундтэй тэнцүү байна. Нарийвчлал нь 4, өөрөөр хэлбэл энэ тоо үргэлж дөрөвний үржвэр байх болно. Жишээ хэсэгчилсэн хэсэг нь иймэрхүү харагдах болно:

DigitalWrite(2, HIGH); // 2-р зүү рүү өндөр дохио илгээх delayMicroseconds(16383); // түр зогсоох 16383 μs digitalWrite(2, LOW); // 2-р саатал руу бага дохио илгээхMicroseconds(16383); // 16383 мкс түр зогсоох

СааталтайMicroseconds-ийн асуудал нь сааталтай яг адилхан - эдгээр функцууд нь програмыг бүрэн "өлгөх" бөгөөд хэсэг хугацаанд хөлддөг. Энэ үед портуудтай ажиллах, мэдрэгчээс мэдээлэл унших, математикийн үйлдэл хийх боломжгүй юм. Энэ сонголт нь анивчсан гэрлүүдэд тохиромжтой боловч туршлагатай хэрэглэгчид үүнийг том төслүүдэд ашигладаггүй, учир нь ийм алдаа гарах шаардлагагүй болно. Тиймээс доор тайлбарласан функцуудыг ашиглах нь илүү дээр юм.

Миллис саатахын оронд ажилладаг

Millis() функц нь Arduino дээр сааталгүйгээр хийх боломжийг танд олгоно, ингэснээр өмнөх аргуудын дутагдлыг тойрон гарах болно. Millis параметрийн хамгийн их утга нь саатлын функцтэй ижил байна (4294967295ms буюу 50 хоног).

Миллсийг ашигласнаар бид бүхэл бүтэн ноорог гүйцэтгэлийг зогсоохгүй, харин Arduino бидний түр зогсоохыг хүсч буй кодын яг блокыг хэр удаан "тойрч" өнгөрөхийг зүгээр л зааж өгнө. Энэ нь саатал миллисээс ялгаатай нь юуг ч өөрөө зогсоодоггүй. Энэ тушаал нь микроконтроллерийн суурилуулсан таймераас эхнээс хойш өнгөрсөн миллисекундын тоог бидэнд буцааж өгдөг. Дуудлага хийх бүрт бид кодын сүүлчийн дуудлагаас хойш өнгөрсөн хугацааг хэмждэг бөгөөд хэрэв цагийн зөрүү нь хүссэн түр зогсолтоос бага байвал бид кодыг үл тоомсорлодог. Зөрүү нь шаардлагатай түр зогсолтоос их болмогц бид кодыг ажиллуулж, ижил миллиметрээр одоогийн цагийг аваад санаж байна - энэ удаад шинэ эхлэл байх болно. Дараагийн мөчлөгт тооллого аль хэдийн шинэ цэгээс хийгдэх бөгөөд миллис болон бидний урьд нь хадгалсан утгын хоорондох шинэ зөрүү дахин хүссэн завсарлагад хүрэх хүртэл бид дахин кодыг үл тоомсорлох болно.

Millis ашиглан сааталгүйгээр хойшлуулах нь илүү их код шаарддаг боловч түүний тусламжтайгаар та LED-ийг анивчуулж, системийг зогсоохгүйгээр ноорог түр зогсоох боломжтой.

Багийн ажлыг тодорхой харуулсан жишээ энд байна.

Гарын үсэг зураагүй урт хугацаа; // Лавлах цэгийг хадгалах хувьсагч void setup() ( Serial.begin(9600); ) void loop() ( /* Энэ үед delay() аналогийн гүйцэтгэл эхэлнэ. Одоогийн мөч болон агшин зуурын хоорондох зөрүүг тооцоол. Өмнө нь хадгалсан лавлах цэг. Хэрэв зөрүү нь хүссэн утгаас их байвал кодыг ажиллуулна уу. Хэрэв тийм биш бол юу ч хийхгүй */ if (millis() - timing > 10000)( // 10000-ын оронд танд хэрэгтэй завсарлагааны утгыг оруулна уу. = millis(); Serial.println ("10 секунд") ; ) )

Эхлээд бид цаг хугацааны хувьсагчийг танилцуулж, миллисекундын тоог хадгалах болно. Анхдагчаар хувьсагчийн утга нь 0. Програмын үндсэн хэсэгт бид нөхцөлийг шалгадаг: хэрэв микроконтроллерийн эхлэлээс цаг хугацааны хувьсагчид бичигдсэн миллисекундын тоо хасагдсан бол 10000-аас их бол портын монитор руу мессеж гаргах үйлдэл хийгдэж, одоогийн цагийн утгыг хувьсагчид бичнэ. Програмын үйл ажиллагааны үр дүнд портын дэлгэц дээр 10 секунд тутамд 10 секундын мессеж гарч ирэх болно. Энэ арга LED-ийг цаг алдалгүй анивчих боломжийг танд олгоно.

Саатуулахын оронд микронууд ажилладаг

Энэ функц нь мөн саатуулах командыг ашиглахгүйгээр саатлыг гүйцэтгэх боломжтой. Энэ нь миллистэй яг адилхан ажилладаг боловч 4 μs нарийвчлалтай миллисекунд биш харин микросекундуудыг тоолдог. Түүний хамгийн их утга нь 4294967295 микросекунд буюу 70 минут байна. Хэрэв энэ нь халивал утгыг зүгээр л 0 болгож дахин тохируулна, үүнийг бүү мартаарай.

Дүгнэлт

Arduino платформ нь бидний төслийн саатлыг хэрэгжүүлэх хэд хэдэн арга замыг бидэнд олгодог. Сааталыг ашигласнаар та ноорог гүйцэтгэлийг хурдан түр зогсоож болох боловч микроконтроллерийн ажиллагааг хаах болно. Millis командыг ашиглах нь Arduino дээр цаг алдалгүй хийх боломжийг олгодог боловч энэ нь арай илүү програмчлал шаарддаг. Сонго Хамгийн зөв замтаны төслийн нарийн төвөгтэй байдлаас хамаарна. Дүрмээр бол энгийн ноорог, 10 секундээс бага хугацаатай хоцролтыг ашигладаг. Хэрэв үйлдлийн логик нь илүү төвөгтэй бөгөөд их хэмжээний саатал шаардлагатай бол хойшлуулахын оронд миллис ашиглах нь дээр.

Эхлэгчдэд зориулсан Arduino дээрх радио сонирхогчдын туршилт бүхий цуврал нийтлэл, сургалтын диаграммууд. Энэ бол гагнуургүй, сийлбэр хийдэг радио сонирхогчийн нэг төрлийн барилгын тоглоом юм хэвлэмэл хэлхээний самбаргэх мэт аливаа электроникийн сонирхогч нь электроникийн судалгаанд мэргэжлийн прототип хийх, сонирхогчдын туршилт хийхэд тохиромжтой бүрэн хэмжээний ажлын төхөөрөмжийг угсарч чадна.


Arduino самбар нь голчлон шинэхэн радио сонирхогчдод микроконтроллер програмчлалын үндсийг заах, онолын ноцтой сургалтгүйгээр өөрийн гараар микроконтроллерийн төхөөрөмжийг бий болгоход зориулагдсан. Arduino хөгжүүлэлтийн орчин нь танд бэлэн програмын кодыг хөрвүүлж, самбарын санах ойд ачаалах боломжийг олгодог. Үүнээс гадна кодыг ачаалах нь маш энгийн.

Ардуино эхлэгчдэд хаанаас эхлэх вэ

Юуны өмнө Arduino самбартай ажиллахын тулд шинэхэн электроникийн инженер Arduino хөгжүүлэх програмыг татаж авах шаардлагатай бөгөөд энэ нь програмын код, мессежийн талбар, текст гаралтын цонх (консол) -тэй ажилладаг суулгасан текст засварлагчаас бүрдэнэ. ), байнга хэрэглэгддэг командууд болон хэд хэдэн цэсүүдийн товчлуур бүхий хэрэгслийн мөр. Програмаа татаж авах, харилцахын тулд энэ программ нь стандарт USB кабелиар Arduino самбарт холбогдсон байна.


Код бичсэн Arduino орчин, дуудсан ноорог. Энэ нь дотор бичигдсэн байдаг текст засварлагч, текст оруулах/тайрах, солих/хайх тусгай хэрэгсэлтэй. Хадгалах, экспортлох үед мессежийн талбарт тайлбар гарч ирэх (анхан шатны эхний хичээлийн зургийг доороос үзнэ үү) мөн алдаа гарч болзошгүй. Консол нь алдааны тайлан болон бусад мэдээллийг багтаасан Arduino мессежүүдийг харуулдаг хэрэгтэй мэдээлэл. Хэрэгслийн самбарын товчлуурууд нь ноорог шалгах, бичих, нээх, үүсгэх, хадгалах, цуваа автобусны хяналтыг нээх болон бусад олон зүйлийг хийх боломжийг олгоно.

Ингээд эхнийх рүүгээ орцгооё. Arduino хичээлэлектроникийн анхан шатны инженерүүдэд зориулсан хэлхээний диаграм.

Эхлэгчдэд тав тухыг хангах үүднээс Arduino UNO хянагч нь эсэргүүцэл болон холбогч 13-р зүү дээр холбогдсон LED-тэй тул эхний туршилтанд бидэнд гадны радио элемент хэрэггүй болно.


Кодыг ачаалснаар Arduino нь манай программыг системийг эхлүүлэхэд оролцох боломжийг олгодог. Үүнийг хийхийн тулд бид микроконтроллерийн командуудыг эхний ачаалах үед гүйцэтгэж, дараа нь тэдгээрийг бүрэн мартах болно гэдгийг зааж өгнө (өөрөөр хэлбэл Arduino эдгээр командуудыг эхлүүлэх үед зөвхөн нэг удаа гүйцэтгэх болно). Үүний тулд бид код дотроо эдгээр тушаалуудыг хадгалах блокыг сонгодог. хүчингүй тохиргоо(), эс тэгвээс энэ функцийн буржгар хаалт доторх орон зайд програмын тоймыг харна уу.

Буржгар хаалтаа бүү мартаарай!Тэдгээрийн дор хаяж нэгийг нь алдах нь бүхэл бүтэн ноорог бүрэн ажиллах боломжгүй болгоно. Гэхдээ нэмэлт хаалт бүү хий, учир нь энэ нь бас алдаа гаргах болно.

Татаж авах код:
001-1_mig-led.ino файл дахь тайлбар, тайлбар бүхий тойм зураг

Чиг үүрэг хүчингүй давталт()Энд бид Arduino асаалттай байх үед хэрэгжих командуудыг тавьдаг. Эхний тушаалаас эхлэн гүйцэтгэлийг эхлүүлсний дараа Arduino хамгийн төгсгөлд хүрч, тэр даруй ижил дарааллыг давтахын тулд эхэнд очно. ТУЗ-ийн хүчийг хүлээн авах хүртэл хязгааргүй олон удаа. Үндсэндээ хоосон гогцоо нь үндсэн функц, Arduino руу нэвтрэх цэг юм.


Чиг үүрэг саатал(1000) програмын боловсруулалтыг 1000 миллисекундээр хойшлуулдаг. Энэ бүхэн мөнхийн мөчлөгт үргэлжилдэг давталт().

Arduino дээрх бидний анхны хөтөлбөрийг ойлгосны дараа гаргасан гол дүгнэлт:Хүчингүй хүрд болон хүчингүй тохиргооны функцуудыг ашиглан бид зааварчилгаагаа микроконтроллер руу дамжуулдаг. Тохируулах блок дотор байгаа бүх зүйл зөвхөн нэг удаа хийгдэх болно. Arduino асаалттай байх үед давталтын модулийн агуулга давтагдах болно.

Өмнөх хөтөлбөрт LED асаах, унтраах хооронд хоёр дахь удаашрал гарсан. Дээр ашигласан шинэхэн Arduino операторын хамгийн энгийн кодонд нэг том хасах зүйл байсан. LED-ийг нэг секундын турш асаах, унтраах хооронд завсарлага авахын тулд бид функцийг ашигласан саатал()тиймээс одоогоор хянагч үндсэн функцийн бусад командуудыг гүйцэтгэх боломжгүй байна давталт(). Функц дэх кодыг засах гогцоо(), доор үзүүлсэн нь энэ асуудлыг шийддэг.

Утгыг ӨНДӨР, дараа нь LOW болгохын оронд бид ledPin-ийн утгыг авч, эргүүлнэ. ӨНДӨР байсан бол БАГА болно гэх мэтээр бодъё.

Хоёрдугаарт LED хяналтын Arduino кодын сонголтЭнд:

Дараа нь та функцийг сольж болно саатал(). Үүний оронд функцийг ашиглах нь дээр миллис(). Энэ нь програм эхэлснээс хойш өнгөрсөн миллисекундын тоог буцаана. Хөтөлбөрийн кодыг ажиллуулснаас хойш ойролцоогоор 50 хоногийн дараа функц халих болно.

Үүнтэй төстэй функц байна микро(), энэ нь програмын кодыг ажиллуулснаас хойш өнгөрсөн микросекундын тоог буцаана. Хөтөлбөр ажилласны дараа 70 минутын дараа функц тэг болно.

Мэдээжийн хэрэг, энэ нь бидний ноорог дээр хэд хэдэн мөр код нэмэх боловч энэ нь таныг илүү их болгох нь дамжиггүй туршлагатай програмистЭнэ нь таны Arduino-ийн боломжийг нэмэгдүүлэх болно. Үүнийг хийхийн тулд та millis функцийг хэрхэн ашиглах талаар сурах хэрэгтэй.

Хамгийн энгийн саатуулах функц нь Arduino программын гүйцэтгэлийг бүхэлд нь түр зогсоож, энэ хугацаанд ямар ч ажлыг гүйцэтгэх боломжгүй болгодог гэдгийг тодорхой ойлгох хэрэгтэй. Хөтөлбөрийг бүхэлд нь түр зогсоохын оронд бид үйл ажиллагаа дуусахаас өмнө хичнээн цаг өнгөрснийг тоолж болно. Энэ нь millis() функцийг ашиглан хэрэгждэг. Бүх зүйлийг ойлгоход хялбар болгохын тулд бид LED-ийг цаг алдалгүй анивчуулах дараах сонголтыг авч үзэх болно.

Энэ програмын эхлэл нь бусад стандарт Arduino ноорогтой адил юм.


IN энэ жишээндхоёр Arduino дижитал оролт гаралтын зүүг ашигладаг. LED нь OUTPUT гэж тохируулагдсан зүү 8-д холбогдсон байна. INPUT гэж тохируулагдсан 9 via-д товчлуур холбогдсон байна. Бид товчлуурыг дарахад 9-р зүүг HIGH болгож, програм нь 8-р зүүг HIGH болгож, LED-ийг асаана. Товчлуурыг суллахад 9-р зүүг БАГА болгож шинэчилнэ. Дараа нь код 8-р зүүг LOW болгож, заагч гэрлийг унтраана.

Таван LED-ийг удирдахын тулд бид Arduino портуудтай янз бүрийн залруулга ашиглах болно. Үүнийг хийхийн тулд бид өгөгдлийг шууд бичдэг Arduino портууд, энэ нь танд зөвхөн нэг функц ашиглан LED-ийн утгыг тохируулах боломжийг олгоно.

Arduino UNO нь гурван порттой: Б(8-аас 13 хүртэлх тоон оролт/гаралт); C(аналог оролтууд); Д(0-ээс 7 хүртэлх тоон оролт/гаралт)

Порт бүр гурван бүртгэлийг хянадаг. Эхний DDR нь зүү нь оролт эсвэл гаралт байх эсэхийг тодорхойлдог. Хоёрдахь PORT регистрийг ашигласнаар та pin-ээ HIGH эсвэл LOW болгож тохируулж болно. Гурав дахь хэсгийг ашигласнаар та Arduino-ийн хөлний төлөв байдлын талаархи мэдээллийг уншиж болно, хэрэв тэдгээр нь оролт болж ажилладаг бол.

Хэлхээг ажиллуулахын тулд бид B портыг ашиглана. Үүний тулд бид бүх портын зүүг дижитал гаралт болгон тохируулна. В порт нь ердөө 6 хөлтэй. DDRB бүртгэлийн битүүдийг тохируулсан байх ёстой "1" , хэрэв зүү нь гаралт болгон ашиглагдах бол (OUTPUT), мөн дотор "0" , хэрэв бид зүүг оролт (INPUT) болгон ашиглахаар төлөвлөж байгаа бол. Портын битүүд нь 0-ээс 7 хүртэл дугаарлагдсан боловч үргэлж бүх 8 зүү байдаггүй

гэж хэлье: DDRB = B00111110;// B портын 1-ээс 5 хүртэлх зүүг гаралт, 0-ийг оролт болгон тохируулна.

Манай гэрлийн хэлхээнд бид таван гаралтыг ашигладаг: DDRB = B00011111; // 0-ээс 4 хүртэлх B портыг гаралт болгон тохируулна.

В порт руу өгөгдөл бичихийн тулд та PORTB бүртгэлийг ашиглах хэрэгтэй. Та удирдлагын командыг ашиглан эхний LED-ийг асааж болно. PORTB = B00000001;, эхний ба дөрөв дэх LED: PORTB = B00001001гэх мэт

Хоёртын ээлжийн хоёр оператор байдаг: зүүн ба баруун. Зүүн шилжүүлэх оператор нь бүх өгөгдлийн битийг зүүн тийш шилжүүлэхэд хүргэдэг бол баруун шилжүүлэх оператор нь тэдгээрийг баруун тийш шилжүүлдэг.

Жишээ:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Одоо программынхаа эх код руу буцъя. Бид хоёр хувьсагчийг оруулах хэрэгтэй: дээшээ доошооХаашаа шилжих - дээш эсвэл доош, хоёр дахь утгыг багтаана cylonаль LED-ийг асаахыг зааж өгнө.

Бүтцийн хувьд ийм LED нь нэг нийтлэг терминал, өнгө бүрийн хувьд гурван терминалтай байдаг. RGB LED-ийг нийтлэг катодтой Arduino самбарт холбох диаграммыг доор харуулав. Холболтын хэлхээнд ашигласан бүх резисторууд нь 220-270 Ом хооронд ижил утгатай байх ёстой.


Нийтлэг катодтой холболтын хувьд гурван өнгийн LED-ийн холболтын диаграм нь бараг ижил байх болно, зөвхөн нийтлэг зүү нь газардуулгатай (төхөөрөмж дээрх gnd) биш харин +5 вольтын зүүтэй холбогдоно. Хоёр тохиолдолд улаан, ногоон, цэнхэр өнгийн зүү нь дижитал гаралт 9, 10, 11 хянагчтай холбогдсон байна.

Бид гадаад LED-ийг Arduino UNO-ийн ес дэх зүү рүү 220 Ом эсэргүүцэлээр холбоно. Сүүлийнх нь гэрэлтүүлгийг жигд хянахын тулд функцийг ашиглана уу analogWrite(). Энэ нь хянагчийн хөл рүү PWM дохионы гаралтыг өгдөг. Түүнээс гадна баг pinMode()залгах шаардлагагүй. Учир нь analogWrite(зүү, утга)Үүнд хоёр параметр багтана: pin - гаралтын зүү дугаар, утга - 0-ээс 255 хүртэлх утга.

Код:
/*
LED-ийн Fade эффектийг хэрэгжүүлэх analogWrite() командын чадварыг харуулсан шинэхэн Arduino хөгжүүлэгчдэд зориулсан сургалтын жишээ.
*/
int тод байдал = 0; // LED тод байдал
int fadeAmount = 5; // гэрэлтэлтийг өөрчлөх алхам
unsigned long currentTime;
гарын үсэг зураагүй урт loopTime;

Тохиргоог хүчингүй болгох() (
pinMode(9, OUTPUT); // 9-р зүүг гаралт болгон тохируулна
одоогийн цаг = миллис();
loopTime = одоогийн цаг;
}

Хүчингүй давталт() (
одоогийн цаг = миллис();
if(currentTime >= (loopTime + 20))(
analogWrite(9, тод байдал); // 9-р зүү дээр утгыг тохируулна

Brightness = тод байдал + fadeAmount; // дараагийн мөчлөгт тохируулагдах гэрэлтүүлгийг өөрчлөх алхам нэмнэ

// хэрэв мин. эсвэл хамгийн их. утгууд, дараа нь бид эсрэг чиглэлд (урвуу) явдаг.
хэрэв (гэрэлт == 0 || тод байдал == 255) (
fadeAmount = -fadeAmount ;
}
loopTime = одоогийн цаг;
}
}

Arduino ажиллагаакодлогчтой

Кодлогч нь эргэлтийн өнцгийг цахилгаан дохио болгон хувиргах зориулалттай. Үүнээс бид хоёр дохио (A ба B) хүлээн авдаг бөгөөд тэдгээр нь фазын эсрэг байдаг. Энэ зааварт бид SparkFun COM-09117 кодлогчийг ашиглах бөгөөд энэ нь нэг эргэлт тутамд арван хоёр байрлалтай байдаг (байрлал бүр нь яг 30 °). Доорх зураг нь кодлогч цагийн зүүний дагуу эсвэл цагийн зүүний эсрэг хөдөлж байх үед гаралт A ба B нь бие биенээсээ хэрхэн хамааралтай болохыг тодорхой харуулж байна.

Хэрэв А дохио эерэг түвшнээс тэг рүү шилжвэл бид В гаралтын утгыг уншина. Хэрэв энэ үед В гаралт эерэг төлөвт байвал кодлогч цагийн зүүний дагуу, хэрэв В тэг түвшинг гаргавал кодлогч цагийн зүүний дагуу хөдөлнө. кодлогч эсрэг чиглэлд хөдөлдөг. Хоёр гаралтыг уншсанаар бид микроконтроллер ашиглан эргэлтийн чиглэл, кодлогчийн А гаралтын импульсийг тоолох замаар эргэлтийн өнцгийг тооцоолох боломжтой болно.

Шаардлагатай бол кодлогч хэр хурдан эргэхийг тодорхойлохын тулд давтамжийн тооцоог ашиглаж болно.

Манай сургалтын жишээн дээр кодлогч ашиглан бид PWM гаралтыг ашиглан LED-ийн гэрлийг тохируулах болно. Кодлогчоос өгөгдлийг уншихын тулд бид өмнө нь авч үзсэн програм хангамжийн таймер дээр суурилсан аргыг ашиглах болно.

Хамгийн хурдан тохиолдолд бид кодлогчийн бариулыг секундын 1/10-д 180° эргүүлж чадна гэдгийг харгалзан үзвэл энэ нь секундын 1/10-д 6 импульс эсвэл нэг секундэд 60 импульс болно.

Бодит байдал дээр илүү хурдан эргүүлэх боломжгүй юм. Бид бүх хагас мөчлөгийг хянах шаардлагатай байдаг тул давтамж нь ойролцоогоор 120 Герц байх ёстой. Бүрэн итгэлтэй байхын тулд 200 Гц-ийг авъя.

Энэ тохиолдолд бид механик кодлогч ашиглаж байгаа тул холбоо барих боломжтой, мөн бага давтамжийм яриаг төгс шүүдэг.


Програмын таймерын дохион дээр үндэслэн кодлогчийн А гаралтын одоогийн утгыг өмнөх утгатай байнга харьцуулах шаардлагатай байдаг. Хэрэв төлөв эерэгээс тэг болж өөрчлөгдвөл бид гарцын төлөвийг B. төлөвийн санал асуулгын үр дүнгээс хамааран утгын тоолуурыг өсгөж эсвэл бууруулна. LED тод байдал LED. Ойролцоогоор 5 мс (200 Гц) хугацааны интервалтай програмын кодыг доор үзүүлэв.

Arduino анхан шатны код:
/*
** Кодлогч
** LED-ийн гэрлийг хянахын тулд Sparkfun-ийн кодлогчийг ашигладаг
*/

Int тод байдал = 120; // LED тод, хагасаас эхэлнэ
int fadeAmount = 10; // гэрэлтэлтийг өөрчлөх алхам
unsigned long currentTime;
гарын үсэг зураагүй урт loopTime;
const int pin_A = 12; // зүү 12
const int pin_B = 11; // зүү 11
тэмдэггүй тэмдэгт кодлогч_A;
тэмдэггүй кодлогч_B;
тэмдэггүй тэмдэгт кодлогч_A_prev=0;
хүчингүй тохиргоо() (
// 9-р зүүг гаралт гэж зарлана:
pinMode(9, OUTPUT); // 9-р зүүг гаралт болгон тохируулна
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
одоогийн цаг = миллис();
loopTime = одоогийн цаг;
}
хүчингүй давталт() (
одоогийн цаг = миллис();
if(currentTime >= (loopTime + 5))( // 5 мс тутамд төлөвийг шалгана (давтамж 200 Гц)
кодлогч_A = дижитал Унших (pin_A); // кодлогчийн А гаралтын төлөвийг уншина
encoder_B = digitalRead(pin_B); // кодлогчийн гаралт B
if((!encoder_A) && (encoder_A_prev))( // хэрэв төлөв эерэгээс тэг болж өөрчлөгдвөл
хэрэв(кодлогч_B) (
// B гаралт эерэг төлөвт байгаа бөгөөд энэ нь эргэлт цагийн зүүний дагуу байна гэсэн үг юм
// гэрлийн тод байдлыг нэмэгдүүлэх, 255-аас ихгүй байна
хэрэв(гэрэлт + бүдгэрэлтийн хэмжээ)
өөр(
// B гаралт тэг төлөвт байгаа бөгөөд энэ нь эргэлт нь цагийн зүүний эсрэг байна гэсэн үг юм
// гэрлийг багасгах, гэхдээ тэгээс доош биш
if(brightness - fadeAmount >= 0) тод байдал -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // дараагийн давталтад A-ийн утгыг хадгална

AnalogWrite(9, тод байдал); // гэрэлтүүлгийг ес дэх зүү рүү тохируулна

LoopTime = одоогийн цаг;
}
}

Энэхүү анхан шатны жишээн дээр бид дуу чимээ гаргахын тулд пьезо ялгаруулагчтай ажиллахыг авч үзэх болно. Үүнийг хийхийн тулд 20 Гц - 20 кГц давтамжийн мужид дууны долгион үүсгэх боломжийг олгодог пьезоэлектрик мэдрэгчийг авч үзье.

Энэ бол LED нь бүхэл бүтэн хэсэгт байрладаг сонирхогчийн радио загвар юм. Энэ схемийг ашиглан та янз бүрийн гэрэлтүүлэг, хөдөлгөөнт эффект үүсгэж болно. Нарийн төвөгтэй хэлхээТэр ч байтугай янз бүрийн гурван хэмжээст үгсийг харуулах чадвартай. Өөрөөр хэлбэл, энэ нь энгийн хүрээний монитор юм

Серво хөтөч нь янз бүрийн радио удирдлагатай загваруудын дизайны гол элемент бөгөөд хянагч ашиглан удирдах нь энгийн бөгөөд тохиромжтой.


Хяналтын програм нь энгийн бөгөөд ойлгомжтой. Энэ нь servo хөтөчийг удирдахад шаардлагатай бүх тушаалуудыг агуулсан файлыг холбохоос эхэлдэг. Дараа нь бид servo объект үүсгэдэг, жишээ нь servoMain. Дараагийн функц нь setup() бөгөөд бид серво нь хянагчийн ес дэх зүүтэй холбогдсон болохыг зааж өгдөг.

Код:
/*
Arduino Servo
*/
#оруулна
Servo servoMain; // Servo объект

Тохиргоог хүчингүй болгох()
{
servoMain.attach(9); // Servo зүү 9-д холбогдсон
}

хүчингүй давталт()
{
servoMain.write(45); // Сервог зүүн тийш 45° эргүүлнэ
саатал (2000); // 2000 миллисекунд хүлээнэ үү (2 секунд)
servoMain.write(0); // Сервог зүүн тийш 0° эргүүлнэ
саатал(1000); // 1 секундын завсарлага.

саатал (1500); // 1.5 секунд хүлээнэ үү.
servoMain.write(135); // Сервог баруун тийш 135° эргүүлнэ
саатал (3000); // 3 секундын завсарлага.
servoMain.write(180); // Сервог баруун тийш 180° эргүүлнэ
саатал(1000); // 1 секунд хүлээнэ үү.
servoMain.write(90); // Сервог 90° эргүүлнэ. Төв байр суурь
саатал (5000); // 5 секундын завсарлага.
}

Үндсэн функцэд давталт(), бид сервомоторт команд өгч, тэдгээрийн хооронд завсарлага өгдөг.

7 сегментийн үзүүлэлт дээрх Arduino тоолуурын хэлхээ

Эхлэгчдэд зориулсан энэхүү энгийн Arduino төсөл нь ердийн 7 сегментийн нийтлэг катод дэлгэц ашиглан тоолуурын хэлхээг бий болгох явдал юм. Програмын код, доор өгөгдсөн нь товчлуур дарахад 0-ээс 9 хүртэл тоолж эхлэх боломжийг олгоно.

Долоон сегментийн индикатор - 8 LED (сүүлийнх нь цэгийг хариуцдаг) нийтлэг катодын хослол бөгөөд тэдгээрийг хүссэн дарааллаар нь асааж, тоонуудыг үүсгэдэг. Энэ хэлхээнд доорх зургийг харна уу, 3 ба 8-р зүү нь катод руу хуваарилагдсан гэдгийг тэмдэглэх нь зүйтэй.


Баруун талд захидал харилцааны хүснэгтийг харуулав Arduino зүүболон LED заагч зүү.

Энэ төслийн код:

байт тоо = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
хүчингүй тохиргоо() (
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int тоолуур = 0;
bool go_by_switch = үнэн;
int last_input_value = БАГА;
хүчингүй давталт() (
хэрвээ(явдаг_шилж) (
int switch_input_value = digitalRead(9);
хэрэв(сүүлийн_оролтын_утга == БАГА && солих_оролтын_утга == ӨНДӨР) (

}
сүүлийн_оролтын_утга = солих_оролтын_утга;
) өөр (
саатал (500);
тоолуур = (тоолуур + 1) % 10;
}
бичих дугаар(тоолуур);
}

Хүчингүй бичих дугаар(int тоо) (
хэрэв (тоо 9) (
буцаах;
}
байт маск = тоо;
байт одоогийнPinMask = B10000000;
for(int i = 2; i if(маск & currentPinMask) digitalWrite(i,HIGH);
other digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

Та Arduino хавтанг ашиглах боломжийг мэдэгдэхүйц нэмэгдүүлэх боломжтой нэмэлт модулиуд, энэ нь бараг бүх төхөөрөмжийн PIN зүүтэй холбогдож болно. Хамгийн алдартай, сонирхолтой өргөтгөлийн модулиуд эсвэл тэдгээрийг бас нэрлэдэг бамбайг авч үзье.