Mündəricat:
- Addım 1: Lazım olan materiallar və hissələr:
- Addım 2: Neopixel Üzüklər
- Addım 3: Bağlantılar
- Addım 4: Kod:
- Addım 5: Hər şeyi bir yerə qoyun:
Video: İstirahət Eynəyi - ITTT: 5 Addım (Şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
HKU Layihəsi - ITTT (Əgər bu belədirsə) - Julia Berkouwer, 1B
Heç stresli hiss etdinizmi və özünüzü necə sakitləşdirəcəyinizi bilmirsinizsə, bu istirahət gözlüklərini sınamalısınız! Onları taxıb gözlərinizi yumursunuz, sonra bir nəfəs alma modeli oynayacaq. Bu nəfəs alma qaydasına riayət etməklə nəfəs alma ritminiz dəqiqədə 6 dəfə nəfəs alacaq və çıxacaq. Gündəlik stresdən azad olun.
Bir fsr sensoru istifadə edərək açarı çevirərək nəfəs intensivliyinizi də izləyə bilərsiniz.
Bu toturial ilə addım -addım öz istirahət gözlüklərinizi hazırlamağınıza kömək edəcəyəm.
Addım 1: Lazım olan materiallar və hissələr:
Materiallar:
1 dəfə arduino uno;
1xbreadboard və ya PCV;
3x 10k rezistorlar
Tellər (Tercihen fərqli rənglər, hansı şeylərin yerə, hansının fərqli sancaqlar və s. Gedəcəyini söyləmək daha asandır);
Bəzi istilik büzücü borular;
2x NeoPixel Üzük - Entegre Sürücüləri olan 16 x 5050 RGB LED;
1x keçid;
1 x FSR sensoru;
1x SteamPunk gözlükləri (Onları bir ziyafət mağazasında satın ala bilərsiniz, istifadə etmək çox asandır, çünki neopixel üzük eynəklərə mükəmməl uyğun gəlir. Həmişə digər gözlüklərdən istifadə etməyə çalışırsınız və ya öz əllərinizlə yaradırsınız);
Sinə ətrafına taxmaq üçün bir növ elastik bant.
Alətlər:-Laptop
-Lehimleme dəmir
-Arduino IDE proqramı
Pvc -də iki düymə və bir keçid görəcəksiniz, mən onu yalnız düyməyə bağlamaq üçün sol düyməni istifadə edirəm, şəklin sağındakı ikinci düyməni istifadə etmirəm. Lazım olmadığını başa düşməzdən əvvəl düymələri pvc -yə qoydum və bunun əvəzinə bir keçid istifadə etməli oldum.
Aşağıda istifadə etdiyim hər şeyin şəkillərini görəcəksiniz:
Addım 2: Neopixel Üzüklər
Ağ tel, neopixel halqanın arxasındakı yerə bağlıdır.
Narıncı tel 5V -ə qoşulur.
Və qəhvəyi tel məlumat girişinə bağlıdır
Addım 3: Bağlantılar
Çörək taxtam prototip hazırlayarkən belə görünürdü, bundan istinad olaraq istifadə edə bilərsiniz.
Mən də yalnız bir düymə ilə necə görünməli olduğunun tellərinin sxemini hazırladım.
Addım 4: Kod:
Yəqin ki, ən səmərəli kod deyil, amma mənim üçün işləyir. Özünüzə meydan oxuyun və daha səmərəli etməyə çalışın; P.
#daxil edin
// Hansı
pin Arduino NeoPixelsə bağlıdır?
#müəyyənləşdirmək
PIN 6
// Hansı
pin Arduino düyməsinə bağlıdır
#müəyyənləşdirmək
BUTTON_PIN 9
// Necə
bir çox NeoPixel Arduino -ya bağlıdır?
#müəyyənləşdirmək
NUMPIXELS 16
// Nə vaxt
NeoPixel kitabxanasını qururuq, siqnal göndərmək üçün neçə piksel və hansı pin istifadə edəcəyimizi söyləyirik.
// Qeyd
köhnə NeoPixel zolaqları üçün üçüncü parametri dəyişdirməyiniz lazım ola bilər-strandtestə baxın
//
mümkün dəyərlər haqqında daha çox məlumat üçün nümunə.
Adafruit_NeoPixel
piksel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
fasilə
= 1; // gecikmə2
int
fasilə2 = 80; // fsr istifadə olunanda aşağı düşür
int
fasilə3 = 150; // fsr istifadə edildikdə işləmək
int
gecikmə = 4; // gecikmə1
int
fsrPin = 0; // FSR və 10K açılan yer a0 -a bağlıdır
int
fsrReading;
boş
qurmaq() {
pinMode (BUTTON_PIN, GİRİŞ);
Serial.begin (9600);
piksel.begin (); // Bu, başlatır
NeoPixel kitabxanası.
piksel.show ();
}
bool
düyməyə basıldı (int pin) {
digitalRead (pin) qaytar;
}
boş
loop () {// pin girişinin doğru və ya yanlış olduğunu oxuyur
fsrReading = analogRead (fsrPin);
Serial.print ("Analog oxu =");
Serial.print (fsrReading);
əgər (düyməyə basılsa (BUTTON_PIN) == doğru) {
// fsr sensorundan istifadə edərkən işıq effekti
əgər (fsrReading> 50) {
piksel.setPixelColor (0, 1, 0, 1);
piksel.setPixelColor (15, 1, 0, 1);
piksel.setPixelColor (1, 1, 0, 1);
piksel.setPixelColor (14, 1, 0, 1);
piksel.show ();
gecikmə (fasilə 3);
}
if (fsrReading <52) {
piksel.setPixelColor (0, 0, 0, 0);
piksel.setPixelColor (15, 0, 0, 0);
piksel.setPixelColor (1, 0, 0, 0);
piksel.setPixelColor (14, 0, 0, 0);
piksel.show ();
gecikmə (fasilə2);
}
if (fsrReading> 57) {
piksel.setPixelColor (2, 1, 0, 1);
piksel.setPixelColor (13, 1, 0, 1);
piksel.setPixelColor (3, 1, 0, 1);
piksel.setPixelColor (12, 1, 0, 1);
piksel.show ();
gecikmə (fasilə3);
}
if (fsrReading <59) {
piksel.setPixelColor (2, 0, 0, 0);
piksel.setPixelColor (13, 0, 0, 0);
piksel.setPixelColor (3, 0, 0, 0);
piksel.setPixelColor (12, 0, 0, 0);
piksel.show ();
gecikmə (fasilə2);
}
əgər (fsrReading> 65) {
piksel.setPixelColor (4, 1, 0, 1);
piksel.setPixelColor (11, 1, 0, 1);
piksel.setPixelColor (5, 1, 0, 1);
piksel.setPixelColor (10, 1, 0, 1);
piksel.show ();
gecikmə (fasilə 3);
}
if (fsrReading <67) {
piksel.setPixelColor (4, 0, 0, 0);
piksel.setPixelColor (11, 0, 0, 0);
piksel.setPixelColor (5, 0, 0, 0);
piksel.setPixelColor (10, 0, 0, 0);
piksel.show ();
gecikmə (40);
}
if (fsrReading> 79) {
piksel.setPixelColor (6, 1, 0, 1);
piksel.setPixelColor (9, 1, 0, 1);
piksel.setPixelColor (7, 1, 0, 1);
piksel.setPixelColor (8, 1, 0, 1);
piksel.show ();
gecikmə (fasilə3);
}
if (fsrReading <85) {
piksel.setPixelColor (6, 0, 0, 0);
piksel.setPixelColor (9, 0, 0, 0);
piksel.setPixelColor (7, 0, 0, 0);
piksel.setPixelColor (8, 0, 0, 0);
piksel.show ();
gecikmə (20);
}
}
başqa {
nəfəs_böyük (20, 100, 0, 1, 1); // normal
təsiri
}
}
// Fasilə
= keçidlər arasındakı gecikmə
// Addımlar
= addımların sayı
// R, G, B = Tam RGB dəyərləri
// De boş boş nəfəs həm də çox təsirlidir
FSRSENSOR niet gebruikt wordt. Void word in de void loop () sözünü yazın.
boş nəfəs alma mavi (fasilə, int addımlar, bayt R, bayt G, bayt B) {
int
tmpR, tmpG, tmpB; // İstilik dəyərləri
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (0, tmpR, tmpG+1, tmpB);
piksel.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
piksel.show ();
gecikmə (4);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (1, tmpR, tmpG+1, tmpB);piksel.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
piksel.show ();
gecikmə (4);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (2, tmpR, tmpG+2, tmpB);piksel.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
piksel.show ();
gecikmə (3.5);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (3, tmpR, tmpG+3, tmpB+5);piksel.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
piksel.show ();
gecikmə (3);
}
üçün (int i = 0;
ipiksel.setPixelColor (0, 0, 0, 0);piksel.setPixelColor (15, 0, 0, 0);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
i
piksel.setPixelColor (4, tmpR, tmpG+3, tmpB+15);piksel.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
piksel.show ();
gecikmə (3);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (5, tmpR, tmpG+4, tmpB+20);piksel.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
piksel.show ();
gecikmə (2);
}
üçün (int i = 0;
ipiksel.setPixelColor (1, 0, 0, 0);
piksel.setPixelColor (14, 0, 0, 0);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
ipiksel.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
piksel.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
piksel.show ();
gecikmə (gecikmə);
}
üçün (int i = 0;
ipiksel.setPixelColor (2, 0, 0, 0);piksel.setPixelColor (13, 0, 0, 0);
}
// Solğun
üçün (int s = 1; s <= addımlar; s ++) {
tmpR = (R * s) /
addımlar; // Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0;
i
piksel.setPixelColor (7, tmpR, tmpG, tmpB+44);piksel.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
piksel.show ();
gecikmə (gecikmə);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (7, tmpR, tmpG, tmpB);
piksel.setPixelColor (8, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (1);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (6, tmpR, tmpG, tmpB);
piksel.setPixelColor (9, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (1);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (5, tmpR, tmpG, tmpB);
piksel.setPixelColor (10, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (2);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (4, tmpR, tmpG, tmpB);
piksel.setPixelColor (11, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (2);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (3, tmpR, tmpG, tmpB);
piksel.setPixelColor (12, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (3);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; //
Kəsmə səhvlərinin qarşısını almaq üçün əvvəlcə vurun
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (2, tmpR, tmpG, tmpB);
piksel.setPixelColor (13, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (3);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (1, tmpR, tmpG, tmpB);
piksel.setPixelColor (14, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (4);
}
// Yıxıl
üçün (int s = addımlar; s> 0; s--) {
tmpR = (R * s) / addımlar; // Kəsilməmək üçün əvvəlcə çoxaldın
səhvlər
tmpG = (G * s) / addımlar;
tmpB = (B * s) / addımlar;
üçün (int i = 0; i
piksel.setPixelColor (0, tmpR, tmpG, tmpB);
piksel.setPixelColor (15, tmpR, tmpG, tmpB);
}
piksel.show ();
gecikmə (4);
}
}
Addım 5: Hər şeyi bir yerə qoyun:
Bütün tellərinizi çörək taxtanıza və ya bir PVC -yə bağlaya bilərsiniz, bu sizə bağlıdır (arduinonun üstünə bir PVC qoymağı seçdim, belə gözəl və səliqəlidir).
Növbəti addım, bütün tellərin ətrafına istilik büzücü borular qoymaqdır ki, daha az qarışıqlıq olsun.
Bir PVC istifadə etməyi seçmisinizsə, indiyə qədər hər şeyi birlikdə lehimləməlisiniz.
Bundan sonra, neopixel üzükləri gözlüklərin kənarına qoyun (LED -lərin aşağıya doğru hizalandığından əmin olun) və bir az lent və ya yapışqan ilə bərkidin (lent istifadə etdim).
Fsr-sensorunu elastik bantla bir az lentlə yapışdırmağı və ya öz başına buraxmağı seçə bilərsiniz.
Gözlüklərinizdən zövq alın:)
Tövsiyə:
Airsoft/Paintball üçün Prototip Gecə Görmə Eynəyi: 4 addım
Airsoft/Paintball üçün Gecə Görmə Gözlüklərinin Prototipi: Gecə Görmə haqqında Qısa QeydTəmiz gecə gözlükləri (gen 1, gen2 və gen 3) ümumiyyətlə ətrafdakı işığı gücləndirərək işləyir, lakin burada quracağımız gecə görmə gözlükləri fərqli bir prinsiplə işləyir. Pi NoIR kamerasından istifadə edəcəyik
Google Karton üçün Gecə Görmə Eynəyi: 10 Adım (Şəkillərlə birlikdə)
Google Karton üçün Gecə Görmə Eynəyi: İmtina: Bu cihazın istifadəsi yalnız əyləncə, təhsil və elmi məqsədlər üçün nəzərdə tutulmuşdur; casusluq və/və ya nəzarət üçün deyil. &Quot; casus gadget " xüsusiyyətlər yalnız əylənmək üçün tətbiqə əlavə edildi və heç bir praktik məqsədə xidmət etməyəcəkdi
Flex İstirahət: 4 addım
Flex Rest: Flex Rest, tez -tez masa işi ilə birlikdə gələn oturaq həyat tərzinin təsirlərini azaltmağı hədəfləyən bir məhsuldur. Bir yastıq və noutbuk stendindən ibarətdir. Yastıq kresloya qoyulur və zaman hiss edən bir təzyiq sensoru rolunu oynayır
Kasıb Adamın Google Eynəyi/Tunel Görənlərə Yardım: 5 Adım (Şəkillərlə)
Kasıb Adamın Google Glass/Tunel Vizyonu Olanlara Yardımı: Abstrakt: Bu layihə canlı bir videonu balıq gözü kamerasından geyilə bilən bir baş ekrana axın edir. Nəticə daha kiçik bir sahə daxilində daha geniş bir baxış sahəsidir (ekran gözünüzdən uzaq olan 4 "ekran 12" ilə müqayisə oluna bilər və 720 -də
P (illow) İstirahət: 9 addım
P (illow) İstirahət: Crimsonbot Coderz: Devin Keller, Michael Foster, & Məhsulun Arxasındakı Charles Cochren Fikri: Xarici işıqlar və səs-küylərlə məşğul olarkən yaxşı bir gecə istirahət etməyi çətin bilirsinizmi? Bu yayındırıcılar yuxuya getməyi çətinləşdirə bilər və hətta