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

Потенциометр бүхий Infinity толин цаг: 3 алхам
Потенциометр бүхий Infinity толин цаг: 3 алхам

Видео: Потенциометр бүхий Infinity толин цаг: 3 алхам

Видео: Потенциометр бүхий Infinity толин цаг: 3 алхам
Видео: Превращение цепи потолочного вентилятора в тестер двигателя вентилятора кондиционера. 2024, Арваннэгдүгээр
Anonim
Потенциометр бүхий Infinity толь цаг
Потенциометр бүхий Infinity толь цаг

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

Хангамж

Энэ зүйлийг хийхэд танд хэрэгтэй зүйл рүү орцгооё!

Танд хэрэгтэй болно…

1) 1 Arduino Uno

3) 1 талхны самбар

4) 1 слайд шилжүүлэгч

5) 3 потенциометр

6) 1 9V батерей

7) 5 метрийн WS2811 LED зурвас

8) холбогч кабелийн утас

9) Цаг (миний ашигладаг 12 инчийн том орчин үеийн цаг)

10) Уян хатан толь хуудас (Миний толин тусгал хуудас ашигласан)

11) Нууцлалын кино (Миний нэг талын толь ашигласан кино)

12) Гагнах шаардлагатай байж магадгүй бөгөөд энэ нь танд байгаа материалаас хамаарна

Алхам 1: Цахилгааны утас

Цахилгаан утас
Цахилгаан утас
Цахилгаан утас
Цахилгаан утас

Цахилгааны утас нь маш энгийн

- SPST шилжүүлэгч нь LED -ийг асааж, унтраана (A0)

- Зүүн потенциометр нь гэрлийг удирддаг (A1)

- Дунд потенциометр нь горимыг хянадаг (A2)

- Зөв потенциометр нь хурдыг хянадаг (A3)

Алхам 2: Код

#оруулах

#PIN 6 тодорхойлох

#тодорхойлох_ NUM_LEDS 54

#тодорхойлох A0 A0

#тодорхойлох A1 A1

#тодорхойлох A2 A2

#A3 A3 -ийг тодорхойлох

// Параметр 1 = тууз дахь пикселийн тоо

// Параметр 2 = зүү дугаар (ихэнх нь хүчинтэй байна)

// Параметр 3 = пикселийн төрлийн тугуудыг шаардлагатай бол нэмж оруулаарай.

// NEO_KHZ800 800 KHz битийн урсгал (WS2812 LED бүхий NeoPixel -ийн ихэнх бүтээгдэхүүн)

// NEO_KHZ400 400 KHz (сонгодог 'v1' (v2 биш) FLORA пиксел, WS2811 драйверууд)

// NEO_GRB пикселүүд нь GRB bitstream -д зориулагдсан байдаг (ихэнх NeoPixel бүтээгдэхүүнүүд)

// NEO_RGB пикселүүд нь RGB bitstream -д зориулагдсан (v2 биш v1 FLORA пиксел)

Adafruit_NeoPixel зурвас = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

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

strip.begin ();

strip.show (); // Бүх пикселийг "унтраах" болгож эхлүүлэх

}

void loop () {

хэрэв (analogRead (A0)> = 512) {

хэрэв (analogRead (A2)> = 768) {

хэрэв (analogRead (A3)> = 768) {

Солонго Цикл (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A3)> = 512) {

Солонго Цикл (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A3)> = 256) {

Солонго Цикл (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

өөр {

Солонго Цикл (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

} өөр бол (analogRead (A2)> = 512) {

хэрэв (analogRead (A1)> = 768) {

CylonBounce (санамсаргүй (255), санамсаргүй (255), санамсаргүй (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 512) {

CylonBounce (санамсаргүй (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 256) {

CylonBounce (0, санамсаргүй (255), 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

өөр {

CylonBounce (0, 0, санамсаргүй (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

} өөр бол (analogRead (A2)> = 256) {

хэрэв (analogRead (A1)> = 768) {

байт r, g, b;

r = санамсаргүй (255);

g = санамсаргүй (255);

b = санамсаргүй (255);

meteorRain (r, g, b, 10, 20, үнэн, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 512) {

байт r, g, b;

r = санамсаргүй (255);

g = 0;

b = 0;

meteorRain (r, g, b, 10, 20, үнэн, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 256) {

байт r, g, b;

r = 0;

g = санамсаргүй (255);

b = 0;

meteorRain (r, g, b, 10, 20, үнэн, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

өөр {

байт r, g, b;

r = 0;

g = 0;

b = санамсаргүй (255);

meteorRain (r, g, b, 10, 20, үнэн, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

}

өөр {хэрэв (analogRead (A1)> = 768) {

RunningLights (санамсаргүй (255), санамсаргүй (255), санамсаргүй (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 512) {

RunningLights (санамсаргүй (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} өөр бол (analogRead (A1)> = 256) {

RunningLights (1, санамсаргүй (255), 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

өөр {

RunningLights (1, 1, санамсаргүй (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

}

} өөр {

setAll (0, 0, 0);

}

}

хоосон солонго тойрог (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {

байт *в;

uint16_t i, j;

for (j = 0; j <256*5; j ++) {// дугуй дээрх бүх өнгөний 5 мөчлөг

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

for (i = 0; i <NUM_LEDS; i ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

c = Дугуй (((i * 256 / NUM_LEDS) + j) & 255);

setPixel (i, *c, *(c+1), *(c+2));

}

showStrip ();

саатал (SpeedDelay);

}

}

байт * Дугуй (байт WheelPos) {

статик байт c [3];

хэрэв (WheelPos <85) {

c [0] = WheelPos * 3;

c [1] = 255 - WheelPos * 3;

c [2] = 0;

} өөр бол (WheelPos <170) {

WheelPos -= 85;

c [0] = 255 - WheelPos * 3;

c [1] = 0;

c [2] = WheelPos * 3;

} өөр {

WheelPos -= 170;

c [0] = 0;

c [1] = WheelPos * 3;

c [2] = 255 - WheelPos * 3;

}

буцах c;

}

хүчингүй CylonBounce (улаан байт, ногоон байт, цэнхэр байт, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {

int SpeedDelay;

int ReturnDelay;

if (analogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}

өөр бол (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}

өөр бол (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}

өөр {SpeedDelay = 20; ReturnDelay = 60;}

for (int i = 0; i <NUM_LEDS-EyeSize-2; i ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

setAll (0, 0, 0);

setPixel (i, улаан/10, ногоон/10, цэнхэр/10);

for (int j = 1; j <= EyeSize; j ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

setPixel (i+j, улаан, ногоон, цэнхэр);

}

setPixel (i+EyeSize+1, улаан/10, ногоон/10, цэнхэр/10);

showStrip ();

саатал (SpeedDelay);

}

саатал (ReturnDelay);

for (int i = NUM_LEDS-EyeSize-2; i> 0; i--) {

setAll (0, 0, 0);

setPixel (i, улаан/10, ногоон/10, цэнхэр/10);

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

for (int j = 1; j <= EyeSize; j ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

setPixel (i+j, улаан, ногоон, цэнхэр);

}

setPixel (i+EyeSize+1, улаан/10, ногоон/10, цэнхэр/10);

showStrip ();

саатал (SpeedDelay);

}

саатал (ReturnDelay);

}

хүчингүй RunningLights (улаан байт, ногоон байт, цэнхэр байт, int oldA0, int oldA1, int oldA2, int oldA3) {

int Position = 0;

int WaveDelay;

if (analogRead (A3)> = 768) {WaveDelay = 80;}

өөр бол (analogRead (A3)> = 512) {WaveDelay = 60;}

өөр бол (analogRead (A3)> = 256) {WaveDelay = 40;}

өөр {WaveDelay = 20;}

for (int j = 0; j

{

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

Албан тушаал ++; // = 0; // Албан тушаал + үнэлгээ;

for (int i = 0; i

// синус долгион, 3 офсет долгион нь солонго болдог!

// float level = sin (i + Position) * 127 + 128;

// setPixel (i, түвшин, 0, 0);

// float level = sin (i + Position) * 127 + 128;

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

setPixel (i, ((sin (i + Position) * 127 + 128)/255) * улаан, ((нүгэл (i + албан тушаал) * 127 + 128)/255) * ногоон, ((нүгэл (i + албан тушаал) * 127 + 128)/255) * цэнхэр);

}

showStrip ();

саатал (WaveDelay);

}

}

хоосон солир бороо (байт улаан, байт ногоон, цэнхэр байт, байт солирSize, байт солирTrailDecay, логик солирRandomDecay, int oldA0, int oldA1, int oldA2, int oldA3) {

setAll (0, 0, 0);

int SpeedDelay;

if (analogRead (A3)> = 768) {SpeedDelay = 80;}

өөр бол (analogRead (A3)> = 512) {SpeedDelay = 60;}

өөр бол (analogRead (A3)> = 256) {SpeedDelay = 40;}

өөр {SpeedDelay = 20;}

for (int i = 0; i <NUM_LEDS+NUM_LEDS; i ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

// бүх LED гэрлийг нэг алхамаар бүдгэрүүлнэ

for (int j = 0; j

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

if ((! meteorRandomDecay) || (санамсаргүй (10)> 5)) {

fadeToBlack (j, meteorTrailDecay);

}

}

// солир зур

for (int j = 0; j <meteorSize; j ++) {

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((хуучинA3+256)

завсарлага;

}

хэрэв ((i-j = 0)) {

setPixel (i-j, улаан, ногоон, цэнхэр);

}

}

showStrip ();

саатал (SpeedDelay);

}

}

void fadeToBlack (int ledNo, byte fadeValue) {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

uint32_t oldColor;

uint8_t r, g, b;

int утга;

oldColor = strip.getPixelColor (ledNo);

r = (oldColor & 0x00ff0000UL) >> 16;

g = (oldColor & 0x0000ff00UL) >> 8;

b = (oldColor & 0x000000ffUL);

r = (r <= 10)? 0: (int) r- (r*fadeValue/256);

g = (g <= 10)? 0: (int) g- (g*fadeValue/256);

b = (b <= 10)? 0: (int) b- (b*fadeValue/256);

strip.setPixelColor (ledNo, r, g, b);

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

leds [ledNo].fadeToBlackBy (fadeValue);

#endif

}

// *** ЭНД ДАРЖ орлуулна уу ***

void showStrip () {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

strip.show ();

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

FastLED.show ();

#endif

}

хүчингүй setPixel (int Pixel, улаан байт, ногоон байт, цэнхэр байт) {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

strip.setPixelColor (Пиксел, зурвас Өнгө (улаан, ногоон, цэнхэр));

#endif

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

leds [Pixel].r = улаан;

leds [Пиксел].g = ногоон;

leds [Pixel].b = цэнхэр;

#endif

}

void setAll (улаан байт, ногоон байт, цэнхэр байт) {

for (int i = 0; i <NUM_LEDS; i ++) {

setPixel (i, улаан, ногоон, цэнхэр);

}

showStrip ();

}

Алхам 3: Цагийг бий болгох

Цагийг бий болгох
Цагийг бий болгох
Цагийг бий болгох
Цагийг бий болгох
Цагийг бий болгох
Цагийг бий болгох

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

Алхам 1: Цагийг нээгээд урд талын шилийг ав

Алхам 2: Нууцлалын хальсыг урд талын шилэн дээр тавь (Энэ видеонд үүнийг хэрхэн хийхийг зааж өгсөн болно)

Алхам 3: Цагны дотор талд уян хатан толь түрхээрэй (Үүнийг хийхийн өмнө цагны гарыг ав)

Алхам 4: Цагийн зүүг буцааж тавихын тулд дундуур нь нүх гарга

Алхам 5: LED туузыг цагны дотор хананы эргэн тойронд байрлуул (энэ алхамд би халуун цавуу буу ашигласан)

Алхам 6: LED зурвасыг асаагаад шилийг цагны дээд талд байрлуулж хязгааргүй толин тусгал эффект байгаа эсэхийг үзээрэй

Алхам 7: Бүх зүйл дууссаны дараа цагийг хамтад нь холбож, утсыг ар тал руу нь дамжуулаарай

Алхам 8: Төслийг дуусгасанд баяр хүргэе, бүх зүйл сайн ажиллах ёстой

Хэрэв танд ямар нэгэн асуулт байвал доор тайлбар бичээрэй (Би хариулж чадахгүй байж магадгүй, гэхдээ би чадах бүхнээ хийх болно)

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