Spisu treści:
- Krok 1: Potrzebne materiały i części:
- Krok 2: Pierścienie Neopixel
- Krok 3: Połączenia
- Krok 4: Kodeks:
- Krok 5: Składanie wszystkiego razem:
Wideo: Gogle relaksacyjne - ITTT: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Projekt HKU - ITTT (jeśli to, to tamto) - Julia Berkouwer, 1B
Czy kiedykolwiek czułeś się zestresowany i po prostu nie wiesz, jak się uspokoić, to wypróbuj te okulary relaksacyjne! Zakładasz je i zamykasz oczy, a następnie zagrasz wzór oddychania. Postępując zgodnie z tym wzorcem oddychania, twój rytm oddychania sprowadza się do wdechu i wydechu 6 razy na minutę. W ten sposób uwalnia się od codziennego stresu.
Możesz także śledzić intensywność oddychania, włączając przełącznik za pomocą czujnika fsr.
Z tym tutorialem poprowadzę Cię krok po kroku przez budowanie własnych okularów relaksacyjnych.
Krok 1: Potrzebne materiały i części:
Materiały:
1x arduino jedno;
1xpłyta lub PCV;
Rezystory 3x 10k
Przewody (najlepiej w różnych kolorach, aby łatwiej było powiedzieć, które rzeczy trafiają do ziemi, a które do różnych pinów itp.);
Niektóre rury termokurczliwe;
2x pierścień NeoPixel - 16 x 5050 RGB LED ze zintegrowanymi sterownikami;
1x przełącznik;
1x czujnik FSR;
1x gogle SteamPunk (możesz je kupić w sklepie imprezowym, są łatwe w użyciu, ponieważ pierścień neopikselowy idealnie pasuje do okularów. Zawsze próbujesz użyć innych gogli lub stworzyć własne.);
1x jakiś rodzaj (elastycznej) opaski do założenia wokół klatki piersiowej.
Narzędzia:-Laptop
-Lutownica
-Oprogramowanie Arduino IDE
Zobaczysz dwa przyciski i przełącznik na moim pcv, używam tylko lewego przycisku do podłączenia go do przełącznika, nie używam drugiego przycisku po prawej stronie zdjęcia. Umieściłem przyciski na pcv, zanim zdałem sobie sprawę, że ich nie potrzebuję i zamiast tego musiałem użyć przełącznika.
Poniżej zobaczysz zdjęcia wszystkiego, czego użyłem:
Krok 2: Pierścienie Neopixel
Biały przewód jest podłączony do masy z tyłu pierścienia neopiksela.
Pomarańczowy przewód jest podłączony do 5V.
A brązowy przewód jest podłączony do wejścia danych!
Krok 3: Połączenia
Tak wyglądała moja płytka prototypowa podczas prototypowania, możesz użyć tego jako odniesienia.
Zrobiłem też układ okablowania jak ma wyglądać za pomocą jednego przycisku.
Krok 4: Kodeks:
Prawdopodobnie nie jest to najbardziej wydajny kod, ale dla mnie działa. Zmierz się i postaraj się, aby był bardziej wydajny;P
#włączać
// Który
pin na Arduino jest podłączony do NeoPixels?
#definiować
PIN 6
// Który
pin na Arduino jest podłączony do przycisku
#definiować
PRZYCISK_PIN 9
// Jak
wiele NeoPixels jest podłączonych do Arduino?
#definiować
NUMPIKSELE 16
// Kiedy
konfigurujemy bibliotekę NeoPixel, mówimy jej, ile pikseli i którego pinu użyć do wysyłania sygnałów.
// Notatka
że w przypadku starszych pasków NeoPixel może być konieczna zmiana trzeciego parametru – patrz strandtest
//
przykład, aby uzyskać więcej informacji na temat możliwych wartości.
Adafruit_NeoPixel
piksele = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
wewnętrzna pauza
= 1; //opóźnienie2
int
pauza2 = 80; //schodzi, gdy używany jest fsr
int
pauza3 = 150; // robi się up, gdy używany jest fsr
int
opóźnienie = 4; // opóźnienie1
int
fsrPin = 0; // menu rozwijane FSR i 10K są połączone z a0
int
fsrCzytanie;
próżnia
Ustawiać() {
pinMode(PIN_PIN, WEJŚCIE);
Serial.początek(9600);
piksele.początek(); // To inicjuje
Biblioteka NeoPixel.
piksele.pokaż();
}
głupota
wciśnięty przycisk (szpilka int){
powrót digitalRead (pin);
}
próżnia
loop() { //odczytuje czy wejście pin jest prawdziwe czy fałszywe
fsrReading = analogRead (fsrPin);
Serial.print("Odczyt analogowy = ");
Serial.print(fsrReading);
if (przycisk naciśnięty(BUTTON_PIN) == true){
//efekt świetlny podczas korzystania z czujnika fsr
jeśli (fsrReading > 50){
piksele.setPixelColor(0, 1, 0, 1);
piksele.setPixelColor(15, 1, 0, 1);
piksele.setPixelColor(1, 1, 0, 1);
piksele.setPixelColor(14, 1, 0, 1);
piksele.pokaż();
opóźnienie(pauza3);
}
if (fsrReading < 52){
piksele.setPixelColor(0, 0, 0, 0);
piksele.setPixelColor(15, 0, 0, 0);
piksele.setPixelColor(1, 0, 0, 0);
piksele.setPixelColor(14, 0, 0, 0);
piksele.pokaż();
opóźnienie(pauza2);
}
jeśli (fsrReading > 57){
piksele.setPixelColor(2, 1, 0, 1);
piksele.setPixelColor(13, 1, 0, 1);
piksele.setPixelColor(3, 1, 0, 1);
piksele.setPixelColor(12, 1, 0, 1);
piksele.pokaż();
opóźnienie(pauza3);
}
jeśli (fsrReading < 59){
piksele.setPixelColor(2, 0, 0, 0);
piksele.setPixelColor(13, 0, 0, 0);
piksele.setPixelColor(3, 0, 0, 0);
piksele.setPixelColor(12, 0, 0, 0);
piksele.pokaż();
opóźnienie(pauza2);
}
jeśli (fsrReading > 65){
piksele.setPixelColor(4, 1, 0, 1);
piksele.setPixelColor(11, 1, 0, 1);
piksele.setPixelColor(5, 1, 0, 1);
piksele.setPixelColor(10, 1, 0, 1);
piksele.pokaż();
opóźnienie(pauza3);
}
jeśli (fsrReading <67){
piksele.setPixelColor(4, 0, 0, 0);
piksele.setPixelColor(11, 0, 0, 0);
piksele.setPixelColor(5, 0, 0, 0);
piksele.setPixelColor(10, 0, 0, 0);
piksele.pokaż();
opóźnienie(40);
}
jeśli (fsrReading > 79){
piksele.setPixelColor(6, 1, 0, 1);
piksele.setPixelColor(9, 1, 0, 1);
piksele.setPixelColor(7, 1, 0, 1);
piksele.setPixelColor(8, 1, 0, 1);
piksele.pokaż();
opóźnienie(pauza3);
}
jeśli (fsrReading <85){
piksele.setPixelColor(6, 0, 0, 0);
piksele.setPixelColor(9, 0, 0, 0);
piksele.setPixelColor(7, 0, 0, 0);
piksele.setPixelColor(8, 0, 0, 0);
piksele.pokaż();
opóźnienie(20);
}
}
w przeciwnym razie{
Breathe_blue (20, 100, 0, 1, 1); // normalny
efekt
}
}
// Pauza
= opóźnienie między przejściami
// Kroki
= liczba kroków
// R, G, B = Pełne wartości RGB
// De void breathe is voor het licht effect als de
fsrsensor niet gebruikt wordt. Deze void wordt in de void loop() weer aangeroepen.
void breathe_blue(int pauza, int kroki, bajt R, bajt G, bajt B) {
int
tmpR, tmpG, tmpB; // Wartości temperatury
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(0, tmpR, tmpG+1, tmpB);
piksele.setPixelColor(15, tmpR, tmpG+1, tmpB);
}
piksele.pokaż();
opóźnienie(4);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(1, tmpR, tmpG+1, tmpB);piksele.setPixelColor(14, tmpR, tmpG+1, tmpB);
}
piksele.pokaż();
opóźnienie(4);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(2, tmpR, tmpG+2, tmpB);piksele.setPixelColor(13, tmpR, tmpG+2, tmpB);
}
piksele.pokaż();
opóźnienie(3.5);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(3, tmpR, tmpG+3, tmpB+5);piksele.setPixelColor(12, tmpR, tmpG+3, tmpB+5);
}
piksele.pokaż();
opóźnienie(3);
}
dla (int i=0;
ipiksele.setPixelColor(0, 0, 0, 0);piksele.setPixelColor(15, 0, 0, 0);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
i
piksele.setPixelColor(4, tmpR, tmpG+3, tmpB+15);piksele.setPixelColor(11, tmpR, tmpG+3, tmpB+15);
}
piksele.pokaż();
opóźnienie(3);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(5, tmpR, tmpG+4, tmpB+20);piksele.setPixelColor(10, tmpR, tmpG+4, tmpB+20);
}
piksele.pokaż();
opóźnienie(2);
}
dla (int i=0;
ipiksele.setPixelColor(1, 0, 0, 0);
piksele.setPixelColor(14, 0, 0, 0);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
ipiksele.setPixelColor(6, tmpR, tmpG+2, tmpB+40);
piksele.setPixelColor(9, tmpR, tmpG+2, tmpB+40);
}
piksele.pokaż();
opóźnienie(opóźnienie);
}
dla (int i=0;
ipiksele.setPixelColor(2, 0, 0, 0);piksele.setPixelColor(13, 0, 0, 0);
}
// Zniknij
for (int s=1; s<=kroki; s++) {
tmpR = (R * s) /
kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0;
i
piksele.setPixelColor(7, tmpR, tmpG, tmpB+44);piksele.setPixelColor(8, tmpR, tmpG, tmpB+44);
}
piksele.pokaż();
opóźnienie(opóźnienie);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(7, tmpR, tmpG, tmpB);
piksele.setPixelColor(8, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(1);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(6, tmpR, tmpG, tmpB);
piksele.setPixelColor(9, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(1);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(5, tmpR, tmpG, tmpB);
piksele.setPixelColor(10, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(2);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(4, tmpR, tmpG, tmpB);
piksele.setPixelColor(11, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(2);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(3, tmpR, tmpG, tmpB);
piksele.setPixelColor(12, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(3);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; //
Pomnóż najpierw, aby uniknąć błędów obcinania
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(2, tmpR, tmpG, tmpB);
piksele.setPixelColor(13, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(3);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(1, tmpR, tmpG, tmpB);
piksele.setPixelColor(14, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(4);
}
// Zanikanie
for (int s=kroki; s>0; s--) {
tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia
błędy
tmpG = (G * s) / kroki;
tmpB = (B * s) / kroki;
dla (int i=0; i
piksele.setPixelColor(0, tmpR, tmpG, tmpB);
piksele.setPixelColor(15, tmpR, tmpG, tmpB);
}
piksele.pokaż();
opóźnienie(4);
}
}
Krok 5: Składanie wszystkiego razem:
Możesz po prostu zostawić wszystkie przewody podłączone do płytki stykowej lub PVC, to zależy od Ciebie (zdecydowałem się umieścić PVC na wierzchu arduino, jest to ładne i schludne w ten sposób).
Następnym krokiem jest założenie rurek termokurczliwych na wszystkie przewody, dzięki czemu jest mniej bałaganu.
Jeśli zdecydujesz się na użycie PVC, powinieneś już wszystko zlutować.
Następnie umieszczasz pierścienie neopikselowe na zewnętrznej stronie gogli (upewnij się, że diody led są wyrównane na dole) i zabezpieczasz je na miejscu za pomocą taśmy lub kleju (ja użyłem taśmy).
Możesz przykleić czujnik fsr do elastycznej taśmy za pomocą taśmy lub po prostu zostawić go sam.
Ciesz się goglami:)
Zalecana:
DIY gogle FPV: 6 kroków
DIY Gogle FPV: Widziałeś kiedyś te fajne systemy fpv, które mają faceci z flitetest. Cóż, zazdrościłam im tak wspaniałych rzeczy. Wiedziałem o zasięgu telefonów komórkowych i możliwościach rozmów wideo, Skype'a czy czegoś podobnego. Postanowiłem więc zrobić ow
Gogle Arduino SteamPunk - Proste Zrób to sam: 9 kroków
Gogle Arduino SteamPunk - Proste DIY: W tym samouczku nauczymy się tworzyć legendarne gogle SteamPunk, które zmieniają kolory za pomocą pierścieni LED i Arduino. Obejrzyj wideo
Gogle noktowizyjne do Google Cardboard: 10 kroków (ze zdjęciami)
Gogle noktowizyjne do Google Cardboard: Zastrzeżenie: To urządzenie jest przeznaczone wyłącznie do celów rozrywkowych, edukacyjnych i naukowych; nie do szpiegowania i/lub nadzoru. „Gadżet szpiegowski” funkcje zostały dodane do aplikacji tylko dla zabawy i nie miałyby żadnego praktycznego zastosowania dla
Zrób to sam - Gogle RGB: 3 kroki (ze zdjęciami)
Zrób to sam | Gogle RGB: Hej! Gogle RGB wykonałem przy użyciu diod LED WS2812B i Arduino Nano. Gogle posiadają wiele animacji, którymi można sterować za pomocą aplikacji mobilnej. Aplikacja może komunikować się z arduino poprzez moduł Bluetooth
DIY gogle VR Raspberry Pi: 9 kroków (ze zdjęciami)
DIY gogle VR Raspberry Pi: ZRZECZENIE SIĘ! Ze względu na to, że Raspberry Pi Zero nie jest bardzo wydajnym komputerem, liczba klatek na sekundę jest bardzo niska (poniżej 10 kl/s), co może być szkodliwe dla oczu. Te gogle VR są zbudowane przy użyciu Raspberry Pi Zero, co czyni je