Агуулгын хүснэгт:

Одтой тэнгэрийн удирдлага: 9 алхам (зурагтай)
Одтой тэнгэрийн удирдлага: 9 алхам (зурагтай)

Видео: Одтой тэнгэрийн удирдлага: 9 алхам (зурагтай)

Видео: Одтой тэнгэрийн удирдлага: 9 алхам (зурагтай)
Видео: zohiomj 2024, Арваннэгдүгээр
Anonim
Image
Image
Одтой тэнгэрийн удирдлага зангиа
Одтой тэнгэрийн удирдлага зангиа
Одтой тэнгэрийн удирдлага зангиа
Одтой тэнгэрийн удирдлага зангиа

Хэсэг хугацааны өмнө би долларын дэлгүүрээс fiberoptics бүхий хүүхдийн тоглоом олж, үүнийг юу хийх талаар бодож эхлэв.

Надад байсан галзуу санаануудын нэг бол одтой тэнгэрийн нөлөөгөөр зангиа хийх явдал байв.

Надад энэ төсөлд тохирсон arduino pro mini's, adafruit хавтан, батерейнууд байсаар л байсан.

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

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

Энэ нь arduino pro mini, adafruit powerboost 500 цэнэглэгч, emmerich icr 18650nh-sp, 5 цагаан LED дээр ажилладаг. Код нь LED -ийн өөрчлөлтийн тод байдлыг санамсаргүй болгодог. (Видеоны эхний 40 секунд нь 3 дахин хурдтай)

Алхам 1: Схем ба техник хангамж

Схем ба техник хангамж
Схем ба техник хангамж
Схем ба техник хангамж
Схем ба техник хангамж

Би дараах тоног төхөөрөмжийг ашиглаж байна.

- Мөсөн цагаан LED, 220 Ом эсэргүүцэлтэй ПХБ.

-Arduino pro mini (би тоглосон)

-Adafruit Powerboost 500 цэнэглэгч

-Эммерих Ли-ион ICU-18650NH-SP

- Оптик утас (өөр өөр хэмжээтэй)

Алхам 2: ПХБ -ийг LED дээр байрлуулах

ПХБ -ийг LED дээр байрлуулах
ПХБ -ийг LED дээр байрлуулах
ПХБ -ийг LED дээр байрлуулах
ПХБ -ийг LED дээр байрлуулах
ПХБ -ийг LED дээр байрлуулах
ПХБ -ийг LED дээр байрлуулах

Би LED барихын тулд ПХБ -ийн тууз хайчилж, гол тээглүүр дээр гагнахын тулд LED тээглүүрийг ашигласан.

Бүх катодуудыг (-) GND-т холбож, гол ПХБ-д наалдсан тээглүүрийн талыг ашигласан.

Бүх анодуудыг (+) резистор, кабелиар arduino руу холбосон.

LED тус бүрийг дараах ХОУХ -ны портуудтай холбох ёстой: 3, 5, 6, 9, 10, 11

Тэнэг намайг энэ төслөөр маш их алдаа гаргаж, ХОУХ -ны зөв портуудыг шалгахаа мартсан тул хэдхэн хоногийн дараа дахин зарах шаардлагатай болсон. Өндөр/Бага туршиж үзсэн тул үүнийг сүүлд л анзаарсан.

Би 7 LED -ээр эхэлсэн боловч зөвхөн 6 ХОУХ -ны порт байсан бөгөөд миний дахин зарсан LED -ийн нэг нь нас барсан. Би дөнгөж 5 ажиллаж байгаа LED -ээ хадгалж, 6 -рыг нь ашиглахгүй байна.

Алхам 3: Хайрцаг хийх

Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх
Хайрцаг хийх

Би Bosch GRO (Dremel гэх мэт) болон өрмийн тусламжтайгаар зайны хэлбэр, товчлуур, микро-USB порт, Arduino-ийн толгой ба оптик утаснуудыг таслав. (тоосны маск ашиглаарай!)

Батерейг хайрцагт 2 туузаар наасан.

Адафрутын самбар ба ПХБ -ийг бэхлэхдээ боолтыг ашигласан.

Нээх, хаах үед үүсэх үрэлтийн улмаас зарим утас гэмтсэн байна. Дахин давтагдахгүйн тулд би тэдгээрийг дахин зарж, цавуу хэрэглэх шаардлагатай болсон.

Алхам 4: зангиа бэлтгэх

Зангиа бэлтгэж байна
Зангиа бэлтгэж байна
Зангиа бэлдэж байна
Зангиа бэлдэж байна
Зангиа бэлдэж байна
Зангиа бэлдэж байна

Резинэн хуудсанд тааруулахын тулд зангианы доод хэсгээс оёдолыг арилгав.

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

Би оёдлын машин сайн мэддэггүй болохоор хөөрхөн ээж маань зангианы ард цахилгаан товч тавьдаг.

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

Хайрцаг, зангиа бэлэн боллоо. Fiberoptics -ийг нааж өгөх цаг боллоо!

Алхам 5: Fiberoptics -ийг нааж болно

Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна
Fiberoptics -ийг нааж байна

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

Ил тод цавуу хэрэглэхээ мартуузай! Миний хэрэглэж байсан цавуу нь маш удаан хатааж, эхний LED дээр туршиж үзсэн хурдан хатаадаг цавуу нь цагаан болж, анхны LED -ийн зарим ширхэгийг арай гэрэлтүүлэхгүй болгосон.

Дээрээс гэрэл гоожихгүй байх, LED -ийг салгахын тулд би жижиг хар резинэн хуудас наасан.

Нэг хуудас нь хэргийг хаахаас сэргийлж, тагийг нь таглахгүйн тулд резинэн тууз нэмэв.

Алхам 6: Fiberoptics -ийг зангиагаар оруулах

Fiberoptics -ийг зангиагаар оруулах
Fiberoptics -ийг зангиагаар оруулах
Fiberoptics -ийг зангиагаар оруулах
Fiberoptics -ийг зангиагаар оруулах
Fiberoptics -ийг зангиагаар оруулах
Fiberoptics -ийг зангиагаар оруулах

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

Би хайрцгийнхаа жинг хадгалахын тулд зангианыхаа жижиг хэсэг хүртэл явах ёстой байсан нуруун дээр хар зурвас наасан боловч бүх утсыг салгаад утаснуудын хурцадмал байдлыг мэдэрсний дараа би наахаар шийдсэн. тэнцсэн бүх зүйл илүү сайн санаа байсан бөгөөд зурвасыг таслав.

Тоглоомын шилэн кабель маш богино байсан тул зангианы бүх хэсэгт тааруулахад хэцүү байв. Би хайрцгийн байрлалыг хязгаарлаж, бүх зүйлийг хүссэнээрээ хавтгай болгоход хэцүү байсан.

Алхам 7: Fiberoptics -ийг зангианд наалдуулах

Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна
Fiberoptics -ийг зангиа руу нааж байна

Утасыг резинэн хуудаснаас гаргахгүй байх, зангиаг тэгш болгохын тулд би бүх шилэн кабелийг резинэн хуудсан дээр наасан.

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

Цавуу хатсаны дараа би урд талын утаснуудаа хайчилж, хамгийн өндөр утсан дээрх резинэн хуудсыг бага зэрэг таслав, зангиа нь хэтэрхий урт байсан.

Цагаан цамцтай зургуудыг хамгийн сүүлчийн резинийг огтлохоос өмнө хийдэг.

Алхам 8: Код

Миний зангианд зориулж бичсэн кодын доор.

Бүх LED нь "дундаж" гэсэн утгатай байдаг (үнэндээ дундаж биш харин дунд зэргийн гэрэл).

Дундаж хэмжээнд хүрсэн даруйдаа 3/4 харьцаагаар илүү бага гэрэлтүүлгийг сонгох болно. Энэ нь санамсаргүй байдлаар хамгийн бага тод байдал, хамгийн их тод байдал, хамгийн бага ба хамгийн их гэрэлтүүлгийг хүлээх хугацаа, тойрог тутамд (1-255) 5 урьдчилан тохируулсан утгаас нэмэгдүүлэх эсвэл бууруулах хурдыг санамсаргүй байдлаар тохируулдаг. Дараа нь дахин дундаж түвшинд хүрэх хүртэл мөчлөг хийх болно. Зөвхөн 2 LED нэгэн зэрэг өндөр мөчлөгт байж болно.

Муж бүр нь бүхэл тоо (1-7) -аар илэрхийлэгддэг бөгөөд энэ нь дунджаас доогуур, дунджаас доогуур, бага хүлээх, шинэчлэх гэх мэтийг тодорхойлдог.

Arduino -д код байршуулах талаар мэдээлэл авахыг хүсвэл www.arduino.cc хаягаар орж үзнэ үү

/ * Одтой тэнгэрийн зангиа * * Энэ бол 5 LED -ийг дунджаас санамсаргүй байдлаар бүдгэрүүлэх скрипт юм. * Энэ тохиолдолд эдгээрийг тэнцсэн байдлаар хэрэгжүүлнэ. * * Дээш/доош боломж = 1/4 дээш, 3/4 доош, дээд тал нь 2 * дээд тал нь нэгэн зэрэг дээшлэх боломжтой. * * Дундаж түвшин хэвээр байна. * Хамгийн бага, хамгийн их, цаг хугацааны сонголтууд санамсаргүй байдлаар өөрчлөгддөг * LED нь дахин дунджид хүрэх бүрт 5 сонголтоос. * * Билли Жасперс бүтээсэн, 2019 оны 5 -р сар. *

/ Тээглүүр зарлах

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Цаг хугацааны хувьсагчид

гарын үсэг зураагүй урт currentTime; гарын үсэг зураагүй удаан хүлээх цаг [5]; гарын үсэг зураагүй урт lastRound;

// LED хувьсагчид

int brightMin [5] = {10, 10, 10, 10, 10}; // Хамгийн бага гэрэл int parlakAvg [5] = {200, 200, 200, 200, 200}; // дундаж тод байдал int brightMax [5] = {240, 240, 240, 240, 240}; // Хамгийн их гэрэл int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Хүлээх хугацаа int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Хүлээх хугацаа int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Хүлээх хугацаа int increment [5] = {2, 5, 4, 5, 2}; // Тодруулгын өсөлт int currentBright [5] = {200, 230, 210, 210, 235}; // Одоогийн тод байдал

// LED хувьсагчийн боломжууд

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Хамгийн бага гэрэлтүүлгийн боломж int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Гэрлийн дээд боломж int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Гэрэл багатай боломжуудыг хүлээх хугацаа int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Дундаж гэрэлтүүлгийн боломжуудыг хүлээх хугацаа int incrementPos [5] = {2, 4, 5, 3, 1}; // гэрэлтэх боломжийг нэмэгдүүлэх

// Хувьсагч

bool эхлүүлэх = үнэн; // Эхлэх тохиргоог эхлүүлэх шаардлагатай юу?

// Чиглэлийн хувьсагчид

/* 0 = Дунджаар хүлээж байна 1 = Дундаас 2 руу явна = Хүлээж байна Бага 3 = Багаас Дунд хүртэл явна 4 = Дундаас 5 хүртэл явна = Макс 6 дээр хүлээнэ үү = Дундаж дунджид хүрнэ 7 = Хувьсагчдыг шинэчилж байна// int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {худал, худал, хуурамч, худал, худал}; // Лед хүлээж байна уу?

// Санамсаргүй хувьсагчид

урт санамсаргүй тоо; // Санамсаргүй тоог хадгалах урт Long randomNumberTwo; // Хоёр дахь санамсаргүй тоог хадгалах урт

// тоолуур

int i = 0; // Гол давталтын тоолуур

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

Цуваа.begin (115200); // Цуваа randomSeed эхлүүлэх (analogRead (A0)); // Санамсаргүй үрийг тохируулах

// Үр дүнг зарлах

pinMode (LED01, OUTPUT); pinMode (LED02, OUTPUT); pinMode (LED03, OUTPUT); pinMode (LED04, OUTPUT); pinMode (LED05, OUTPUT); }

// LED -д өгөгдөл бичих

хүчингүй бичихToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }

// Үндсэн гогцоо

void loop () {if (startup) {// Startup settings lastRound = millis (); // lastRound -ийг ачаалах writeToLED () дээр тохируулах; // LED өгөгдөлд эхлэх өгөгдлийг бичих = худал; // Эхлэлийг унтраах} currentTime = millis (); // Одоогийн цагийг тохируулах

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Шинэчлэх Led randomNumber = санамсаргүй (5); brightMin = brightMinPos [randomNumber]; // Хамгийн бага тод байдлын хувьд санамсаргүй утгыг тохируулах randomNumber = random (5); brightMax = brightMaxPos [randomNumber]; // Хамгийн их тод байдлын хувьд санамсаргүй утгыг тохируулах randomNumber = random (5); timeWaitLow = timeLowPos [randomNumber]; // Хүлээх хугацаа багатай үед санамсаргүй утгыг тохируулах randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Хүлээх хугацаа өндөр байх үед санамсаргүй утгыг тохируулах randomNumber = random (5); timeWaitAvg = timeAvgPos [randomNumber]; // Хүлээх дундаж хугацааны хувьд санамсаргүй утгыг тохируулах randomNumber = random (5); increment = incrementPos [randomNumber]; // Санамсаргүй утгыг нэмэгдүүлэхийн тулд randomNumber = random (2); // randomNumberTwo = random (2) чиглэлд санамсаргүй утгыг тохируулах; // Чиглэлийн хувьд санамсаргүй утгыг тохируулна уу (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Хэрэв хамгийн бага цэг дээр бол: Хүлээж буй дундаж руу орно уу} өөр {currentBright = currentBright +нэмэгдэл ; // Өөр: Илүү өндөр тод байдал}} if if (statusLED == 2) {// -2- If (! StatusWaiting ) {/ -2; // Хүлээх цагийн төлөвийг тохируулахWaiting = үнэн; // Хүлээж эхэл} өөрөөр бол (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Хэрэв хүлээх AND timeWaitAvg өнгөрсөн бол: statusWaiting = худал; // Статус хүлээхээ боль LEDD = 3; // StatLed -ийг шинэчлэхийг хүлээж байна}} өөрөөр тохируулна уу, өөрөөр бол (statusLED == 1) {// -1- (currentBright <= brightMin ) {statusLED = бол Дундаж руу шилжих болно. 2; // Хэрэв хамгийн бага цэг дээр бол: Хүлээх бага руу очно уу} өөр {currentBright = currentBright -нэмэгдэл ; // Өөр: Доод тод байдал}} if if (statusLED == 6) {// -6- If (currentBright = timeWaitMax ) {/ max: statusWaiting = худал; // Статусыг хүлээхээ боль LED = 6; // StatLed -ийг шинэчлэлтийг хүлээж байна гэж} тохируулна уу, өөр тохиолдолд (statusLED == 4) {// -4- If (currentBright > = brightMax ) {statusLED = 5; // Хэрэв хамгийн доод цэг дээр байвал: Хүлээх өндөр рүү очно уу} өөр {currentBright = currentBright +өсөлт ; // Өөр: Илүү өндөр тод байдал}} if if (statusLED == 0) {// -0- If (! StatusWaiting ) if {)); // Хүлээх цагийн төлөвийг тохируулахWaiting = үнэн; // Хүлээж эхэл} өөрөөр бол (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Хэрэв хүлээх AND timeWaitAvg өнгөрсөн бол: statusWaiting = худал; // Статус хүлээхээ боль LED = 7; // StatLed -ийг шинэчлэлтийг хүлээж байна гэж тохируулна уу}}} i = 0; lastRound = millis (); // Сүүлийн тойрог дуусах үед тохируулна уу. writeToLED (); // Бүх өгөгдлийг LED дээр бичээрэй}}

Алхам 9: Эцсийн бүтээгдэхүүн

Image
Image
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн
Эцсийн бүтээгдэхүүн

Энэ нь сайн болсон гэж бодож байна. Зангиа нь хэт зузаан биш, хатуу, урт, хүнд биш бөгөөд одны эффект гайхалтай харагдаж байна.

Зөвлөмж болгож буй: