Эхлэгчдэд зориулсан энгийн Arduino хэлхээ. Эхлэгчдэд зориулсан 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" сургалтыг толилуулж байна. Цуврал нь 10 хичээлээс гадна нэмэлт материалаас бүрдэнэ. Хичээлүүдэд текст заавар, зураг, зааварчилгааны видео орно. Хичээл бүрээс та шаардлагатай бүрэлдэхүүн хэсгүүдийн жагсаалт, програмын жагсаалт, холболтын диаграммыг олох болно. Эдгээр үндсэн 10 хичээлийг дуусгасны дараа та илүү сонирхолтой загварууд болон Arduino-д суурилсан робот бүтээх ажилд шилжих боломжтой болно. Энэхүү сургалт нь эхлэгчдэд зориулагдсан бөгөөд үүнийг эхлүүлэхийн тулд цахилгаан инженерчлэл эсвэл робот техникийн нэмэлт мэдээлэл шаардагддаггүй.

Arduino-ийн тухай товч мэдээлэл

Arduino гэж юу вэ?

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

Arduino болон роботууд хэрхэн холбогдсон бэ?

Хариулт нь маш энгийн - Arduino-г ихэвчлэн ашигладаг робот тархи.

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

Хичээл 1. Arduino дээр анивчдаг LED

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

Гэрэл ялгаруулах диод- урагш чиглэлд цахилгаан гүйдэл дамжих үед оптик цацраг үүсгэдэг хагас дамжуулагч төхөөрөмж.

Хичээл 2. Arduino дээрх товчлуурыг холбох

Энэ зааварт та товчлуур болон LED-ийг Arduino-д хэрхэн холбох талаар сурах болно.

Товчлуурыг дарахад LED асна, товчлуурыг дарахад асахгүй. Энэ нь бас үндсэн загвар юм.

Хичээл 3. Arduino дээр потенциометрийг холбох

Энэ зааварт та потенциометрийг Arduino руу хэрхэн холбох талаар сурах болно.

Потенциометр- Энэ тохируулж эсэргүүцэл бүхий резистор.Потенциометрийг янз бүрийн параметрийн зохицуулагч болгон ашигладаг - дууны хэмжээ, хүч, хүчдэл гэх мэт.Энэ нь бас үндсэн схемүүдийн нэг юм. Манай загварт потенциометрийн бариулыг эргүүлэхээсLED-ийн тод байдал нь үүнээс хамаарна.

Хичээл 4. Arduino дээрх Servo удирдлага

Энэ зааварт та servo-г Arduino-д хэрхэн холбох талаар сурах болно.

Сервонь эргэлтийн өнцгийг тохируулах замаар босоо амны байрлалыг хянах боломжтой мотор юм.

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

Хичээл 5. Arduino дээрх гурван өнгийн LED

Энэ зааварт та гурван өнгийн LED-г Arduino-д хэрхэн холбох талаар сурах болно.

Гурван өнгийн LED(rgb led) - эдгээр нь нэг орон сууцанд өөр өөр өнгийн гурван LED юм. Эдгээр нь резистор байрладаг жижиг хэвлэмэл хэлхээний самбартай эсвэл суурилуулсан резисторгүй ирдэг. Хичээл нь хоёр сонголтыг хамардаг.

Хичээл 6. Arduino дээрх пьезоэлектрик элемент

Энэ хичээлээр та пьезо элементийг Arduino-д хэрхэн холбох талаар сурах болно.

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

Манай загварт дууны давтамжийг программд тохирох параметрүүдийг тохируулах замаар тохируулж болно.

Хичээл 7. Arduino дээрх фоторезистор

Манай сургалтын энэ хичээлээр та фоторезисторыг Arduino-д хэрхэн холбох талаар сурах болно.

Фоторезистор- эсэргүүцэл нь түүн дээр унах гэрлийн тодоос хамаардаг резистор.

Манай загварт LED нь фоторезистор дээрх гэрлийн тод байдал нь тодорхой хэмжээнээс бага байвал л гэрэлтдэг бөгөөд энэ гэрэлтүүлгийг програмаар тохируулж болно.

Хичээл 8. Arduino дээрх хөдөлгөөн мэдрэгч (PIR). Имэйлийг автоматаар илгээх

Манай сургалтын энэ хичээлээр та хөдөлгөөн мэдрэгчийг (PIR) Arduino-д хэрхэн холбох, мөн автоматаар цахим шуудан илгээхийг зохион байгуулах талаар суралцах болно.

Хөдөлгөөн мэдрэгч (PIR)- Хэт улаан туяаны мэдрэгч нь хүн, амьтны хөдөлгөөн, оршихуйг илрүүлэх.

Манай загварт PIR мэдрэгчээс хүний ​​хөдөлгөөний дохиог хүлээн авах үед Arduino компьютерт E-mail илгээх командыг илгээж, захидал автоматаар илгээгддэг.

Хичээл 9. Температур, чийгшлийн мэдрэгчийг DHT11 эсвэл DHT22 холбох

Бидний энэ хичээлээр та DHT11 эсвэл DHT22 температур, чийгшлийн мэдрэгчийг Arduino-д хэрхэн холбох, мөн тэдгээрийн шинж чанарын ялгааг мэдэх болно.

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

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

Хичээл 10. Матриц гарыг холбох

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

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

Хичээл 11. DS3231 бодит цагийн цагийн модулийг холбох

Манай сургалтын сүүлийн хичээлээр та гэр бүлээс бодит цагийн цагийн модулийг хэрхэн холбох талаар сурах болно
Arduino самбар руу DS, мөн янз бүрийн сонирхолтой хэлхээнүүдтэй танилцаарай.

Бодит цагийн цагийн модуль- энэ нь хронометрийн өгөгдлийг (одоогийн цаг, огноо, долоо хоногийн өдөр гэх мэт) бүртгэх зориулалттай цахим хэлхээ бөгөөд бие даасан тэжээлийн эх үүсвэр, бичлэг хийх төхөөрөмжөөс бүрдсэн систем юм.

Өргөдөл. Бэлэн хүрээ болон Arduino роботууд


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

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

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

Өргөдөл. Гар утасны лавлах


- Arduino платформын алгоритм боловсруулагчдын туслах, зорилго нь эцсийн хэрэглэгчдэд гар утасны команд (лавлах ном) авах боломжийг олгох явдал юм.

Өргөдөл нь 3 үндсэн хэсгээс бүрдэнэ.

  • Операторууд;
  • Өгөгдөл;
  • Функцүүд.

Arduino хаанаас худалдаж авах вэ


Arduino иж бүрдэл

Хичээл нэмэлт хичээлээр шинэчлэгдэх болно. Биднийг дага

Өнөөдөр бид Arduino дээр SD болон микро SD картуудыг ашиглах талаар ярих болно. Бид SD картуудыг Arduino руу хэрхэн холбох, мэдээллийг хэрхэн бичих, унших талаар олж мэдэх болно. Нэмэлт санах ой ашиглах нь олон төсөлд маш хэрэгтэй байж болно. Хэрэв та SPI, I2C болон аналог зүү гэж юу болохыг мэдэхгүй байгаа бол өнгөрсөн хичээлүүдийг үзэж, эдгээр Arduino холбооны интерфейсийг ойлгохыг танд зөвлөж байна.

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

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

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

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

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

Энэ нийтлэлд би 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 -- ) (

Энэ симулятор нь Chrome хөтөч дээр хамгийн сайн ажилладаг
Arduino-г илүү нарийвчлан авч үзье.

Arduino бол гадаад хэлхээнд холбогдож болох том компьютер биш. Arduino Uno нь Atmega 328P ашигладаг
Энэ бол самбар дээрх хамгийн том чип юм. Энэ чип нь санах ойд хадгалагдсан программуудыг гүйцэтгэдэг. Та програмыг Arduino IDE ашиглан USB-ээр татаж авах боломжтой. USB порт нь мөн arduino-г эрчим хүчээр хангадаг.

Тусдаа цахилгаан холбогч байдаг. Уг самбар нь янз бүрийн төхөөрөмжийг тэжээхэд шаардлагатай 5v ба 3.3v гэсэн шошготой хоёр тээглүүртэй. Та мөн GND гэж тэмдэглэгдсэн тээглүүрүүдийг олох болно, эдгээр нь газрын тээглүүр юм (газар 0V). Arduino платформ нь мөн 0-13 гэсэн шошготой 14 дижитал тээглүүртэй бөгөөд тэдгээр нь гадаад зангилаатай холбогдож, өндөр эсвэл бага (асаалттай эсвэл унтраах) гэсэн хоёр төлөвтэй байна. Эдгээр контактууд нь гаралт эсвэл оролт хэлбэрээр ажиллах боломжтой, i.e. Тэд зарим өгөгдөл дамжуулах, гадаад төхөөрөмжийг удирдах эсвэл төхөөрөмжөөс өгөгдөл хүлээн авах боломжтой. Самбар дээрх дараагийн зүү нь A0-A5 гэсэн шошготой байна. Эдгээр нь янз бүрийн мэдрэгчээс өгөгдөл хүлээн авах боломжтой аналог оролт юм. Энэ нь температур гэх мэт тодорхой хязгаарыг хэмжих шаардлагатай үед ялангуяа тохиромжтой байдаг. Аналог оролтууд нь тусад нь идэвхжүүлж болох нэмэлт функцуудтай.

Хөгжлийн самбарыг хэрхэн ашиглах вэ.

Талхны самбар нь эд ангиудыг түр зуур холбоход шаардлагатай бөгөөд бүх зүйлийг гагнахын өмнө төхөөрөмж хэрхэн ажилладагийг шалгана.
Дараах бүх жишээг талхны самбар дээр угсарсан бөгөөд ингэснээр та хэлхээнд хурдан өөрчлөлт хийж, эд ангиудыг гагнуурын ажилд төвөг учруулахгүйгээр дахин ашиглах боломжтой болно.

Талхны самбар нь хэсэг, утас оруулах боломжтой эгнээтэй нүхтэй. Эдгээр нүхнүүдийн зарим нь хоорондоо цахилгаанаар холбогдсон байдаг.

Дээд ба доод хоёр эгнээ нь бүхэл хавтангийн дагуу эгнээнд холбогдсон байна. Эдгээр эгнээ нь хэлхээг эрчим хүчээр хангахад ашиглагддаг. Энэ нь 5V эсвэл 3.3V байж болно, гэхдээ аль ч тохиолдолд та хамгийн түрүүнд хийх ёстой зүйл бол зурагт үзүүлсэн шиг 5V болон GND-ийг талхны самбарт холбох явдал юм. Заримдаа эдгээр эгнээний холболтууд нь самбарын дунд эвдэрсэн байж магадгүй бөгөөд хэрэв шаардлагатай бол тэдгээрийг зурган дээрх шиг холбож болно.








Самбарын дунд байрлах үлдсэн нүхнүүд нь таван цооногтой бүлэгт хуваагдана. Эдгээр нь хэлхээний хэсгүүдийг холбоход ашиглагддаг.


Бидний микроконтроллерт холбох хамгийн эхний зүйл бол LED юм. Цахилгааны холболтын диаграммыг зурагт үзүүлэв.

Яагаад хэлхээнд резистор хэрэгтэй вэ? Энэ тохиолдолд энэ нь LED-ээр дамжин өнгөрөх гүйдлийг хязгаарладаг. LED бүр нь тодорхой гүйдэлд зориулагдсан бөгөөд хэрэв энэ гүйдэл илүү өндөр байвал LED амжилтгүй болно. Та Ом-ийн хуулийг ашиглан резистор ямар утгатай байх ёстойг олж мэдэх боломжтой. Мэдэхгүй эсвэл мартсан хүмүүсийн хувьд Ом-ын хуульд гүйдэл ба хүчдэлийн хооронд шугаман хамаарал байдаг гэж хэлдэг. Өөрөөр хэлбэл, бид резистор дээр илүү их хүчдэл хэрэглэх тусам түүгээр илүү их гүйдэл урсах болно.
V=I*R
Хаана В- резистор дээрх хүчдэл
I- резистороор дамжин өнгөрөх гүйдэл
Р- олох шаардлагатай эсэргүүцэл.
Эхлээд бид резистор дээрх хүчдэлийг олж мэдэх хэрэгтэй. Таны ашиглах ихэнх 3мм эсвэл 5мм LED нь 3V хүчдэлтэй байдаг. Энэ нь бид резистор дээр 5-3 = 2V-ийг унтраах хэрэгтэй гэсэн үг юм.

Дараа нь бид резистороор дамжин өнгөрөх гүйдлийг тооцоолох болно.
Ихэнх 3мм ба 5мм LED нь 20мА-д бүрэн гэрэлтдэг. Үүнээс их гүйдэл нь тэдгээрийг идэвхгүй болгож, бага эрчимтэй гүйдэл нь ямар ч хор хөнөөл учруулахгүйгээр гэрэлтүүлгийг бууруулдаг.

Тиймээс бид LED-ийг 20мА гүйдэл дамжуулахын тулд 5V хэлхээнд холбохыг хүсч байна. Бүх хэсгүүд нь нэг хэлхээнд багтсан тул резистор нь 20 мА гүйдэлтэй байх болно.
Бид авдаг
2V = 20 мА * R
2V = 0.02A * R
R = 100 Ом

100 Ом бол хамгийн бага эсэргүүцэл бөгөөд LED нь шинж чанараараа зарим өөрчлөлттэй байдаг тул арай илүү ашиглах нь дээр.
Энэ жишээнд 220 ом эсэргүүцэл ашигласан. Гагцхүү зохиолч олонтой учир: нүд ирмэх: .

LED-ийг самбарын голд байрлах нүхэнд оруулаад түүний урт утас нь резисторын аль нэгэнд холбогдсон байна. Резисторын хоёр дахь төгсгөлийг 5V-д холбож, LED-ийн хоёр дахь утсыг GND-д холбоно. LED гэрэл асах ёстой.

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

Гэхдээ резисторыг хэрхэн холбох нь ямар ч ялгаагүй. Та үүнийг эргүүлж эсвэл LED-ийн өөр зүүтэй холбож үзээрэй, энэ нь хэлхээний ажиллагаанд нөлөөлөхгүй. Энэ нь LED-ээр дамжих гүйдлийг хязгаарлах болно.

Arduino Sketch-ийн анатоми.

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

Arduino анивчдаг LED



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

Энэ функцийг ашигладаг тохируулах()програмын нэг хэсэг бөгөөд оролт болгон ашиглах тээглүүрүүдийг эхлүүлэхэд үйлчилдэг (ОРОЛТ)эсвэл гарах (ГАРЦ). Та зүүг тус тус тохируулах хүртэл өгөгдлийг унших, бичих боломжгүй болно pinMode. Энэ функц нь хоёр аргументтай: Пин коднь таны ашиглах пин дугаар юм.

Горим-зүү хэрхэн ажиллахыг тохируулна. Орцонд (ОРОЛТ)эсвэл гарах (ГАРЦ). LED-ийг асаахын тулд бид дохио өгөх ёстой FROM Arduino. Үүнийг хийхийн тулд бид гаралтын зүүг тохируулна.
- энэ функцийг төлөвийг тохируулахад ашигладаг (төр)пина (Пин код). Хоёр үндсэн муж байдаг (үнэндээ 3 нь), нэг нь ӨНДӨР, зүү дээр 5V байх болно, энэ нь өөр зүйл юм Багаба зүү нь 0v байх болно. Энэ нь LED-ийг асаахын тулд бид LED-тэй холбогдсон зүүг өндөр түвшинд тохируулах хэрэгтэй гэсэн үг юм ӨНДӨР.

Саатал. Мсек-д заасан хугацаанд програмын ажиллагааг хойшлуулах үйлчилгээ үзүүлдэг.
LED анивчдаг кодыг доор харуулав.
//LED Blink int ledPin = 7;//LED холбогдсон Arduino зүү хүчингүй тохиргоо() ( pinMode(ledPin, OUTPUT);// зүүг OUTPUT болгож тохируулах) хүчингүй давталт() ( digitalWrite(ledPin, HIGH) ;// LED саатлыг асаах(1000);//1000 мс (1 сек) дижитал бичих (ledPin, LOW) хойшлуулах;//LED саатлыг унтраах (1000);//1 сек хүлээх)

Кодын жижиг тайлбар.
"//" -ээр эхэлсэн мөрүүд нь тайлбар бөгөөд Arduino үүнийг үл тоомсорлодог.
Бүх тушаалууд цэг таслалаар төгсдөг бөгөөд хэрэв та тэдгээрийг мартвал алдааны мэдэгдэл хүлээн авах болно.

ledPinхувьсагч юм. Хувьсагчдыг утгыг хадгалах программд ашигладаг. Энэ жишээнд хувьсагч ledPinутгыг 7-д өгсөн, энэ нь Arduino зүү дугаар юм. Arduino програм нь хувьсагчтай мөртэй тулгарах үед ledPin, энэ нь бидний өмнө заасан утгыг ашиглах болно.
Тиймээс бичлэг хий pinMode(ledPin, OUTPUT)бичлэгтэй төстэй pinMode(7, OUTPUT).
Гэхдээ эхний тохиолдолд та хувьсагчийг өөрчлөхөд л хангалттай бөгөөд энэ нь ашигласан мөр бүрт өөрчлөгдөх бөгөөд хоёр дахь тохиолдолд хувьсагчийг өөрчлөхийн тулд та тушаал бүрт гараар өөрчлөлт хийх шаардлагатай болно.

Эхний мөрөнд хувьсагчийн төрлийг заана. Arduino программчлахдаа хувьсагчийн төрлийг байнга зарлах нь чухал. Одоохондоо үүнийг мэдэхэд л хангалттай INTсөрөг ба эерэг тоонуудыг зарладаг.
Доорх нь ноорог симуляци юм. Хэлхээ ажиллаж байгаа эсэхийг харахын тулд эхлүүлэх дээр дарна уу.

Хүлээгдэж байсанчлан LED унтарч, нэг секундын дараа дахин асна. Хэрхэн ажиллаж байгааг харахын тулд саатлыг өөрчилнө үү.

Олон тооны LED-ийн хяналт.

Энэ жишээн дээр та олон LED-ийг хэрхэн удирдах талаар сурах болно. Үүнийг хийхийн тулд самбар дээр дахин 3 LED суулгаж, доор үзүүлсэн шиг резистор болон Arduino зүүтэй холбоно.

LED-үүдийг нэг нэгээр нь асаах, унтраахын тулд та үүнтэй төстэй програм бичих хэрэгтэй.
//Олон LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; хүчингүй тохиргоо() ( // тээглүүрүүдийг OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) хүчингүй давталт() (digitalWrite(led1Pin, HIGH) );//LED саатлыг асаана(1000);//дижитал бичих 1 секундын саатал(led1Pin, LOW);//LED саатлыг унтраа (1000);//1 сек саатал //бусад 3-т мөн адил хийнэ LEDs digitalWrite(led2Pin, HIGH);//LED саатлыг асаана(1000);//1 сек дижиталWrite (led2Pin, LOW) хойшлуулна;//LED саатлыг унтраана(1000);//1 сек дижитал бичих(led3Pin, HIGH) хойшлуулна );// LED саатлыг асаана (1000);// дижитал бичих 1 секундын саатал(led3Pin, LOW);//LED саатлыг унтраах(1000);//дижитал бичих (led4Pin, HIGH);//асаах 1 сек. LED саатал(1000);// дижитал бичих 1 сек саатал(led4Pin, LOW);//LED саатлыг унтраах(1000);//1 сек саатал)

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

DigitalWrite(led4Pin, HIGH); саатал(1000); digitalWrite(led4Pin, LOW); саатал(1000);
хавсралтад бүрэн ноорог код (татаж авсан: 1260)

LED гэрлийн тохируулга

Заримдаа та програмын LED гэрлийг өөрчлөх шаардлагатай болно. Үүнийг командыг ашиглан хийж болно analogWrite() . Энэ команд нь LED-ийг маш хурдан асааж унтраадаг тул нүд анивчихыг харахгүй. Хэрэв LED нь хагас удаа асч, хагас удаа унтарсан бол энэ нь хагас удаа гэрэлтэж байгаа мэт харагдах болно. Үүнийг импульсийн өргөн модуляц гэж нэрлэдэг (англи хэлээр PWM эсвэл PWM). Шимийг дижитал код ашиглан "аналог" бүрэлдэхүүн хэсгийг удирдахад ашиглаж болох тул ихэвчлэн ашигладаг. Бүх Arduino зүү нь эдгээр зорилгод тохирохгүй. Зөвхөн ийм тэмдэглэгээ хийсэн дүгнэлтүүд л болно " ~ ". Та үүнийг 3,5,6,9,10,11 шонгийн хажууд харах болно.
Өөрийнхөө LED-ийн аль нэгийг PWM зүүтэй холбоно уу (зохиогчийн хувьд энэ нь 9-р зүү). Одоо LED анивчсан ноорог ажиллуулна уу, гэхдээ эхлээд командыг өөрчил digitalWrite()дээр analogWrite(). analogWrite()хоёр аргументтай: эхнийх нь зүү дугаар, хоёр дахь нь PWM утга (0-255), LED-ийн хувьд энэ нь тэдний тод байдал, цахилгаан моторын хувьд эргэлтийн хурд байх болно. Өөр өөр LED гэрэлтүүлгийн жишээ кодыг доор харуулав.
//LED-ийн гэрэлтүүлгийг өөрчлөх int ledPin = 9;// LED нь энэ пин хүчингүй тохиргоонд холбогдсон байна() ( pinMode(ledPin, OUTPUT);// гаралтын зүүг эхлүүлэх ) void loop() ( analogWrite() ledPin, 255);// бүрэн гэрэлтүүлэг (255/255 = 1) саатал(1000);//1 сек дижитал бичих (ledPin, LOW) түр зогсоох;//LED саатлыг унтраах(1000);//analogWrite 1 сек түр зогсоох( ledPin, 191);//гэрэлт 3/4 (191/255 ~= 0.75) саатал (1000);//дижитал бичих 1 сек түр зогсоох(ledPin, LOW);//LED саатлыг унтраах(1000);// 1 сек түр зогсоох analogWrite(ledPin, 127); //хагас тод (127/255 ~= 0.5) саатал (1000);//1 сек дижитал бичих (ledPin, LOW) түр зогсоох;//LED саатлыг унтраах(1000);/ /1 сек түр зогсоох analogWrite(ledPin, 63); // улирлын гэрэлтүүлэг (63/255 ~= 0.25) саатал (1000);//1 сек дижитал бичих (ledPin, LOW) түр зогсоох;//LED саатлыг унтраах(1000) ;//1 сек түр зогсоох)

Командын PWM утгыг өөрчлөхийг оролдоно уу analogWrite()Энэ нь гэрэл гэгээнд хэрхэн нөлөөлж байгааг харах.
Дараа нь та гэрэлтүүлгийг бүрэн байдлаас тэг хүртэл хэрхэн жигд тохируулах талаар сурах болно. Мэдээжийн хэрэг та кодыг 255 удаа хуулж болно
analogWrite(ledPin, тод байдал); саатал(5);//богино саатлын тод байдал = тод байдал + 1;
Гэхдээ энэ нь практик биш гэдгийг та ойлгож байна. Үүнийг хийх хамгийн сайн арга бол бидний өмнө нь хэрэглэж байсан FOR гогцоо ашиглах явдал юм.
Дараах жишээнд хоёр гогцоо ашиглаж байгаа бөгөөд нэг нь гэрэлтүүлгийг 255-аас 0 болгон бууруулна
for (int тод байдал=0; тод байдал=0; тод байдал--)( analogWrite(ledPin, тод байдал); саатал(5); )
саатал(5)гэрэл гэгээ буурах хурдыг удаашруулахад ашигладаг 5*256=1280ms=1.28s)
Эхний мөрөнд " тод байдал -" гогцоо давтагдах бүрт гэрэлтүүлгийн утгыг 1-ээр бууруулахын тулд. Давталт үргэлжлэх хүртэл үргэлжилнэ гэдгийг анхаарна уу. тод байдал >=0.Тэмдгийг солих > тэмдэг дээр >= бид 0-ийг гэрэлтүүлгийн мужид оруулсан. Энэ тоймыг доор загварчилсан болно. //гэрэлтүүлгийг жигд өөрчлөх int ledPin = 9;// LED нь энэ пин-д холбогдсон байна void setup() ( pinMode(ledPin, OUTPUT);// гаралтын зүүг эхлүүлэх) void loop() ( //зөвхөн нэмэгдүүлнэ тод байдал (0-ээс 255 ) хувьд (int тод байдал=0; тод байдал=0; тод байдал--)( analogWrite(ledPin, тод байдал); саатал(5); ) саатал(1000);//1 сек хүлээнэ //гэрэлтийг жигд бууруулах (255-аас 0) (int тод байдал=255; тод байдал>=0; тод байдал--)( analogWrite(ledPin, тод байдал); саатал(5); ) саатал(1000);//1 сек хүлээх ) )
Энэ нь тийм ч их харагдахгүй байгаа ч санаа нь тодорхой байна.

RGB LED ба Arduino

RGB LED нь үнэндээ нэг багц дахь гурван өөр өнгийн LED юм.

Өөр өөр гэрэл гэгээтэй өөр өөр LED-үүдийг оруулснаар та тэдгээрийг нэгтгэж өөр өөр өнгө үүсгэх боломжтой. Гэрэлтүүлгийн түвшний тоо 256 байдаг Arduino-ийн хувьд та 256^3=16581375 боломжтой өнгө авах болно. Бодит байдал дээр тэд цөөхөн байх нь ойлгомжтой.
Бидний ашиглах LED бол нийтлэг катод юм. Тэдгээр. бүх гурван LED нь катодоор нэг терминал руу бүтцийн хувьд холбогдсон. Бид энэ зүүг GND зүүтэй холбоно. Үлдсэн зүүг хязгаарлах резистороор дамжуулан PWM зүүтэй холбох ёстой. Зохиогч 9-11-р зүү ашигласан.Ингэснээр LED тус бүрийг тусад нь удирдах боломжтой болно. Эхний ноорог нь LED бүрийг тус тусад нь хэрхэн асаахыг харуулж байна.



//RGB LED - тест //зүү холболтуудыг int red = 9; int ногоон = 10; int цэнхэр = 11; хүчингүй тохиргоо())( pinMode(улаан, OUTPUT); pinMode(цэнхэр, OUTPUT); pinMode(ногоон, OUTPUT); ) хүчингүй давталт())( //улаан LED digitalWrite (улаан, ӨНДӨР) асаах/унтраах; саатал(500) ; digitalWrite(улаан, БАГА); саатал(500); //ногоон LED дижитал бичвэрийг асаах/унтраах (ногоон, өндөр); саатал(500); digitalWrite(ногоон, БАГА); саатал(500); // цэнхэр LED дижитал бичих(цэнхэр, өндөр); саатал(500); дижитал бичих(цэнхэр, БАГА); саатал(500); ) асаах/унтраах

Дараах жишээнд тушаалуудыг ашигладаг analogWrite()мөн LED-ийн санамсаргүй тод байдлын өөр утгыг авах. Та янз бүрийн өнгийг санамсаргүй байдлаар өөрчлөхийг харах болно.
//RGB LED - санамсаргүй өнгө //pin холболтууд int red = 9; int ногоон = 10; int цэнхэр = 11; хүчингүй тохиргоо())( pinMode(улаан, OUTPUT); pinMode(цэнхэр, OUTPUT); pinMode(ногоон, OUTPUT); ) хүчингүй давталт())( //санамсаргүй өнгө сонгох analogWrite(улаан, санамсаргүй(256)); analogWrite(цэнхэр, санамсаргүй(256)); analogWrite(ногоон, санамсаргүй(256)); саатал(1000);//нэг секунд хүлээнэ үү)

Санамсаргүй(256)-0-ээс 255 хүртэлх санамсаргүй тоог буцаана.
Хавсаргасан файлд улаанаас ногоон, дараа нь цэнхэр, улаан, ногоон гэх мэт өнгөний жигд шилжилтийг харуулах ноорог байна. (татаж авсан: 348)
Жишээ ноорог ажиллаж байгаа ч давхардсан код их байна. Та өөрийн туслах функцийг бичиж, нэг өнгөнөөс нөгөөд шилжих кодыг хялбаршуулж болно.
Энэ нь дараах байдалтай байх болно. (татаж авсан: 385)
Функцийн тодорхойлолтыг хэсэг хэсгээр нь авч үзье. Функцийг дууддаг faderмөн хоёр аргументтай. Аргумент бүр таслалаар тусгаарлагдсан бөгөөд функцийн тодорхойлолтын эхний мөрөнд заасан төрөлтэй байна: хүчингүй бүдгэрүүлэгч (int color1, int color2). Та хоёр аргументыг дараах байдлаар зарлаж байгааг харж байна int, мөн тэдэнд нэр өгсөн өнгө1Тэгээд өнгө2функцийг тодорхойлох нөхцөлийн хувьсагч болгон. ХүчингүйЭнэ нь функц ямар ч утгыг буцаадаггүй, зүгээр л тушаалуудыг гүйцэтгэдэг гэсэн үг юм. Хэрэв та үржүүлгийн үр дүнг буцаадаг функц бичих шаардлагатай бол дараах байдалтай харагдана.
int үржүүлэгч(int number1, int number2)( int бүтээгдэхүүн = тоо1*тоо2; буцах бүтээгдэхүүн; )
Бид Type-г хэрхэн зарласныг анзаараарай intоронд нь буцах төрөл болгон
хүчингүй.
Функц дотор та өмнөх ноорог дээр аль хэдийн ашигласан командууд байгаа бөгөөд зөвхөн зүү дугаарыг сольсон болно. өнгө1Тэгээд өнгө2. Функцийг дууддаг fader, түүний аргументуудыг дараах байдлаар тооцно өнгө1 = улаанТэгээд өнгө2 = ногоон. Архив нь функцуудыг ашиглан бүрэн ноорог агуулж байна (татаж авсан: 288)

Товчлуур

Дараагийн ноорог нь ердийн нээлттэй контакттай товчлуурыг түгжээгүйгээр ашиглах болно.


Энэ нь товчлуур дарагдаагүй байхад түүгээр гүйдэл гарахгүй бөгөөд суллагдсаны дараа товчлуур анхны байрлалдаа буцаж ирдэг гэсэн үг юм.
Товчлуураас гадна хэлхээ нь резисторыг ашигладаг. Энэ тохиолдолд энэ нь гүйдлийг хязгаарлахгүй, харин товчлуурыг 0V (GND) хүртэл "татах" болно. Тэдгээр. Товчлуурыг дарах хүртэл түүний холбогдсон Arduino зүү багасна. Хэлхээнд ашигласан резистор нь 10 кОм байна.


//товчлуур хэзээ дарагдсаныг тодорхойлох int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);// оролтын зүүг эхлүүлэх Serial.begin(9600);//цуваа портыг эхлүүлэх) хүчингүй давталт())( if (digitalRead(buttonPin)==ӨНДӨР) )(//хэрэв товчлуур дарагдсан бол Serial.println("дарагдсан"); // "дарагдсан" харуулах ) өөр ( Serial.println("дарагдаагүй"); // өөрөөр "дарагдсан" ) )
Энэ ноорог дээр хэд хэдэн шинэ тушаалууд байна.
-Энэ команд нь бидний шалгаж буй гаралтын Өндөр (өндөр түвшин) ба бага (бага түвшин) гэсэн утгыг авдаг. Энэ гаралтыг эхлээд setup()-д оролт болгон тохируулах ёстой.
; // Энд товчлуурын Pin нь товчлуур холбогдсон пин дугаар юм.
Цуваа порт нь хянагч өөрөө програмыг гүйцэтгэж байх үед Arduino-г компьютерт мессеж илгээх боломжийг олгодог. Энэ нь програмыг дибаг хийх, бусад төхөөрөмж эсвэл програм руу мессеж илгээхэд хэрэгтэй. Цуваа портоор (UART эсвэл USART гэж нэрлэдэг) өгөгдөл дамжуулахыг идэвхжүүлэхийн тулд та үүнийг тохиргоонд () эхлүүлэх хэрэгтэй.

Serial.begin()зөвхөн нэг аргументтай - энэ нь Arduino болон компьютерийн хоорондох өгөгдөл дамжуулах хурд юм.
Ноорог нь Arduino IDE (Tools >> Serial Monitor) дээр дэлгэцэн дээр мессеж харуулах командыг ашигладаг.
- дизайн нь хэд хэдэн шалгалтыг нэг дор нэгтгэх замаар програмын гүйцэтгэлийн явцыг хянах боломжийг танд олгоно.
Хэрэв digitalRead нь ӨНДӨР гэж буцвал дэлгэц дээр "дарагдсан" гэсэн үг гарч ирнэ. Үгүй бол (өөрөөр бол) дэлгэц дээр "суллагдсан" гэсэн үг гарч ирнэ. Одоо та товчлуур дээр дарж LED-г асааж, унтрааж үзээрэй.
//LED гаралт бүхий товчлуур дарах илрүүлэлт int buttonPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//энэ удаад бид товчлуурын зүүг INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin) болгон тохируулна. )= =ӨНДӨР)( digitalWrite(ledPin, HIGH); Serial.println("дарагдсан"); ) өөр (digitalWrite(ledPin,LOW); Serial.println("дараагүй"); ) )

Аналог оролт.

аналог Уншихнь Arduino аналог тээглүүрүүдийн аль нэгээс өгөгдлийг унших боломжийг олгодог бөгөөд 0 (0V) -ээс 1023 (5V) хүртэлх утгыг харуулна. Хэрэв аналог оролт дээрх хүчдэл 2.5V байвал 2.5 / 5 * 1023 = 512 хэвлэнэ.
аналог Уншихзөвхөн нэг аргументтай - Энэ бол аналог оролтын дугаар (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 асч, гэрэлтүүлгийг потенциометрээр удирдана.
// LED гаралт ба хувьсах эрчимтэй товчлуур дарах илрүүлэлт int buttonPin = 7; int ledPin = 9; int potPin = A0; хүчингүй тохиргоо())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) хүчингүй давталт())( if (digitalRead(buttonPin)==HIGH)(//товчлуур дарагдсан бол int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//потоор тохируулсан эрчмийг асаах Serial.println("дарагдсан"); ) else (digitalWrite(ledPin, LOW);//товчлуур дарагдаагүй бол унтраах Serial.println("дараагүй"); ) )

Шинэ гар хийцийн бүтээгдэхүүнийг шуудангийн газарт хүргэх

Гар хийцийн шинэ бүтээгдэхүүнийг имэйлээр хүлээн авна уу. Спам байхгүй, зөвхөн хэрэгтэй санаанууд!