Агуулгын хүснэгт:
Видео: Arduino LED Mood Cube сайжруулах (Энгийн) (Видео оруулсан): 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
'Earl -ийн бүтээсэн LED жижиг сэтгэл санааны куб төслийг хараад LED Mood Cube -ийн сайжруулсан хувилбарыг хийхээр шийдлээ. Миний хувилбар анхны хувилбараас арай илүү том байх болно, анхны кубтай харьцуулахад хоёр өөр өнгөтэй байх болно (шар, цагаан нэмсэн), өнгөний хязгааргүй эргэлт гэх мэт. LED гэрлийг утсаар холбох тухай ойлголттой хүмүүст зориулж LED гэрлийг цаашид ашиглах дадлага хийх сайн төсөл байх ёстой.
Алхам 1: Материал
Энэхүү Mood Cube хийхэд танд хэрэгтэй хэдэн материал байна:
- Талхны самбар
- Ардуино - (энд Леонардо байна)
- Arduino цахилгаан хангамж / USB кабель
- Талхны самбар
- Холбогч утас (тэдгээрийн олон нь, би 29 утас ашигладаг байсан)
- Улаан LED x 2
- Цэнхэр LED x 2
- Ногоон LED x 2
- Шар LED x 2
- Цагаан LED х 1
- 9 резистор
- Талхны тавцанд багтахаар том хайрцаг (би гутлын хайрцаг ашигласан)
- Хэрэглээний хутга
- Цаас
Алхам 2: Код
Энд өгөгдсөн кодын зарим тайлбар:
Төслийн редактор эдгээр кодыг бүтээсэн тул кодын кредит нь миний төслийн анхны эх сурвалж руу ордог. Би зүгээр л заримыг нь илүү төвөгтэй болгож сайжруулсан. Зарим кодын хувьд та эцэст нь // 改 гэж харж болно. Энэ нь энэ кодыг би засварласан гэсэн үг бөгөөд энэ нь миний анхны эх сурвалжаас өөр юм.
Надад бас Arduino Creator дээрх кодын хувилбар бий.
/* Улаан, ногоон, цэнхэр өнгийн 3 LED хөндлөн бүдгэрэх код (RGB) Бүдгэрэхийн тулд та дараах хоёр зүйлийг хийх хэрэгтэй: 1. Харуулахыг хүссэн өнгөө тайлбарлана уу 2. Будуулахыг хүсч буй дарааллаа жагсаана уу.
ӨНГИЙГ ТОДОРХОЙЛОХ:
Өнгө нь улаан, ногоон, цэнхэр өнгийн LED-ийг хянадаг 0-100 гэсэн гурван хувийн массив юм
Улаан бол улаан LED бүрэн, цэнхэр, ногоон унтраалттай
int red = {100, 0, 0} Бүдэг цагаан бол 30% int dimWhite = {30, 30, 30} гэх мэт гурван LED юм.
Зарим нийтлэг өнгийг доор үзүүлэв, эсвэл өөрөө хий
ЗАХИАЛГА ЖАГСААХ:
Хөтөлбөрийн үндсэн хэсэгт та өнгө оруулахыг хүсч буй дарааллаа жагсаах хэрэгтэй. crossFade (улаан); crossFade (ногоон); crossFade (цэнхэр);
Эдгээр өнгөнүүд нь дарааллаар гарч ирэн алга болно
нэг өнгө, нөгөө рүү
Нэмж дурдахад 5 нэмэлт тохиргоог хийх боломжтой.
1. Анхны өнгийг хар гэж тохируулсан (тиймээс эхний өнгө нь бүдгэрнэ), гэхдээ та анхны өнгийг өөр өнгө болгож тохируулж болно 2. Дотоод гогцоо нь 1020 интеракцид ажилладаг; 'хүлээх' хувьсагч нь нэг хөндлөн огтлолын ойролцоо үргэлжлэх хугацааг тогтоодог. Онолын хувьд 10 мс -ийн "хүлээх" нь ~ 10 секундын хөндлөн огтлол хийх ёстой. Практик дээр кодын гүйцэтгэдэг бусад функцууд үүнийг самбар дээр ~ 11 секунд хүртэл удаашруулдаг. YMMV. 3. Хэрэв 'давталт' -ыг 0 гэж тохируулсан бол програм тодорхойгүй хугацаагаар эргэх болно. Хэрэв энэ нь тоонд тохируулагдсан бол тэр хэдэн удаа давтаж, дарааллын сүүлчийн өнгө дээр зогсох болно. ('Буцах' гэж 1 болгож, сүүлд нь бүдгэрүүлэхийг хүсвэл сүүлчийн өнгийг хар болго.) 4. Нэмэлт 'hold' хувьсагч байдаг бөгөөд энэ нь өнгийг өнгөлөх үед 'hold' миллисекундээр дамжуулдаг. дууссан, гэхдээ дараагийн өнгө эхлэхээс өмнө. 5. Хэрэв та дибаг хийх гаралтыг цуваа дэлгэц рүү илгээхийг хүсвэл DEBUG тугийг 1 болгож тохируулна уу.
Хөтөлбөрийн дотоод хэсэг нь тийм ч төвөгтэй биш боловч тэд юм
Бага зэрэг уйтгартай байдаг - дотоод ажлыг үндсэн хэлхээний доор тайлбарласан болно.
2007 оны 4 -р сар, Клей Ширки
*
/ Гаралт
int ylwPin = 5; // Шар LED, дижитал зүү 5 -т холбогдсон // 改 int redPin = 6; // Улаан LED, дижитал зүү 6 -д холбогдсон // 改 int grnPin = 7; // Ногоон LED, дижитал зүү 7 -т холбогдсон // 改 int bluPin = 8; // Цэнхэр LED, дижитал зүү 8 -т холбогдсон // 改 int whiPin = 9; // Цагаан LED, дижитал зүү 9 -т холбогдсон // 改 int ylwPin2 = 10; // Шар LED, дижитал зүү 10 -д холбогдсон // 改 int redPin2 = 11; // Улаан LED, дижитал зүү 11 -т холбогдсон // 改 int grnPin2 = 12; // Ногоон LED, дижитал зүү 12 -т холбогдсон // 改 int bluPin2 = 13; // Цэнхэр LED, дижитал зүү 13 -т холбогдсон // 改
// Өнгөний массив
int хар [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int цагаан [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int улаан [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int ногоон [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int blue [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100}; // 改 int шар [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // purple int ягаан [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int улбар шар [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int pink [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // гэх мэт.
// Анхны өнгийг тохируулна уу
int redVal = хар [0]; int grnVal = хар [1]; int bluVal = хар [2]; int ylwVal = хар [3]; // 改 int whiVal = хар [4]; // 改
int wait = 15; // 10ms дотоод crossFade саатал; аажмаар бүдгэрэхийн тулд нэмэгдүүлэх // 改
int hold = 1; // Дараагийн crossFade хийхээс өмнө өнгө дууссаны дараа заавал барих // 改 int DEBUG = 1; // DEBUG тоолуур; хэрэв 1 гэж тохируулсан бол утгуудыг serial int loopCount = 60 -ээр буцааж бичих болно; // DEBUG -ийг хэр олон удаа мэдээлэх ёстой вэ? int давталт = 0; // Зогсоохын өмнө бид хэдэн удаа эргэх ёстой вэ? (Зогсолтгүй 0) // 改 int j = 0; // Давталтын тоолуур
// Өнгөний хувьсагчдыг эхлүүлэх
int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; // 改
// LED гаралтыг тохируулна уу
void setup () {pinMode (redPin, OUTPUT); // зүүг гаралтын pinMode (grnPin, OUTPUT) болгон тохируулдаг; pinMode (bluPin, OUTPUT); pinMode (ylwPin, OUTPUT); // 改 pinMode (whiPin, OUTPUT); // 改 pinMode (grnPin2, OUTPUT); // 改 pinMode (bluPin2, OUTPUT); // 改 pinMode (ylwPin2, OUTPUT); // 改 pinMode (redPin2, OUTPUT); // 改
if (DEBUG) {// Хэрэв бид дибаг хийх утгыг харахыг хүсч байвал …
Цуваа эхлэх (9600); // … цуврал гаралтыг тохируулах}}
// Үндсэн програм: хөндлөн огтлолын дарааллыг жагсаана уу
void loop () {crossFade (улаан); crossFade (ногоон); crossFade (цэнхэр); crossFade (шар); crossFade (цагаан); crossFade (ягаан); crossFade (ягаан); crossFade (улбар шар);
if (давтах) {// Бид хязгаарлагдмал тооны давталт хийдэг үү?
j += 1; if (j> = давтах) {// Бид одоо болтол байна уу? гарах (j); // Тийм бол боль. }}}
/* ЭНЭ МЭРИЙН ДООР ДЭЭР МАТЕМ - ЭНДИЙН ҮНДСЭНД ӨӨРЧЛӨХ ХЭРЭГГҮЙ.
Хөтөлбөр дараах байдлаар ажилладаг.
Улаан LED-ийг 0-10-аас, ногооныг 0-5-аас, цэнхэрийг 10-аас 7 хүртэл 10 алхамаар хөдөлгөдөг хөндлөн огтлолыг төсөөлөөд үз дээ. Бид 10 алхамыг тоолж, өнгөний утгыг жигд алхамаар нэмэгдүүлэхийг хүсч байна. + Нь утга 1 -ээр өсөхийг илэрхийлдэг гэж төсөөлөөд үз дээ. Бидний 10 алхамаар бүдгэрэх нь дараах байдлаар харагдах болно.
1 2 3 4 5 6 7 8 9 10
R + + + + + + + + + + + G + + + + + B - - -
Улаан нь арван алхамаар 0 -ээс 10 хүртэл өсдөг бол ногоон нь
5 алхамаар 0-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 ) {// 改
// 0-255 руу хөрвүүлэх int R = (өнгө [0] * 255) / 100; int G = (өнгө [1] * 255) / 100; int B = (өнгө [2] * 255) / 100; int Y = (өнгө [3] * 255) / 100; // 改 int W = (өнгө [4] * 255) /100; // 改
int stepR = тооцоолохАлхам (өмнөхR, R);
int stepG = тооцоолох алхам (prevG, G); int stepB = тооцоолох алхам (prevB, B); int stepY = тооцоолохАлхам (өмнөхY, Y); // step int stepW = тооцоолох алхам (prevW, W); // 改
for (int i = 0; i <= 1020; i ++) {redVal = calcVal (stepR, redVal, i); grnVal = тооцохVal (stepG, grnVal, i); bluVal = тооцохVal (stepB, bluVal, i); ylwVal = тооцохVal (stepY, ylwVal, i); // 改 whiVal = тооцохVal (stepW, whiVal, i); // 改
analogWrite (redPin, redVal); // Одоогийн утгыг LED тээглүүрт бичнэ үү
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); analogWrite (ylwPin, ylwVal); // 改 analogWrite (whiPin, whiVal); // 改 analogWrite (grnPin2, grnVal); // 改 analogWrite (bluPin2, bluVal); // 改 analogWrite (ylwPin2, ylwVal); // 改 analogWrite (redPin2, redVal); // 改
хойшлуулах (хүлээх); // Циклийг үргэлжлүүлэхийн өмнө 'хүлээх' миллисекундийг түр зогсооно уу
if (DEBUG) {// Хэрэв бид цуваа гаралт авахыг хүсвэл үүнийг хэвлэх
if (i == 0 эсвэл i % loopCount == 0) {// эхлэл, мөн loopCount бүр Serial.print ("Loop/RGBYW: #"); Цуваа.хэвлэх (i); Serial.print ("|"); Цуваа.хэвлэх (redVal); Serial.print (" /"); Цуваа.хэвлэх (grnVal); Serial.print (" /"); Serial.println (bluVal); Serial.print (" /"); Serial.println (ylwVal); // 改 Serial.print (" /"); // 改 Serial.println (whiVal); // 改 Serial.print (" /"); // 改} DEBUG += 1; }} // Дараагийн давталтын одоогийн утгыг шинэчлэх prevR = redVal; prevG = grnVal; prevB = bluVal; prevY = ylwVal; // 改 өмнөхW = whiVal; // 改 хойшлуулах (барих); // Циклийг үргэлжлүүлэхийн өмнө заавал 'хүлээх' миллисекунд түр зогсооно уу}
Алхам 3: Тохируулах
- Талхны самбар ав.
-
LED гэрлийг гэрэлтүүлэхийн тулд утсыг холбох демо:
- LED -ийг талхны тавцан дээр тавь. Урт үзүүрийг зүүн талд, богино үзүүрийг баруун талд байрлуул.
- Холбогч утасны нэг үзүүрийг LED -ийн урт төгсгөлтэй ижил эгнээнд байрлуулна. Нөгөө үзүүрийг дижитал ХОУХ -ны хэсэгт байрлуулна. Код нь шар LED -ийг 10 ба 5 -т, улаан өнгийн гэрлийг 6 ба 11 -т, цэнхэрийг 8 ба 13 -т, ногооныг 7 ба 12 -т, эцэст нь цагаан LED -ийг 9 -д холбохыг зааж өгсөн болно.
- Резисторын нэг үзүүрийг LED -ийн богино үзүүртэй ижил эгнээнд байрлуулна. Нөгөө үзүүрийг ойрхон газар байрлуул.
- LED -ийн богино үзүүртэй нэг эгнээнд ороогүй резисторын төгсгөлтэй ижил эгнээтэй өөр холбогч утасны төгсгөлийг байрлуул. Утасны нөгөө үзүүрийг сөрөг цэнэгийн эгнээнд байрлуулна.
- Сөрөг цэнэгийн эгнээнд өөр нэг холбогч утасны төгсгөлийг байрлуулж, нөгөө үзүүрийг GND дээр байрлуул.
- 9 LED гэрэлтүүлэхийг хүсч байгаа бол 2 -р алхамыг 8 удаа давт
-
Талхны хавтанг хайрцаг дотор байрлуул. Энд хэдэн сануулга байна:
- Би цахилгаан хангамж ашигласан. Ажлын хутга ашиглан утсандаа жижиг нүх үүсгээд хайрцгаар дамжуулж талхны самбартай холбоно уу.
- Хайрцгийг нэг тал нь нээлттэй байгаа эсэхийг шалгаарай. Гутлын хайрцаг аль хэдийн нээлттэй талтай байдаг. Хэрэв хайрцаг бүрэн хаагдсан бол хайрцагны нэг талыг хайчилж авснаар зай гаргах боломжтой болно.
- Хажуу талыг нь цаасаар хучихгүй. Энэ бол LED гэрлийг цаасан дээр гэрэлтүүлэх явдал юм.
Зөвлөмж болгож буй:
Interfaccia Con LCD Tramite Wifi M4 Оруулсан: 5 алхам
Interfaccia Con LCD Tramite Wifi M4 Нэмэлт мэдээлэл: Дэлгэцийн дэлгэцэн дээр дэлгэцэн дээр суурилсан ухаалаг гар утас нь Wi-Fi сүлжээнд суурилсан ухаалаг гар утас бөгөөд Drivemall-ийн удирдлагад зориулагдсан зааварчилгаа юм
Энгийн LED зурвасын чийдэн (LED зурвасаа сайжруулах): 4 алхам (зурагтай)
Энгийн LED туузны чийдэн (LED зурвасаа сайжруулаарай): Би LED туузыг нэлээд удаан хугацаанд ашиглаж ирсэн бөгөөд энгийн байдлыг нь үргэлж хайрладаг байсан. Та зүгээр л нэг дүрийг тасалж, зарим утсыг гагнаж, тэжээлийн хангамж залгаж, гэрлийн эх үүсвэртэй болно. Олон жилийн туршид би c олсон
Өнгө таних W/ TCS230 мэдрэгч ба Arduino [Калибровкын кодыг оруулсан]: 12 алхам
Өнгө таних W/ TCS230 мэдрэгч ба Arduino [Калибровкийн кодыг оруулсан]: Тойм Энэхүү тоймд та TCS230 мэдрэгч болон өнгийг танихын тулд Arduino дээр хэрхэн ашиглах талаар сурах болно. Энэхүү гарын авлагын төгсгөлд та өнгө сонгох үзэг хийх сонирхолтой санааг олох болно. Энэхүү үзэгний тусламжтайгаар та өнгөний өнгийг сканнердах боломжтой
1957 онд Sputnik 1 буюу Зөвлөлт Холбоот Улс тойрог замд оруулсан анхны хиймэл дагуул: 5 алхам (зурагтай)
1957 онд Зөвлөлт Холбоот Улс тойрог замд оруулсан анхны хиймэл дагуул болох Спутник 1: Сансрын уралдааныг эхлүүлсэн учраас би Спутник 1 -ийн түүхийг үргэлж сонирхож байсан. 2017 оны 10 -р сарын 4 -нд бид 60 жилийн ойгоо тэмдэглэсэн. Түүхийг бүтээсэн Оросын хиймэл дагуул хөөрсөн тухай, учир нь энэ бол гацуур байв
EAL - Оруулсан програмчлал: Чихэр холигч 1000: 9 алхам
EAL - Embedded Programming: Candy Mixer 1000: Arduino дахь төслийнхөө хувьд бид чихэр холигч хийхээр шийдлээ. Гол санаа нь хэрэглэгч товчлуур дарж, дараа нь мотор чихэрийг аяганд хийж эхлүүлж, хөтөлбөр дуусахад зогсох болно гэсэн санаа юм