ዝርዝር ሁኔታ:

ከፖንቲቲሞሜትሮች ጋር Infinity Mirror ሰዓት: 3 ደረጃዎች
ከፖንቲቲሞሜትሮች ጋር Infinity Mirror ሰዓት: 3 ደረጃዎች

ቪዲዮ: ከፖንቲቲሞሜትሮች ጋር Infinity Mirror ሰዓት: 3 ደረጃዎች

ቪዲዮ: ከፖንቲቲሞሜትሮች ጋር Infinity Mirror ሰዓት: 3 ደረጃዎች
ቪዲዮ: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, ሀምሌ
Anonim
ማለቂያ የሌለው የመስታወት ሰዓት ከፖቲዮሜትሮች ጋር
ማለቂያ የሌለው የመስታወት ሰዓት ከፖቲዮሜትሮች ጋር

ማለቂያ የሌለው መስታወት አገኘሁ እና በጣም አሪፍ ሆኖ አገኘሁት። ይህ ማለቂያ የሌለው መስታወት እንድሠራ አነሳሳኝ ፣ ግን ዓላማ እንዲኖረኝ አስፈለገኝ። ስለዚህ ፣ የሚሰራ የማይገደብ የመስታወት ሰዓት ለመሥራት ወሰንኩ። ፖታቲሞሜትሮችን በመጠቀም ሁነታዎች ፣ ፍጥነት እና ቀለሞች እንዲለውጡ የሚያስችልዎ ማለቂያ የሌለው መስታወት ነው። (ማስታወሻ - እንደዚህ ያለ ነገር ስሠራ ይህ የመጀመሪያዬ ነው)

አቅርቦቶች

ይህንን ነገር ለመሥራት በሚያስፈልጉዎት ነገሮች ውስጥ ዘልለው ይግቡ!

ያስፈልግዎታል…

1) 1 አርዱዲኖ ኡኖ

3) 1 የዳቦ ሰሌዳ

4) 1 ስላይድ መቀየሪያ

5) 3 ፖታቲዮሜትሮች

6) 1 9V ባትሪ

7) 5 ሜትር WS2811 LED Strip

8) ዝላይ ገመድ ገመዶች

9) ሰዓት (እኔ 12 ኢንች ትልቅ ዘመናዊ ሰዓት ተጠቀምኩ)

10) ተጣጣፊ የመስታወት ሉህ (የመስታወት ሉህ የተጠቀምኩት)

11) የግላዊነት ፊልም (እኔ አንድ መንገድ መስታወት የተጠቀምኩበት)

12) መሸጫ ሊጠየቅ ይችላል ፣ ይህ እርስዎ ባሉዎት ቁሳቁስ ላይ የተመሠረተ ነው

ደረጃ 1 - ሽቦ

ሽቦ
ሽቦ
ሽቦ
ሽቦ

ሽቦው በጣም ቀላል ነው

- የ SPST ማብሪያ / ማጥፊያ የ LED ን (A0) ያበራል እና ያጠፋል

- የግራ ፖታቲሞሜትር መብራቱን ይቆጣጠራል (A1)

- መካከለኛ ፖታቲሞሜትር ሁነቶቹን (A2) ይቆጣጠራል

- ትክክለኛው ፖታቲሞሜትር ፍጥነቱን (A3) ይቆጣጠራል

ደረጃ 2 - ኮዱ

#ያካትቱ

#ፒን 6 ን ይግለጹ

#መለየት NUM_LEDS 54

#መለየት A0 A0

#መለየት A1 A1

#መለየት A2 A2

#A3 A3 ን ይግለጹ

// መለኪያ 1 = በስትፕ ውስጥ የፒክሴሎች ብዛት

// መለኪያ 2 = የፒን ቁጥር (አብዛኛዎቹ ልክ ናቸው)

// ልኬት 3 = የፒክሰል ዓይነት ባንዲራዎች ፣ እንደአስፈላጊነቱ አንድ ላይ ያክሉ

// NEO_KHZ800 800 KHz bitstream (አብዛኛዎቹ የ NeoPixel ምርቶች w/WS2812 LEDs)

// NEO_KHZ400 400 KHz (ክላሲክ 'v1' (v2 አይደለም) የፍሎራ ፒክስሎች ፣ WS2811 ሾፌሮች)

// NEO_GRB ፒክሴሎች ለ GRB bitstream (አብዛኛዎቹ የ NeoPixel ምርቶች) ተይዘዋል

// NEO_RGB ፒክስሎች ለ RGB bitstream (v1 FLORA ፒክሰሎች ፣ v2 አይደሉም) በገመድ ተይዘዋል።

Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUM_LEDS ፣ ፒን ፣ NEO_GRB + NEO_KHZ800) ፤

ባዶነት ማዋቀር () {

strip.begin ();

strip.show (); // ሁሉንም ፒክሰሎች ወደ ‹ጠፍቷል› ያስጀምሩ።

}

ባዶነት loop () {

ከሆነ (አናሎግ አንብብ (A0)> = 512) {

ከሆነ (አናሎግ አንብብ (A2)> = 768) {

ከሆነ (አናሎግ አንብብ (A3)> = 768) {

ቀስተ ደመና ሳይክል (80 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A3)> = 512) {

ቀስተ ደመና ሳይክል (60 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A3)> = 256) {

ቀስተ ደመና ሳይክል (40 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

ሌላ {

ቀስተ ደመና ሳይክል (20 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

} ሌላ ከሆነ (አናሎግ አንብብ (A2)> = 512) {

ከሆነ (አናሎግ አንብብ (A1)> = 768) {

CylonBounce (በዘፈቀደ (255) ፣ በዘፈቀደ (255) ፣ በዘፈቀደ (255) ፣ 4 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 512) {

CylonBounce (በዘፈቀደ (255) ፣ 0 ፣ 0 ፣ 4 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 256) {

CylonBounce (0 ፣ በዘፈቀደ (255) ፣ 0 ፣ 4 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

ሌላ {

CylonBounce (0 ፣ 0 ፣ በዘፈቀደ (255) ፣ 4 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

} ሌላ ከሆነ (አናሎግ አንብብ (A2)> = 256) {

ከሆነ (አናሎግ አንብብ (A1)> = 768) {

ባይት r, g, b;

r = በዘፈቀደ (255);

g = በዘፈቀደ (255);

ለ = በዘፈቀደ (255);

meteorRain (r ፣ g ፣ b ፣ 10 ፣ 20 ፣ እውነት ፣ analogRead (A0) ፣ analogRead (A1) ፣ analogRead (A2) ፣ analogRead (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 512) {

ባይት r, g, b;

r = በዘፈቀደ (255);

ሰ = 0;

ለ = 0;

meteorRain (r ፣ g ፣ b ፣ 10 ፣ 20 ፣ እውነት ፣ analogRead (A0) ፣ analogRead (A1) ፣ analogRead (A2) ፣ analogRead (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 256) {

ባይት r, g, b;

r = 0;

g = በዘፈቀደ (255);

ለ = 0;

meteorRain (r ፣ g ፣ b ፣ 10 ፣ 20 ፣ እውነት ፣ analogRead (A0) ፣ analogRead (A1) ፣ analogRead (A2) ፣ analogRead (A3));

}

ሌላ {

ባይት r, g, b;

r = 0;

ሰ = 0;

ለ = በዘፈቀደ (255);

meteorRain (r ፣ g ፣ b ፣ 10 ፣ 20 ፣ እውነት ፣ analogRead (A0) ፣ analogRead (A1) ፣ analogRead (A2) ፣ analogRead (A3));

}

}

ሌላ {ከሆነ (አናሎግ አንብብ (A1)> = 768) {

RunningLights (የዘፈቀደ (255) ፣ የዘፈቀደ (255) ፣ የዘፈቀደ (255) ፣ analogRead (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3)));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 512) {

RunningLights (በዘፈቀደ (255) ፣ 1 ፣ 1 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

} ሌላ ከሆነ (አናሎግ አንብብ (A1)> = 256) {

RunningLights (1 ፣ በዘፈቀደ (255) ፣ 1 ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

ሌላ {

RunningLights (1 ፣ 1 ፣ በዘፈቀደ (255) ፣ አናሎግ አንባቢ (A0) ፣ አናሎግ አንባቢ (A1) ፣ አናሎግ አንባቢ (A2) ፣ አናሎግ አንባቢ (A3));

}

}

} ሌላ {

setAll (0, 0, 0);

}

}

ባዶ ባዶ ቀስተ ደመና ሳይክል (int SpeedDelay ፣ int oldA0 ፣ int oldA1 ፣ int oldA2 ፣ int oldA3) {

ባይት *ሐ;

uint16_t i, j;

ለ (j = 0; j <256*5; j ++) {// በተሽከርካሪ ላይ የሁሉም ቀለሞች 5 ዑደቶች

(oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) | ((oldA3+256)

ሰበር;

}

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

(oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) | ((oldA3+256)

ሰበር;

}

ሐ = ጎማ (((i * 256 / NUM_LEDS) + j) & 255);

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

}

showStrip ();

መዘግየት (SpeedDelay);

}

}

ባይት * ጎማ (ባይት WheelPos) {

የማይንቀሳቀስ ባይት ሐ [3];

ከሆነ (WheelPos <85) {

ሐ [0] = WheelPos * 3;

ሐ [1] = 255 - WheelPos * 3;

ሐ [2] = 0;

} ሌላ ከሆነ (WheelPos <170) {

WheelPos -= 85;

ሐ [0] = 255 - WheelPos * 3;

ሐ [1] = 0;

ሐ [2] = WheelPos * 3;

} ሌላ {

WheelPos -= 170;

ሐ [0] = 0;

ሐ [1] = WheelPos * 3;

ሐ [2] = 255 - WheelPos * 3;

}

መመለስ ሐ;

}

ባዶ CylonBounce (ባይት ቀይ ፣ ባይት አረንጓዴ ፣ ባይት ሰማያዊ ፣ int EyeSize ፣ int oldA0 ፣ int oldA1 ፣ int oldA2 ፣ int oldA3) {

int SpeedDelay;

int ReturnDelay;

ከሆነ (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;}

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

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

setAll (0, 0, 0);

setPixel (i ፣ ቀይ/10 ፣ አረንጓዴ/10 ፣ ሰማያዊ/10);

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

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

setPixel (i+j ፣ ቀይ ፣ አረንጓዴ ፣ ሰማያዊ);

}

setPixel (i+EyeSize+1 ፣ ቀይ/10 ፣ አረንጓዴ/10 ፣ ሰማያዊ/10);

showStrip ();

መዘግየት (SpeedDelay);

}

መዘግየት (ReturnDelay);

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

setAll (0, 0, 0);

setPixel (i ፣ ቀይ/10 ፣ አረንጓዴ/10 ፣ ሰማያዊ/10);

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

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

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

setPixel (i+j ፣ ቀይ ፣ አረንጓዴ ፣ ሰማያዊ);

}

setPixel (i+EyeSize+1 ፣ ቀይ/10 ፣ አረንጓዴ/10 ፣ ሰማያዊ/10);

showStrip ();

መዘግየት (SpeedDelay);

}

መዘግየት (ReturnDelay);

}

ባዶ RunningLights (ባይት ቀይ ፣ ባይት አረንጓዴ ፣ ባይት ሰማያዊ ፣ int oldA0 ፣ int oldA1 ፣ int oldA2 ፣ int oldA3) {

int አቀማመጥ = 0;

int WaveDelay;

ከሆነ (analogRead (A3)> = 768) {WaveDelay = 80;}

ሌላ ከሆነ (analogRead (A3)> = 512) {WaveDelay = 60;}

ሌላ ከሆነ (analogRead (A3)> = 256) {WaveDelay = 40;}

ሌላ {WaveDelay = 20;}

ለ (int j = 0; j

{

(oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) | ((oldA3+256)

ሰበር;

}

አቀማመጥ ++; // = 0; // አቀማመጥ + ደረጃ;

ለ (int i = 0; i

// ሳይን ሞገድ ፣ 3 የማካካሻ ሞገዶች ቀስተ ደመናን ያደርጋሉ!

// ተንሳፋፊ ደረጃ = ኃጢአት (i + Position) * 127 + 128;

// setPixel (i ፣ ደረጃ ፣ 0 ፣ 0);

// ተንሳፋፊ ደረጃ = ኃጢአት (i + Position) * 127 + 128;

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

setPixel (i ፣ ((ኃጢአት (እኔ + አቀማመጥ) * 127 + 128)/255) * ቀይ ፣

((ኃጢአት (i + አቀማመጥ) * 127 + 128)/255) * አረንጓዴ ፣

((ኃጢአት (i + አቀማመጥ) * 127 + 128)/255) * ሰማያዊ);

}

showStrip ();

መዘግየት (WaveDelay);

}

}

ባዶ ሜቶር ራይን (ባይት ቀይ ፣ ባይት አረንጓዴ ፣ ባይት ሰማያዊ ፣ ባይት meteorSize ፣ ባይት meteorTrailDecay ፣ ቡሊያን meteorRandomDecay ፣ int oldA0 ፣ int oldA1 ፣ int oldA2 ፣ int oldA3) {

setAll (0, 0, 0);

int SpeedDelay;

ከሆነ (analogRead (A3)> = 768) {SpeedDelay = 80;}

ሌላ ከሆነ (analogRead (A3)> = 512) {SpeedDelay = 60;}

ሌላ ከሆነ (analogRead (A3)> = 256) {SpeedDelay = 40;}

ሌላ {SpeedDelay = 20;}

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

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

// ሁሉንም ብሩህነት (LED) አንድ ደረጃን ያደበዝዙ

ለ (int j = 0; j

ከሆነ (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) ((oldA1+256) analogRead (A2)) || | ((oldA3+256)

ሰበር;

}

ከሆነ ((! meteorRandomDecay) || (በዘፈቀደ (10)> 5)) {

fadeToBlack (j, meteorTrailDecay);

}

}

// meteor ይሳሉ

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

(oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) | ((oldA3+256)

ሰበር;

}

ከሆነ ((i-j = 0)) {

setPixel (i-j ፣ ቀይ ፣ አረንጓዴ ፣ ሰማያዊ);

}

}

showStrip ();

መዘግየት (SpeedDelay);

}

}

ባዶነት fadeToBlack (int ledNo ፣ byte fadeValue) {

#ifdef ADAFRUIT_NEOPIXEL_H

// ኒኦፒክስል

uint32_t oldColor;

uint8_t r, g, b;

int እሴት;

oldColor = strip.getPixelColor (ledNo);

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

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

ለ = (oldColor & 0x000000ffUL);

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

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

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

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

#ኤንዲፍ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

leds [ledNo].fadeToBlackBy (fadeValue);

#ኤንዲፍ

}

// *** ወደዚህ ይተኩ ***

ባዶ ትርዒት ስትሪፕ () {

#ifdef ADAFRUIT_NEOPIXEL_H

// ኒኦፒክስል

strip.show ();

#ኤንዲፍ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

FastLED.show ();

#ኤንዲፍ

}

ባዶ ባዶ ፒክሰል (int Pixel ፣ ባይት ቀይ ፣ ባይት አረንጓዴ ፣ ባይት ሰማያዊ) {

#ifdef ADAFRUIT_NEOPIXEL_H

// ኒኦፒክስል

strip.setPixelColor (Pixel ፣ strip. ቀለም (ቀይ ፣ አረንጓዴ ፣ ሰማያዊ));

#ኤንዲፍ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

ሊድስ [Pixel].r = ቀይ;

leds [Pixel].g = አረንጓዴ;

ሊዶች [Pixel].b = ሰማያዊ;

#ኤንዲፍ

}

ባዶ ስብስብ ሁሉም (ባይት ቀይ ፣ ባይት አረንጓዴ ፣ ባይት ሰማያዊ) {

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

setPixel (i ፣ ቀይ ፣ አረንጓዴ ፣ ሰማያዊ);

}

showStrip ();

}

ደረጃ 3 - ሰዓቱን መፍጠር

ሰዓት መፍጠር
ሰዓት መፍጠር
ሰዓት መፍጠር
ሰዓት መፍጠር
ሰዓት መፍጠር
ሰዓት መፍጠር

ውስጡ ጠፍጣፋ የሆነ የመስታወት ሰዓት እንዲያገኝ እመክራለሁ። ተጣጣፊውን መስተዋት በሰዓት ውስጡ ላይ ስተገብር በሰዓቱ ውስጥ ባሉት ቁጥሮች ምክንያት ቁጥሩ በመውጣቱ ምክንያት ችግር ነበር ፣ መስታወቱ እየታጠፈ ወደ መጨረሻው የመስታወት ውጤት እንዳይከሰት ምክንያት ሆኗል። በተቻለ መጠን ጠፍጣፋ እንዲሆን ተጣጣፊ የመስታወት ሉህ እና የግላዊነት ፊልሙ ሊኖርዎት ይገባል። ሰዓት እያገኙ ከሆነ ያለ ምንም ችግር LED ን በውስጣቸው ማስቀመጥዎን ያረጋግጡ።

ደረጃ 1: ሰዓቱን ይክፈቱ እና የፊት መስታወቱን ያስወግዱ

ደረጃ 2 - የግላዊነት ፊልሙን ከፊት መስታወቱ ላይ ያድርጉ (ይህ ቪዲዮ እንዴት እንደሚያደርጉት ያሳያል)

ደረጃ 3: ተጣጣፊውን መስተዋት በሰዓት ውስጠኛው ላይ ይተግብሩ (ይህንን ከማድረግዎ በፊት የሰዓት እጆቹን ያስወግዱ)

ደረጃ 4: የሰዓት እጆች ወደ ውስጥ እንዲገቡ በመካከል መሃል ቀዳዳ ይፍጠሩ

ደረጃ 5: በሰዓት ውስጠኛው ግድግዳዎች ዙሪያ የ LED ን ንጣፍ ያስቀምጡ (ለዚህ ደረጃ ትኩስ ሙጫ ጠመንጃ እጠቀም ነበር)

ደረጃ 6: የማያቋርጥ መስተዋቱ ውጤት መኖሩን ለማየት የኤልዲዲውን ንጣፍ ያብሩ እና ብርጭቆውን በሰዓት አናት ላይ ያድርጉት።

ደረጃ 7 - ሁሉንም ነገር ከጨረሱ በኋላ ሰዓቱን አንድ ላይ ያድርጉ እና ሽቦዎቹ ወደ ጀርባው እንዲያልፉ ያድርጉ

ደረጃ 8 ፕሮጀክቱን ስለጨረሱ እንኳን ደስ አለዎት እና ሁሉም ነገር በጥሩ ሁኔታ መሥራት አለበት

ማናቸውም ጥያቄዎች ካሉዎት እባክዎን ከዚህ በታች አስተያየት ይስጡ (እኔ መልስ መስጠት እንደማልችል እወቅ ፣ ግን የተቻለኝን ሁሉ አደርጋለሁ)

የሚመከር: