Агуулгын хүснэгт:
- Алхам 1: Хянагч
- Алхам 2: Модыг боох
- Алхам 3: Дээд талд байгаа одыг бүү мартаарай
- Алхам 4: Үүнийг туршиж үзээрэй
Видео: LED спираль мод: 4 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Би бүх төрлийн LED туузанд дуртай. Би тэдэнтэй хамт солонгын сайхан гэрэл хийсэн. Хаягддаггүй хүмүүс хүртэл ашигтай байдаг. Би захын шүхрийг гадаа гэрэлтүүлж, хавирган дээр нь хавчуулав. Миний спираль мод үлээхэд би уртаараа туузыг боож боохоор шийдсэн.
Алхам 1: Хянагч
Би хаяггүй RGB LED ашиглахаар шийдсэн. Энэ нь би програмчлагдсан эффект өгч чадна гэсэн үг боловч бүх ледүүд нэгэн зэрэг өнгө өөрчлөгддөг. Энэ нь бас хянагч хэрэгтэй болно гэсэн үг юм. Би arduino uno ашиглаж, анхны туршилтыг RGB бамбай ашиглан хийж болох байсан ч эцсийн эцэст нүцгэн Atmega328 чиптэй дан самбар ашигласан. Зорилтот програмистыг сольж, чипийг шууд програмчлах шаардлагатай байв.
Надад бусад чийдэнгийн төслүүдээс үлдсэн олон самбар байсан. Миний оронд шүхэр дээрээ хийсэн шиг хямдхан урьдчилсан програмчилсан хянагчийг чөлөөтэй ашиглаарай.
Би модны суурь болгон удаан хөндлөн нэвтрүүлгийн демог ашигласан.
/** Улаан, ногоон, цэнхэр өнгийн 3 LED хөндлөн бүдгэрэх код (RGB) * Бүдгэрүүлэхийн тулд та хоёр зүйлийг хийх хэрэгтэй: * 1. Харуулахыг хүссэн өнгөө тайлбарлана уу * 2. Хүссэн дарааллаа жагсаана уу. Тэд өнгөө алдах болно * * ӨНГИЙН ДЭЛГЭРҮҮЛЭГ: * Өнгө бол 0-100 гэсэн гурван хувийн массив бөгөөд улаан, ногоон, цэнхэр LED-ийг удирдах * * Улаан бол улаан LED бүрэн, цэнхэр, ногоон унтраалттай * int улаан = {100, 0, 0} * Бүдэг цагаан өнгө нь 30% -ийн бүх гурван LED юм * int dimWhite = {30, 30, 30} * гэх мэт * * Зарим нийтлэг өнгийг доор үзүүлэв, эсвэл өөрийн гараар хий * * ЖАГСАХ ЗАХИАЛГА: * Хөтөлбөрийн үндсэн хэсэгт та өнгө оруулахыг хүссэн дарааллаа * жагсаах хэрэгтэй. * crossFade (улаан); * crossFade (ногоон); * crossFade (цэнхэр); * * Эдгээр өнгөнүүд нь дарааллаар гарч ирэх бөгөөд нэг өнгөнөөс алга болж, дараагийн өнгөөр солигдох болно * * Нэмж дурдахад 5 нэмэлт тохиргоог хийж болно: * 1. Анхны өнгийг хар болгож тохируулна (ингэснээр эхний өнгө бүдгэрнэ. in), гэхдээ * та анхны өнгийг өөр өнгө болгох боломжтой * 2. Дотоод гогцоо нь 1020 интеракцид зориулагдсан; 'хүлээх' хувьсагч * нь нэг хөндлөн огтлолын ойролцоо үргэлжлэх хугацааг тохируулдаг. Онолын хувьд * 10 ms -ийн 'хүлээх' нь ~ 10 секундын crossFade хийх ёстой. * Практикт код нь гүйцэтгэж буй бусад функцууд үүнийг * самбар дээр ~ 11 секунд хүртэл удаашруулдаг. YMMV. * 3. Хэрэв 'давталт' -ыг 0 гэж тохируулсан бол програм тодорхойгүй хугацаанд эргэх болно. * Хэрэв энэ нь тоонд тохируулагдсан бол тэр тооны давталт хийх болно, * дараа нь дарааллын сүүлчийн өнгө дээр зогсох болно. ('Буцах' гэж 1 болгож тохируулаад *, сүүлд нь бүдгэрүүлэхийг хүсч байвал сүүлчийн өнгийг хар болго.) * 4. Нэмэлт 'барих' хувьсагч байдаг бөгөөд * програмыг 'секундэд хадгалах' миллисекундийг дамжуулдаг. өнгө дууссан *, гэхдээ дараагийн өнгө эхлэхээс өмнө. * 5. Хэрэв та дибаг хийх гаралтыг цуваа дэлгэц рүү илгээхийг хүсвэл DEBUG тугийг 1 болгож тохируулна уу. * * Хөтөлбөрийн дотоод хэсэг нь тийм ч төвөгтэй биш боловч тэдгээр нь * бага зэрэг төвөгтэй байдаг - дотоод үйл ажиллагааг үндсэн гогцооноос доогуур тайлбарласан болно. * * 2007 оны 4 -р сар, Клэй Ширки *
/ Гаралт
int grnPin = 9; // Ногоон LED, дижитал зүүтэй холбогдсон 10 int redPin = 10; // Улаан LED, дижитал зүү 9 int bluPin = 11 -т холбогдсон; // Цэнхэр LED, дижитал зүү 11 -т холбогдсон
// Өнгөний массив
int black [3] = {0, 0, 0}; int цагаан [3] = {100, 100, 100}; int улаан [3] = {100, 0, 0}; int ногоон [3] = {0, 100, 0}; int blue [3] = {0, 0, 100}; int шар [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // гэх мэт
// Анхны өнгийг тохируулна уу
int redVal = хар [0]; int grnVal = хар [1]; int bluVal = хар [2];
int wait = 3; // 10ms дотоод crossFade саатал; аажмаар бүдгэрэхийн тулд нэмэгдүүлэх
int hold = 0; // Дараагийн crossFade хийхээс өмнө өнгө дууссаны дараа заавал барина int DEBUG = 0; // DEBUG тоолуур; хэрэв 1 гэж тохируулсан бол утгуудыг serial int loopCount = 60 -ээр буцааж бичих болно; // DEBUG -ийг хэр олон удаа мэдээлэх ёстой вэ? int давталт = 0; // Зогсоохын өмнө бид хэдэн удаа эргэх ёстой вэ? (Зогсолтгүй 0) int j = 0; // Давталтын тоолуур
// Өнгөний хувьсагчдыг эхлүүлэх
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// LED гаралтыг тохируулна уу
void setup () {pinMode (redPin, OUTPUT); // зүүг гаралтын pinMode (grnPin, OUTPUT) болгон тохируулдаг; pinMode (bluPin, OUTPUT);
if (DEBUG) {// Хэрэв бид дибаг хийх утгыг харахыг хүсч байвал …
Цуваа эхлэх (9600); // … цуврал гаралтыг тохируулах}}
// Үндсэн програм: хөндлөн огтлолын дарааллыг жагсаана уу
void loop () {crossFade (улаан); crossFade (ногоон); crossFade (цэнхэр); crossFade (шар);
if (давтах) {// Бид хязгаарлагдмал тооны давталт хийдэг үү?
j += 1; if (j> = давтах) {// Бид одоо болтол байна уу? гарах (j); // Тийм бол боль. }}}
/* ЭНЭ МЭРИЙН ДООР ДЭЭР МАТЕМ - ЭНДИЙН ҮНДСЭНД ӨӨРЧЛӨХ ХЭРЭГГҮЙ.
* * Хөтөлбөр дараах байдлаар ажилладаг: * Улаан LED-ийг 0-10-аас, * ногооныг 0-5-аас, цэнхэрийг 10-аас 7 хүртэл * арван алхамаар хөдөлгөдөг хөндлөн огтлолыг төсөөлөөд үз дээ. * Бид 10 алхамыг тоолж, өнгөний утгыг жигд алхамаар нэмэгдүүлэх эсвэл багасгахыг хүсч байна. * A + нь утгыг 1 -ээр өсгөж байгааг харуулж байна гэж төсөөлөөд үз дээ. Бидний 10 алхам бүдгэрэх нь иймэрхүү харагдах болно: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + * G + + + + + * B - - - * * Улаан нь Арван алхам тутамд 0-ээс 10, ногоон нь * 0-5-аас 5 алхам, цэнхэр нь гурван алхамаар 10-аас 7 хүртэл буурдаг. * * Бодит програмд өнгөний хувийг * 0-255 утга болгон хөрвүүлэх бөгөөд 1020 алхам (255 * 4) байдаг. * * LED утгуудын аль нэг нь дээш эсвэл * доош тэмдэглэгээ хийх хооронд ямар том алхам хийх ёстойг олж мэдэхийн тулд бид calcStep () гэж нэрлэдэг бөгөөд энэ нь эхлэх ба дуусах утгуудын хоорондох үнэмлэхүй зөрүүг тооцоолно. утгыг тохируулах хоорондох алхам * хэмжээг тодорхойлохын тулд энэ зөрүүг 1020 он хүртэл хуваадаг. */
int тооцоолох Алхам (int prevValue, int endValue) {
int step = endValue - prevValue; // Ерөнхий ялгаа нь юу вэ? if (step) {// Хэрэв энэ нь тэг биш бол step = 1020/step; // буцах алхамыг 1020 -д хуваах; }
/* Дараагийн функц нь calcVal юм. Давталтын утга байх үед би, * нь * өнгөний аль нэгэнд тохирох алхамын хэмжээнд хүрдэг бөгөөд энэ өнгөний утгыг 1 -ээр бууруулж эсвэл бууруулдаг. * (R, G, B тус бүрийг тус тусад нь тооцдог.) */
int calcVal (int алхам, int val, int i) {
if ((step) && i % step == 0) {// Хэрэв алхам тэг биш бөгөөд утгыг өөрчлөх цаг бол
if (алхам> 0) {// алхам эерэг байвал утгыг нэмэгдүүлнэ… val += 1; } if if (алхам 255) {val = 255; } if if (val <0) {val = 0; } буцах үнэ; }
/* crossFade () нь өнгөний хувийг а болгон хөрвүүлдэг
* 0-255 муж, дараа нь 1020 удаа гогцоо хийж, утга бүрийг шинэчлэх шаардлагатай эсэхийг шалгаж, өнгөний утгыг * зөв зүү дээр бичнэ үү. */
void crossFade (int color [3]) {
// 0-255 руу хөрвүүлэх int R = (өнгө [0] * 255) / 100; int G = (өнгө [1] * 255) / 100; int B = (өнгө [2] * 255) / 100;
int stepR = тооцоолохАлхам (өмнөхR, R);
int stepG = тооцоолох алхам (prevG, G); int stepB = тооцоолох алхам (prevB, B);
for (int i = 0; i <= 1020; i ++) {redVal = calcVal (stepR, redVal, i); grnVal = тооцохVal (stepG, grnVal, i); bluVal = тооцохVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Одоогийн утгыг LED тээглүүрт бичнэ үү
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
хойшлуулах (хүлээх); // Циклийг үргэлжлүүлэхийн өмнө 'хүлээх' миллисекундийг түр зогсооно уу
if (DEBUG) {// Хэрэв бид цуваа гаралт авахыг хүсвэл үүнийг хэвлэх
if (i == 0 эсвэл i % loopCount == 0) {// эхлэл, мөн loopCount бүр Serial.print ("Loop/RGB: #"); Цуваа.хэвлэх (i); Serial.print ("|"); Цуваа.хэвлэх (redVal); Serial.print (" /"); Цуваа.хэвлэх (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Дараагийн давталтын одоогийн утгыг шинэчлэх prevR = redVal; prevG = grnVal; prevB = bluVal; хойшлуулах (барих); // Циклийг үргэлжлүүлэхийн өмнө заавал 'хүлээх' миллисекунд түр зогсооно уу}
Алхам 2: Модыг боох
Би ус нэвтэрдэггүй тууз ашигласан, учир нь эдгээр нь гадаа байх болно. Тэд бие даан наалддаг байсан ч би тэднийг байрандаа байлгахын тулд утсаар уясан. Энгийн бөгөөд хялбар хакердах. Туузан дамжуулагчийн хүч чадал нь тэжээлийн эх үүсвэрийг доод талаас нь тэжээж, дээд талаас нь од руу гаргах боломжийг олгодог.
Алхам 3: Дээд талд байгаа одыг бүү мартаарай
Оддын хувьд би анхаарлаа хандуулахын тулд 10W хос чип ашигласан. Би тэднийг халаагуур болгон зэс хуудсан дээр гагнав. Бага зэрэг үлдсэн тул би илүү их тууз хэрэглэж болох байсан.
Алхам 4: Үүнийг туршиж үзээрэй
Эхний оролдлогын хурд хэт хурдан байсан ….
Намайг тайвшруулсны дараа үнэхээр сайхан харагдаж байсан.
Зөвлөмж болгож буй:
Эмх замбараагүй спираль (гипнозын спираль): 5 алхам (зурагтай)
Chaos Spiral (Hypnosis Spiral): Та энэ объектыг 3 хэмжээст хэвлэх боломжтой боловч соронз ба холхивч хэвлэхээ бүү мартаарай :) анхны 3D хэвлэх нь ажиллахгүй болно. Эхлэхээсээ өмнө цуглуулах зүйлүүд энд байна
Хавтгай спираль ороомогтой DIY индукцийн халаагчийн хэлхээ (бин ороомог): 3 алхам
Хавтгай спираль ороомогтой DIY индукцийн халаагчийн хэлхээ (хуушуурын ороомог): Индукцийн халаалт нь цахилгаан соронзон индукцийн тусламжтайгаар цахилгаан дамжуулагч объектыг (ихэвчлэн метал) халааж, объект доторх давсны урсгалаар халаах процесс юм. Энэ видеон дээр би хэрхэн хүчирхэг болгохыг танд үзүүлэх гэж байна
Спираль чийдэн (локсодромын ширээний чийдэн): 12 алхам (зурагтай)
Спираль чийдэн (Локсодромын ширээний чийдэн): Спираль чийдэн (a.k.a Локсодромын ширээний чийдэн) бол миний 2015 онд эхлүүлсэн төсөл бөгөөд үүнийг Пол Найландерын Loxodrome Sconce -ээс санаа авсан болно. Миний анхны санаа бол мотортой ширээний чийдэнгийн гэрлийн урсгалыг ханан дээр буулгах явдал байв. Би зохион бүтээсэн ба
Зул сарын гацуур мод спираль: 4 алхам (зурагтай)
Спираль залгууртай зул сарын гацуур мод: Сайн байна уу найзуудаа. Энэхүү ойлгомжгүй хэсэгт бид спираль хэлбэртэй зул сарын гацуур мод хийх гэж байна
USB -ээр ажилладаг шарагч! Энэхүү төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): 3 алхам
USB -ээр ажилладаг шарагч! Энэ төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): ЭНЭ USB ашиглан бүү хий !!!! Энэ нь бүх сэтгэгдлээс таны компьютерийг гэмтээж болохыг олж мэдсэн. миний компьютер сайн байна 600ma 5V утасны цэнэглэгч ашиглана уу. Би үүнийг ашигласан бөгөөд энэ нь сайн ажилладаг бөгөөд хэрэв та цахилгаан тэжээлийг зогсоохын тулд хамгаалалтын залгуур ашиглавал юу ч гэмтээхгүй