Სარჩევი:

დასვენების სათვალე - ITTT: 5 ნაბიჯი (სურათებით)
დასვენების სათვალე - ITTT: 5 ნაბიჯი (სურათებით)

ვიდეო: დასვენების სათვალე - ITTT: 5 ნაბიჯი (სურათებით)

ვიდეო: დასვენების სათვალე - ITTT: 5 ნაბიჯი (სურათებით)
ვიდეო: ვისწავლოთ თხილამურებზე სრიალი 2024, ნოემბერი
Anonim
დასვენების სათვალე - ITTT
დასვენების სათვალე - ITTT
დასვენების სათვალე - ITTT
დასვენების სათვალე - ITTT
დასვენების სათვალე - ITTT
დასვენების სათვალე - ITTT

HKU პროექტი - ITTT (თუ ეს მაშინ ისაა) - ჯულია ბერკუუერი, 1B

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

თქვენ ასევე შეგიძლიათ თვალყური ადევნოთ თქვენს სუნთქვის ინტენსივობას გადამრთველის გადატრიალებით, fsr- სენსორის გამოყენებით.

ამ ტოტურიალით მე გაგიწევთ ნაბიჯებს საკუთარი დამამშვიდებელი სათვალეების მშენებლობაში.

ნაბიჯი 1: საჭირო მასალები და ნაწილები:

საჭირო მასალები და ნაწილები
საჭირო მასალები და ნაწილები
საჭირო მასალები და ნაწილები
საჭირო მასალები და ნაწილები
საჭირო მასალები და ნაწილები
საჭირო მასალები და ნაწილები

მასალები:

1x arduino uno;

1xbreadboard ან PCV;

3x 10k რეზისტორები

მავთულები (სასურველია განსხვავებული ფერები, ასე რომ უფრო ადვილია იმის თქმა, თუ რა ნივთები მიდის მიწაზე და რომელი მიდის სხვადასხვა ქინძისთავზე და ა.შ.);

ზოგიერთი სითბოს შემცირება მილები;

2x NeoPixel Ring - 16 x 5050 RGB LED ინტეგრირებული დრაივერებით;

1x გადამრთველი;

1x FSR სენსორი;

1x SteamPunk სათვალე (შეგიძლიათ შეიძინოთ წვეულების მაღაზიაში, მათი გამოყენება ადვილია, რადგან ნეოპიქსელის ბეჭედი შესანიშნავად ჯდება სათვალეებზე. თქვენ ყოველთვის ცდილობთ გამოიყენოთ სხვა სათვალე ან შექმნათ თქვენი საკუთარი.);

1x რაიმე სახის (ელასტიური) ბენდი მკერდზე.

ინსტრუმენტები:-ლეპტოპი

-გამათბობელი რკინა

-Arduino IDE პროგრამული უზრუნველყოფა

თქვენ ნახავთ ორ ღილაკს და გადამრთველს ჩემს pvc– ზე, მე მხოლოდ მარცხენა ღილაკს ვიყენებ მის გადამრთველთან დასაკავშირებლად, მე არ ვიყენებ მეორე ღილაკს სურათის მარჯვნივ. პვკ -ზე დავაყენე ღილაკები სანამ მივხვდებოდი რომ არ მჭირდება და ამის ნაცვლად გადამრთველი უნდა გამოვიყენო.

ქვემოთ ნახავთ სურათებს ყველაფრისგან, რაც მე გამოვიყენე:

ნაბიჯი 2: ნეოპიქსელის ბეჭდები

ნეოპიქსელის ბეჭდები
ნეოპიქსელის ბეჭდები

თეთრი მავთული უკავშირდება მიწას ნეოპიქსელის რგოლის უკანა მხარეს.

ნარინჯისფერი მავთული უკავშირდება 5 ვ.

და ყავისფერი მავთული უკავშირდება მონაცემთა შეყვანას

ნაბიჯი 3: კავშირები

კავშირები
კავშირები
კავშირები
კავშირები

ასე გამოიყურებოდა ჩემი პურის დაფა პროტოტიპის დროს, შეგიძლიათ გამოიყენოთ ეს როგორც მინიშნება.

მე ასევე გავაკეთე გაყვანილობის განლაგება, თუ როგორ უნდა გამოიყურებოდეს იგი მხოლოდ ერთი ღილაკით.

ნაბიჯი 4: კოდი:

ეს ალბათ არ არის ყველაზე ეფექტური კოდი, მაგრამ ის მუშაობს ჩემთვის. გაიმეორეთ საკუთარი თავი და შეეცადეთ გახადოთ ის უფრო ეფექტური; პ

#ჩართეთ

// რომელი

Arduino– ს პინი დაკავშირებულია NeoPixels– თან?

#განსაზღვრეთ

PIN 6

// რომელი

Arduino– ს პინი უკავშირდება ღილაკს

#განსაზღვრეთ

BUTTON_PIN 9

// Როგორ

ბევრი NeoPixel ერთვის Arduino– ს?

#განსაზღვრეთ

NUMPIXELS 16

// Როდესაც

ჩვენ ვაყენებთ NeoPixel ბიბლიოთეკას, ჩვენ ვეუბნებით მას რამდენი პიქსელი და რომელი პინი უნდა გამოვიყენოთ სიგნალების გასაგზავნად.

// Შენიშვნა

რომ ძველი NeoPixel ზოლებისთვის შეიძლება დაგჭირდეთ მესამე პარამეტრის შეცვლა-იხილეთ strandtest

//

მაგალითი დამატებითი ინფორმაციისათვის შესაძლო მნიშვნელობებზე.

ადაფრუტ_ნეოპიქსელი

პიქსელი = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

ინტერ პაუზა

= 1; // დაგვიანებით 2

int

პაუზა 2 = 80; // ქვევით როდესაც fsr გამოიყენება

int

პაუზა 3 = 150; // აკეთებს, როდესაც fsr გამოიყენება

int

დაგვიანება = 4; // დაგვიანებით 1

int

fsrPin = 0; // FSR და 10K pulldown დაკავშირებულია a0

int

fsrReading;

სიცარიელე

აწყობა() {

pinMode (BUTTON_PIN, INPUT);

სერიული.დაწყება (9600);

pixels.begin (); // ეს ინიციალიზაციას ახდენს

NeoPixel ბიბლიოთეკა.

pixels.show ();

}

ბოლი

ღილაკზე დაჭერილი (int pin) {

digitalRead (pin) დაბრუნება;

}

სიცარიელე

loop () {// კითხულობს თუ არა pin შეყვანის ჭეშმარიტი ან მცდარი

fsrReading = analogRead (fsrPin);

Serial.print ("ანალოგური კითხვა =");

Serial.print (fsrReading);

თუ (ღილაკზე დაჭერილი (BUTTON_PIN) == ჭეშმარიტი) {

// სინათლის ეფექტი fsr სენსორის გამოყენებისას

if (fsrReading> 50) {

pixels.setPixelColor (0, 1, 0, 1);

pixels.setPixelColor (15, 1, 0, 1);

pixels.setPixelColor (1, 1, 0, 1);

pixels.setPixelColor (14, 1, 0, 1);

pixels.show ();

შეფერხება (პაუზა 3);

}

თუ (fsrReading <52) {

pixels.setPixelColor (0, 0, 0, 0);

pixels.setPixelColor (15, 0, 0, 0);

pixels.setPixelColor (1, 0, 0, 0);

pixels.setPixelColor (14, 0, 0, 0);

pixels.show ();

შეფერხება (პაუზა 2);

}

if (fsrReading> 57) {

pixels.setPixelColor (2, 1, 0, 1);

pixels.setPixelColor (13, 1, 0, 1);

pixels.setPixelColor (3, 1, 0, 1);

pixels.setPixelColor (12, 1, 0, 1);

pixels.show ();

შეფერხება (პაუზა 3);

}

თუ (fsrReading <59) {

pixels.setPixelColor (2, 0, 0, 0);

pixels.setPixelColor (13, 0, 0, 0);

pixels.setPixelColor (3, 0, 0, 0);

pixels.setPixelColor (12, 0, 0, 0);

pixels.show ();

შეფერხება (პაუზა 2);

}

if (fsrReading> 65) {

pixels.setPixelColor (4, 1, 0, 1);

pixels.setPixelColor (11, 1, 0, 1);

pixels.setPixelColor (5, 1, 0, 1);

pixels.setPixelColor (10, 1, 0, 1);

pixels.show ();

შეფერხება (პაუზა 3);

}

თუ (fsrReading <67) {

pixels.setPixelColor (4, 0, 0, 0);

pixels.setPixelColor (11, 0, 0, 0);

pixels.setPixelColor (5, 0, 0, 0);

pixels.setPixelColor (10, 0, 0, 0);

pixels.show ();

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

}

if (fsrReading> 79) {

pixels.setPixelColor (6, 1, 0, 1);

pixels.setPixelColor (9, 1, 0, 1);

pixels.setPixelColor (7, 1, 0, 1);

pixels.setPixelColor (8, 1, 0, 1);

pixels.show ();

შეფერხება (პაუზა 3);

}

თუ (fsrReading <85) {

pixels.setPixelColor (6, 0, 0, 0);

pixels.setPixelColor (9, 0, 0, 0);

pixels.setPixelColor (7, 0, 0, 0);

pixels.setPixelColor (8, 0, 0, 0);

pixels.show ();

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

}

}

სხვა {

სუნთქვის_ ლურჯი (20, 100, 0, 1, 1); // ნორმალური

ეფექტი

}

}

// პაუზა

= გადადებათა შორის შეფერხება

// ნაბიჯები

= ნაბიჯების რაოდენობა

// რ, გ, B = სრული RGB მნიშვნელობები

// De void სუნთქვა არის voor het licht effect als de

fsrsensor niet gebruikt wordt. Deze void wordt in de void loop () weer aangeroepen.

ბათილი სუნთქვა_ ლურჯი (int პაუზა, int ნაბიჯები, ბაიტი R, ბაიტი G, ბაიტი ბ) {

int

tmpR, tmpG, tmpB; // ტემპის მნიშვნელობები

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გამრავლდით, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (0, tmpR, tmpG+1, tmpB);

pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);

}

pixels.show ();

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

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);

}

pixels.show ();

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

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);

}

pixels.show ();

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

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);

}

pixels.show ();

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

}

for (int i = 0;

მეpixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მე

pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);

}

pixels.show ();

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

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);

}

pixels.show ();

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

}

for (int i = 0;

მეpixels.setPixelColor (1, 0, 0, 0);

pixels.setPixelColor (14, 0, 0, 0);

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მეpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);

pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);

}

pixels.show ();

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

}

for (int i = 0;

მეpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);

}

// ქრებოდა

for (int s = 1; s <= ნაბიჯები; s ++) {

tmpR = (R * s) /

ნაბიჯები; // ჯერ გამრავლდით, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0;

მე

pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (7, tmpR, tmpG, tmpB);

pixels.setPixelColor (8, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (6, tmpR, tmpG, tmpB);

pixels.setPixelColor (9, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (5, tmpR, tmpG, tmpB);

pixels.setPixelColor (10, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (4, tmpR, tmpG, tmpB);

pixels.setPixelColor (11, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (3, tmpR, tmpG, tmpB);

pixels.setPixelColor (12, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; //

ჯერ გაამრავლეთ, რათა თავიდან აიცილოთ შემცირების შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (2, tmpR, tmpG, tmpB);

pixels.setPixelColor (13, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (1, tmpR, tmpG, tmpB);

pixels.setPixelColor (14, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

// ჩაქრება

for (int s = ნაბიჯები; s> 0; s--) {

tmpR = (R * s) / ნაბიჯები; // გაამრავლე ჯერ თავიდან აცილების მიზნით

შეცდომები

tmpG = (G * s) / ნაბიჯები;

tmpB = (B * s) / ნაბიჯები;

for (int i = 0; i

pixels.setPixelColor (0, tmpR, tmpG, tmpB);

pixels.setPixelColor (15, tmpR, tmpG, tmpB);

}

pixels.show ();

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

}

}

ნაბიჯი 5: ყველაფერი ერთად შეაერთეთ:

ყველაფრის ერთად აწყობა
ყველაფრის ერთად აწყობა

თქვენ უბრალოდ შეგიძლიათ დატოვოთ ყველა თქვენი მავთული, რომელიც დაკავშირებულია თქვენს დაფაზე ან PVC– ზე, თქვენზეა დამოკიდებული (მე ავირჩიე PVC არდუინოს თავზე დაყენება, ეს ლამაზი და სისუფთავეა).

შემდეგი ნაბიჯი არის სითბოს შემამცირებელი მილების დადება ყველა მავთულის გარშემო, ასე რომ ის არეულობას გამოიწვევს.

თუ თქვენ გადაწყვიტეთ PVC– ის გამოყენება, თქვენ უკვე უნდა გაერთოთ აქამდე.

ამის შემდეგ თქვენ აყენებთ ნეოპიქსელის რგოლებს სათვალის გარედან (დარწმუნდით, რომ ლიდერები გასწორებულია ქვედა ნაწილში) და მიამაგრეთ ისინი ლენტით ან წებოთი (მე ფირზე ვიყენებ).

თქვენ შეგიძლიათ აირჩიოთ fsr- სენსორი ელასტიური ჯგუფზე მიამაგროთ ლენტით, ან უბრალოდ დატოვოთ იგი დამოუკიდებლად.

ისიამოვნეთ თქვენი სათვალეებით:)

გირჩევთ: