Სარჩევი:

უსასრულობის სარკის საათი პოტენომეტრებით: 3 ნაბიჯი
უსასრულობის სარკის საათი პოტენომეტრებით: 3 ნაბიჯი

ვიდეო: უსასრულობის სარკის საათი პოტენომეტრებით: 3 ნაბიჯი

ვიდეო: უსასრულობის სარკის საათი პოტენომეტრებით: 3 ნაბიჯი
ვიდეო: მგლის შვილი filmebi qartulad ფილმები ქართულად 2024, ივლისი
Anonim
უსასრულობის სარკის საათი პოტენციმეტრით
უსასრულობის სარკის საათი პოტენციმეტრით

მე წავაწყდი უსასრულობის სარკეს და აღმოვაჩინე, რომ ის მართლაც მაგარია. ამან შთააგონა, რომ გამეკეთებინა უსასრულობის სარკე, მაგრამ მე მჭირდებოდა ის მიზნის მისაღწევად. ასე რომ, მე გადავწყვიტე გამეკეთებინა უსასრულობის სარკის საათი. ეს არის უსასრულობის სარკე, რომელიც საშუალებას გაძლევთ შეცვალოთ რეჟიმი, სიჩქარე და ფერები პოტენომეტრების გამოყენებით. (შენიშვნა: პირველად ვქმნი მსგავს რამეს)

მარაგები

მოდით განვიხილოთ რა გჭირდებათ ამ ნივთის გასაკეთებლად!

თქვენ დაგჭირდებათ…

1) 1 არდუინო უნო

3) 1 პურის დაფა

4) 1 სლაიდ გადამრთველი

5) 3 პოტენციომეტრი

6) 1 9V ბატარეა

7) 5 მეტრიანი WS2811 LED ზოლები

8) Jumper საკაბელო მავთულები

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 ბიტ -სტრიმი (უმეტესობა NeoPixel პროდუქტებით WS2812 LED- ებით)

// NEO_KHZ400 400 KHz (კლასიკური 'v1' (არა v2) FLORA პიქსელი, WS2811 დრაივერები)

// NEO_GRB პიქსელები გაყვანილია GRB ბიტრემისთვის (უმეტესობა NeoPixel პროდუქტებით)

// NEO_RGB პიქსელები მიერთებულია RGB ბიტრემისთვის (v1 FLORA პიქსელი, არა v2)

Adafruit_NeoPixel ზოლები = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

void setup () {

ზოლები. დაწყება ();

ზოლები. ჩვენება (); // ყველა პიქსელის ინიციალიზაცია "გამორთვის"

}

ბათილი მარყუჟი () {

if (analogRead (A0)> = 512) {

if (analogRead (A2)> = 768) {

if (analogRead (A3)> = 768) {

rainbowCycle (80, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A3)> = 512) {

rainbowCycle (60, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A3)> = 256) {

rainbowCycle (40, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

სხვა {

rainbowCycle (20, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

} else if (analogRead (A2)> = 512) {

if (analogRead (A1)> = 768) {

CylonBounce (შემთხვევითი (255), შემთხვევითი (255), შემთხვევითი (255), 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A1)> = 512) {

CylonBounce (შემთხვევითი (255), 0, 0, 4, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (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));

}

} else if (analogRead (A2)> = 256) {

if (analogRead (A1)> = 768) {

ბაიტი r, g, b;

r = შემთხვევითი (255);

g = შემთხვევითი (255);

b = შემთხვევითი (255);

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A1)> = 512) {

ბაიტი r, g, b;

r = შემთხვევითი (255);

g = 0;

b = 0;

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A1)> = 256) {

ბაიტი r, g, b;

r = 0;

g = შემთხვევითი (255);

b = 0;

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

სხვა {

ბაიტი r, g, b;

r = 0;

g = 0;

b = შემთხვევითი (255);

meteorRain (r, g, b, 10, 20, true, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

}

}

სხვა {if (analogRead (A1)> = 768) {

RunningLights (შემთხვევითი (255), შემთხვევითი (255), შემთხვევითი (255), analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (analogRead (A1)> = 512) {

RunningLights (შემთხვევითი (255), 1, 1, analogRead (A0), analogRead (A1), analogRead (A2), analogRead (A3));

} else if (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);

}

}

void rainbowCycle (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) + კ) & 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;

}

დაბრუნება გ;

}

ბათილი CylonBounce (ბაიტი წითელი, ბაიტი მწვანე, ბაიტი ლურჯი, int EyeSize, int oldA0, int oldA1, int oldA2, int oldA3) {

int SpeedDelay;

int ReturnDelay;

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

else if (analogRead (A3)> = 512) {SpeedDelay = 60; ReturnDelay = 100;}

else if (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);

}

void RunningLights (ბაიტი წითელი, ბაიტი მწვანე, ბაიტი ლურჯი, int oldA0, int oldA1, int oldA2, int oldA3) {

int პოზიცია = 0;

int WaveDelay;

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

else if (analogRead (A3)> = 512) {WaveDelay = 60;}

else if (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 + პოზიცია) * 127 + 128)/255) * წითელი, ((ცოდვა (i + პოზიცია) * 127 + 128)/255) * მწვანე, ((ცოდვა (i + პოზიცია) * 127 + 128)/255) * ლურჯი);

}

showStrip ();

დაგვიანება (WaveDelay);

}

}

ბათილი მეტეორი წვიმა (ბაიტი წითელი, ბაიტი მწვანე, ბაიტი ლურჯი, ბაიტე მეტეორი ზომა, ბაიტი მეტეორი TrailDecay, ლოგიკური მეტეორი შემთხვევითი დეკემბერი, int oldA0, int oldA1, int oldA2, int oldA3) {

setAll (0, 0, 0);

int SpeedDelay;

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

else if (analogRead (A3)> = 512) {SpeedDelay = 60;}

else if (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)

შესვენება;

}

// fade brightness ყველა LED ერთი ნაბიჯი

for (int j = 0; j)

if (oldA0! = analogRead (A0) || ((oldA1-256)> analogRead (A1)) || ((oldA1+256) analogRead (A2)) || ((oldA2+256) analogRead (A3)) | | ((ძველი A3+256)

შესვენება;

}

თუ ((! 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

// ნეოპიქსელი

uint32_t ძველი ფერი;

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);

#დაასრულე თუ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

leds [ledNo].fadeToBlackBy (fadeValue);

#დაასრულე თუ

}

// *** შეცვალეთ აქ ***

void showStrip () {

#ifdef ADAFRUIT_NEOPIXEL_H

// ნეოპიქსელი

ზოლები. ჩვენება ();

#დაასრულე თუ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

FastLED.show ();

#დაასრულე თუ

}

void setPixel (int Pixel, ბაიტი წითელი, ბაიტი მწვანე, ბაიტი ლურჯი) {

#ifdef ADAFRUIT_NEOPIXEL_H

// ნეოპიქსელი

strip.setPixelColor (პიქსელი, ზოლები. ფერი (წითელი, მწვანე, ლურჯი));

#დაასრულე თუ

#ifndef ADAFRUIT_NEOPIXEL_H

// FastLED

leds [პიქსელი].რ = წითელი;

leds [Pixel].g = მწვანე;

leds [Pixel].b = ლურჯი;

#დაასრულე თუ

}

ბათილი კომპლექტი ყველა (ბაიტი წითელი, ბაიტი მწვანე, ბაიტი ლურჯი) {

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

setPixel (i, წითელი, მწვანე, ლურჯი);

}

showStrip ();

}

ნაბიჯი 3: საათის შექმნა

საათის შექმნა
საათის შექმნა
საათის შექმნა
საათის შექმნა
საათის შექმნა
საათის შექმნა

მე გირჩევთ მიიღოთ შუშის საათი, რომელიც შიგნიდან ბრტყელია. როდესაც მე ვიყენებდი მოქნილ სარკეს საათის შიგნით, წარმოიქმნა პრობლემა საათის გარეთ არსებული რიცხვების გამო, სარკე იკეცებოდა, რის შედეგადაც არ ხდებოდა უსასრულობის სარკის ეფექტი. თქვენ უნდა გქონდეთ მოქნილი სარკის ფურცელი და კონფიდენციალურობის ფილმი რაც შეიძლება ბრტყელი იყოს. თუ საათს იღებთ, დარწმუნდით, რომ განათავსეთ LED უპრობლემოდ შიგნით.

ნაბიჯი 1: გახსენით საათი და ამოიღეთ წინა მინა

ნაბიჯი 2: განათავსეთ კონფიდენციალურობის ფილმი წინა მინაზე (ეს ვიდეო გიჩვენებთ თუ როგორ უნდა გააკეთოთ ეს)

ნაბიჯი 3: წაისვით მოქნილი სარკე საათის შიგნით (ამის გაკეთებამდე ამოიღეთ საათები)

ნაბიჯი 4: გააკეთეთ ხვრელი შუაში, რომ საათის ხელები ისევ უკან იყოს ჩასმული

ნაბიჯი 5: მოათავსეთ LED ზოლები საათის შიდა კედლების გარშემო (მე გამოვიყენე ცხელი წებოს იარაღი ამ ნაბიჯისათვის)

ნაბიჯი 6: ჩართეთ LED ზოლები და განათავსეთ ჭიქა საათის თავზე, რომ ნახოთ არის თუ არა უსასრულობის სარკის ეფექტი

ნაბიჯი 7: მას შემდეგ რაც დაასრულებთ ყველაფერს, შეაერთეთ საათი და დატოვეთ მავთულები უკანა მხარეს

ნაბიჯი 8: გილოცავთ თქვენ დაასრულეთ პროექტი და ყველაფერი კარგად უნდა მუშაობდეს

თუ თქვენ გაქვთ რაიმე შეკითხვები, გთხოვთ დაწეროთ ქვემოთ (იცოდეთ, რომ მე შეიძლება ვერ ვპასუხობ, მაგრამ ყველაფერს გავაკეთებ)

გირჩევთ: