Orodha ya maudhui:

Saa ya Kioo cha Infinity Na Potentiometers: 3 Hatua
Saa ya Kioo cha Infinity Na Potentiometers: 3 Hatua

Video: Saa ya Kioo cha Infinity Na Potentiometers: 3 Hatua

Video: Saa ya Kioo cha Infinity Na Potentiometers: 3 Hatua
Video: 10 самых АТМОСФЕРНЫХ мест Дагестана. БОЛЬШОЙ ВЫПУСК #Дагестан #ПутешествиеПоДагестану 2024, Novemba
Anonim
Saa ya Kioo cha Infinity Na Potentiometers
Saa ya Kioo cha Infinity Na Potentiometers

Nilikutana na kioo kisicho na mwisho na nikaona ni baridi sana. Hii ilinihamasisha kutengeneza kioo kisicho na mwisho, lakini nilihitaji iwe na kusudi. Kwa hivyo, niliamua kutengeneza saa ya kioo isiyofanya kazi. Hii ni kioo kisicho na kikomo ambacho hukuruhusu kubadilisha njia, kasi na rangi kwa kutumia nguvu za nguvu. (Kumbuka: Hii ni mara yangu ya kwanza kutengeneza kitu kama hiki)

Vifaa

Wacha tuingie kwenye kile unahitaji kufanya jambo hili!

Utahitaji…

1) 1 Arduino Uno

3) 1 ubao wa mkate

4) 1 Kubadilisha slaidi

5) 3 Potentiometers

6) 1 9V betri

7) mita 5 Ukanda wa LED WS2811

8) Waya za Chuma za Jumper

9) Saa (Saa niliyotumia Saa 12 kubwa ya kisasa)

10) Karatasi ya Mirror inayobadilika (ile niliyotumia Karatasi ya Mirror)

11) Filamu ya Faragha (Yule niliyotumia Kioo cha Njia Moja)

12) Kugandisha inaweza kuhitajika hii inategemea na vifaa gani unavyo

Hatua ya 1: Wiring

Wiring
Wiring
Wiring
Wiring

Wiring ni rahisi sana

- switch ya SPST inawasha na kuzima LED (A0)

- Potentiometer ya kushoto inadhibiti taa (A1)

- Potentiometer ya kati inadhibiti njia (A2)

- Potentiometer ya kulia inadhibiti kasi (A3)

Hatua ya 2: Kanuni

# pamoja

#fafanua PIN 6

#fafanua NUM_LEDS 54

#fafanua A0 A0

#fafanua A1 A1

#fafanua A2 A2

#fafanua A3 A3

// Parameter 1 = idadi ya saizi katika ukanda

// Parameter 2 = namba ya siri (nyingi ni halali)

// Parameter 3 = bendera za aina ya pikseli, ongeza pamoja inahitajika:

// NEO_KHZ800 800 KHz kijito kidogo (bidhaa nyingi za NeoPixel w / WS2812 LEDs)

// NEO_KHZ400 400 KHz (classic 'v1' (sio v2) saizi za FLORA, madereva WS2811)

Saizi za // NEO_GRB zimefungwa kwa waya wa GRB (bidhaa nyingi za NeoPixel)

Saizi za // NEO_RGB zimefungwa kwa waya wa RGB (saizi za v1 FLORA, sio v2)

Ukanda wa Adafruit_NeoPixel = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

usanidi batili () {

strip. kuanza ();

onyesha (); // Anzisha saizi zote ili "kuzima"

}

kitanzi batili () {

ikiwa (AnalogRead (A0)> = 512) {

ikiwa (AnalogSoma (A2)> = 768) {

ikiwa (AnalogSoma (A3)> = 768) {

upinde wa mvua Mzunguko (80, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogSoma (A3)> = 512) {

upinde wa mvua Mzunguko (60, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogRead (A3)> = 256) {

upinde wa mvua Mzunguko (40, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

mwingine {

upinde wa mvua Mzunguko (20, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

} mwingine ikiwa (AnalogSoma (A2)> = 512) {

ikiwa (AnalogSoma (A1)> = 768) {

CylonBounce (bila mpangilio (255), bila mpangilio (255), bila mpangilio (255), 4, AnalogRead (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogSoma (A1)> = 512) {

CylonBounce (bila mpangilio (255), 0, 0, 4, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogRead (A1)> = 256) {

CylonBounce (0, nasibu (255), 0, 4, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

mwingine {

CylonBounce (0, 0, nasibu (255), 4, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

} mwingine ikiwa (AnalogSoma (A2)> = 256) {

ikiwa (AnalogSoma (A1)> = 768) {

byte r, g, b;

r = bila mpangilio (255);

g = bila mpangilio (255);

b = bila mpangilio (255);

kimondoMvua (r, g, b, 10, 20, kweli, soma Analog (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogSoma (A1)> = 512) {

byte r, g, b;

r = bila mpangilio (255);

g = 0;

b = 0;

kimondoMvua (r, g, b, 10, 20, kweli, soma Analog (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogRead (A1)> = 256) {

byte r, g, b;

r = 0;

g = bila mpangilio (255);

b = 0;

kimondoMvua (r, g, b, 10, 20, kweli, soma Analog (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

mwingine {

byte r, g, b;

r = 0;

g = 0;

b = bila mpangilio (255);

kimondoMvua (r, g, b, 10, 20, kweli, soma Analog (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

}

kingine {if (analogRead (A1)> = 768) {

Taa za Mbio (bila mpangilio (255), bila mpangilio (255), bila mpangilio (255), AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogSoma (A1)> = 512) {

Taa za kukimbia (bila mpangilio (255), 1, 1, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

} mwingine ikiwa (AnalogRead (A1)> = 256) {

Taa za Mbio (1, nasibu (255), 1, AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

mwingine {

Taa za Mbio (1, 1, nasibu (255), AnalogSoma (A0), AnalogSoma (A1), AnalogSoma (A2), AnalogSoma (A3));

}

}

} mwingine {

kuwekaAll (0, 0, 0);

}

}

upinde wa mvua utupu (int SpeedDelay, int oldA0, int oldA1, int oldA2, int oldA3) {

baiti * c;

uint16_t i, j;

kwa (j = 0; j <256 * 5; j ++) {// mizunguko 5 ya rangi zote kwenye gurudumu

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

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

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

c = Gurudumu (((i * 256 / NUM_LEDS) + j) & 255);

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

}

onyeshaStrip ();

kuchelewesha (SpeedDelay);

}

}

baiti * Gurudumu (baiti WheelPos) {

tuli tuli c [3];

ikiwa (WheelPos <85) {

c [0] = Magurudumu ya Magurudumu * 3;

c [1] = 255 - WheelPos * 3;

c [2] = 0;

} mwingine ikiwa (WheelPos <170) {

WheelPos - = 85;

c [0] = 255 - Magurudumu ya Magurudumu * 3;

c [1] = 0;

c [2] = Magurudumu ya Magurudumu * 3;

} mwingine {

WheelPos - = 170;

c [0] = 0;

c [1] = Magurudumu ya Magurudumu * 3;

c [2] = 255 - Magurudumu ya Magurudumu * 3;

}

kurudi c;

}

batili CylonBounce (kahawia kahawia, kijani kibichi, rangi ya samawati, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {

int SpeedDelay;

int ReturnDelay;

ikiwa (AnalogRead (A3)> = 768) {SpeedDelay = 80; ReturnDelay = 120;}

vinginevyo ikiwa (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}

vinginevyo ikiwa (analogRead (A3)> = 256) {SpeedDelay = 40; ReturnDelay = 80;}

mwingine {SpeedDelay = 20; ReturnDelay = 60;}

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

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

kuwekaAll (0, 0, 0);

setPixel (i, nyekundu / 10, kijani / 10, bluu / 10);

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

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

setPixel (i + j, nyekundu, kijani, bluu);

}

setPixel (i + EyeSize + 1, nyekundu / 10, kijani / 10, bluu / 10);

onyeshaStrip ();

kuchelewesha (SpeedDelay);

}

kuchelewesha (ReturnDelay);

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

kuwekaAll (0, 0, 0);

setPixel (i, nyekundu / 10, kijani / 10, bluu / 10);

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

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

ikiwa (zamaniA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

setPixel (i + j, nyekundu, kijani, bluu);

}

setPixel (i + EyeSize + 1, nyekundu / 10, kijani / 10, bluu / 10);

onyeshaStrip ();

kuchelewesha (SpeedDelay);

}

kuchelewesha (ReturnDelay);

}

Taa za Running batili (kahawia kahawia, kijani kibichi, rangi ya samawati ya kaidi, ndani ya zamaniA0, int oldA1, intAAA, int oldA3) {

Nafasi ya int = 0;

int WaveDelay;

ikiwa (AnalogRead (A3)> = 768) {WaveDelay = 80;}

vinginevyo ikiwa (AnalogRead (A3)> = 512) {WaveDelay = 60;}

vinginevyo ikiwa (AnalogRead (A3)> = 256) {WaveDelay = 40;}

mwingine {WaveDelay = 20;}

kwa (int j = 0; j

{

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

Nafasi ++; // = 0; // Nafasi + Kiwango;

kwa (int i = 0; i

// wimbi la sine, mawimbi 3 ya kukabiliana hufanya upinde wa mvua!

// kiwango cha kuelea = dhambi (i + Nafasi) * 127 + 128;

// setPixel (i, kiwango, 0, 0);

// kiwango cha kuelea = dhambi (i + Nafasi) * 127 + 128;

ikiwa (zamaniA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

setPixel (i, ((dhambi (i + Nafasi) * 127 + 128) / 255) * nyekundu, ((dhambi (i + Nafasi) * 127 + 128) / 255) * kijani kibichi, ((dhambi (i + Nafasi) * 127 + 128) / 255) * bluu);

}

onyeshaStrip ();

kuchelewesha (WaveDelay);

}

}

kimondo cha batili Mvua (nyekundu nyekundu, kijani kibichi, kahawia ya kahawia, kimondo cha baitiSize, kimondo cha baitiTrailDecay, kimondo cha booleanRandomDecay, ndani ya zamaniA0, ndani ya zamaniA1, ndani ya zamaniA2, ndani ya zamaniA3) {

kuwekaAll (0, 0, 0);

int SpeedDelay;

ikiwa (AnalogRead (A3)> = 768) {SpeedDelay = 80;}

vinginevyo ikiwa (AnalogRead (A3)> = 512) {SpeedDelay = 60;}

vinginevyo ikiwa (AnalogRead (A3)> = 256) {SpeedDelay = 40;}

mwingine {SpeedDelay = 20;}

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

ikiwa (zamaniA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

// kufifia mwangaza LED zote hatua moja

kwa (int j = 0; j

ikiwa (oldA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

ikiwa ((! meteorRandomDecay) || (bila mpangilio (10)> 5)) {

fadeToBlack (j, meteorTrailDecay);

}

}

// chora kimondo

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

ikiwa (zamaniA0! = AnalogSoma (A0) || ((zamaniA1-256)> AnalogSoma (A1)) || ((zamaniA1 + 256) analogSoma (A2)) || ((zamaniA2 + 256) analogSoma (A3)) | | ((zamaniA3 + 256)

kuvunja;

}

ikiwa ((i-j = 0)) {

setPixel (i-j, nyekundu, kijani, bluu);

}

}

onyeshaStrip ();

kuchelewesha (SpeedDelay);

}

}

batili fadeToBlack (int ledNo, byte fadeValue) {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

uint32_t Rangi ya zamani;

uint8_t r, g, b;

thamani ya int;

oldColor = ukanda.getPixelColor (ledNo);

r = (Rangi ya zamani & 0x00ff0000UL) >> 16;

g = (Rangi ya zamani & 0x0000ff00UL) >> 8;

b = (Rangi ya zamani & 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 (iliyoongozwaNo, r, g, b);

# mwisho

#fndef ADAFRUIT_NEOPIXEL_H

// Imefungwa

leds [ledNo].fadeToBlackBy (fadeValue);

# mwisho

}

// *** BADILISHA HAPA ***

onyesho batiliStrip () {

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

onyesha ();

# mwisho

#fndef ADAFRUIT_NEOPIXEL_H

// Imefungwa

FastLED.show ();

# mwisho

}

seti ya pikseli (pikseli ya ndani, rangi nyekundu, kijani kibichi, rangi ya samawati ya ka

#ifdef ADAFRUIT_NEOPIXEL_H

// NeoPixel

strip.setPixelColor (Pixel, strip. Rangi (nyekundu, kijani, bluu));

# mwisho

#fndef ADAFRUIT_NEOPIXEL_H

// Imefungwa

risasi [Pixel].r = nyekundu;

risasi [Pixel].g = kijani;

risasi [Pixel].b = bluu;

# mwisho

}

batili seti zote

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

setPixel (i, nyekundu, kijani, bluu);

}

onyeshaStrip ();

}

Hatua ya 3: Kuunda Saa

Kuunda Saa
Kuunda Saa
Kuunda Saa
Kuunda Saa
Kuunda Saa
Kuunda Saa

Napenda kupendekeza kupata saa ya glasi iliyo ndani ndani. Wakati nilikuwa napaka kioo rahisi ndani ya saa kulikuwa na shida kutokana na nambari zilizo ndani ya saa kutokea, kioo kilikuwa kikiinama na kusababisha athari ya kioo isiyoweza kutokea. Unahitaji kuwa na karatasi rahisi ya kioo na Filamu ya Faragha iwe gorofa iwezekanavyo. Ikiwa unapata saa hakikisha unaweza kuweka LED ndani bila shida.

Hatua ya 1: Fungua saa na uondoe glasi ya mbele

Hatua ya 2: Vaa Filamu ya Faragha kwenye glasi ya mbele (Video hii inakuonyesha jinsi ya kuifanya)

Hatua ya 3: Tumia kioo kinachoweza kubadilika ndani ya saa (Ondoa mikono kabla ya kufanya hivyo)

Hatua ya 4: Tengeneza shimo katikati ili mikono ya saa irudishwe ndani

Hatua ya 5: Weka ukanda wa LED kuzunguka kuta za ndani za saa (nilitumia bunduki ya gundi moto kwa hatua hii)

Hatua ya 6: Washa ukanda wa LED na uweke glasi juu ya saa ili uone ikiwa athari ya kioo isiyo na mwisho iko

Hatua ya 7: Ukishamaliza na kila kitu weka saa pamoja na acha waya zipite nyuma

Hatua ya 8: Hongera umekamilisha mradi na kila kitu kinapaswa kufanya kazi vizuri

Ikiwa una maswali yoyote tafadhali toa maoni yao hapa chini (Jua kuwa naweza nikashindwa kujibu, lakini nitajitahidi)

Ilipendekeza: