Orodha ya maudhui:
Video: Saa ya Kioo cha Infinity Na Potentiometers: 3 Hatua
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
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 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
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:
Tengeneza Saa ya Kioo cha Infinity: Hatua 15 (na Picha)
Tengeneza Saa ya Kioo cha Infinity: Katika mradi uliopita nilijenga kioo cha infinity, ambapo lengo langu kuu lilikuwa kuifanya kuwa saa.
Saa rahisi ya kioo cha infinity DIY: Hatua 3
Saa rahisi ya kioo cha infinity ya DIY: Ikiwa umechoka na saa yako ya kawaida jaribu kuifanya Saa hii ya kupendeza ya DIY Infinity Mirror. Ili kusawazisha chumba chako
Kutengeneza Saa na M5stick C Kutumia Arduino IDE - RTC Saa Saa Saa Na M5stack M5stick-C: Hatua 4
Kutengeneza Saa na M5stick C Kutumia Arduino IDE | RTC Saa Saa Saa Na M5stack M5stick-C: Halo jamani katika mafundisho haya tutajifunza jinsi ya kutengeneza saa na bodi ya maendeleo ya m5stick-C ya m5stack kutumia Arduino IDE.So m5stick itaonyesha tarehe, saa & wiki ya mwezi kwenye maonyesho
Saa ya Kioo cha Infinity: Hatua 5 (na Picha)
Saa ya Kioo cha Infinity: Hii ni saa iliyotengenezwa kwa mikono haswa kwa mapambo.Kuna taa kadhaa za LED katika saa, wakati zinawashwa, ni mapambo mazuri ya chumba cha kulala. Wakati umezimwa, ni kioo kidogo. Bila shaka, ni saa yenyewe
GRawler - Kioo cha Kioo cha Kioo: Hatua 13 (na Picha)
GRawler - Kioo cha Kioo cha Kioo: Huu ni mradi wangu mkubwa na ngumu sana hadi sasa. Lengo lilikuwa kujenga mashine ya kusafisha paa langu la glasi. Changamoto kubwa ni mteremko mkali wa 25%. Jaribio la kwanza lilishindwa kuondoa wimbo kamili. Mtambazaji aliteleza, injini au