Sadržaj:
- Korak 1: Potrebni materijali i dijelovi:
- Korak 2: Neopixel prstenovi
- Korak 3: Veze
- Korak 4: Kôd:
- Korak 5: Spajanje svega:
Video: Naočare za opuštanje - ITTT: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
HKU projekt - ITTT (Ako ovo onda ono) - Julia Berkouwer, 1B
Jeste li se ikada osjećali pod stresom i jednostavno ne znate kako se smiriti, onda biste trebali isprobati ove naočale za opuštanje! Stavite ih i zatvorite oči, a zatim će se igrati obrazac disanja. Prateći ovaj obrazac disanja, vaš disanje će se svesti na udisanje i izdisaj 6 puta u minuti. Time se oslobađate svakodnevnog stresa.
Intenzitet disanja možete pratiti i pritiskom na prekidač pomoću fsr senzora.
Pomoću ovog toturiala vodit ću vas kroz izgradnju vlastitih naočala za opuštanje korak po korak.
Korak 1: Potrebni materijali i dijelovi:
Materijali:
1x arduino uno;
1xbreadboard ili PCV;
3x 10k otpornici
Žice (po mogućnosti različite boje, tako da je lakše reći koje stvari idu u zemlju, a koje na različite igle itd.);
Neke cijevi za skupljanje topline;
2x NeoPixel prsten - 16 x 5050 RGB LED sa integrisanim upravljačkim programima;
1x prekidač;
1x FSR senzor;
1x SteamPunk naočale (Ove možete kupiti u party shopu, jednostavne su za upotrebu jer se prsten od neopiksela savršeno uklapa na čaše. Uvijek pokušavate koristiti druge naočare ili stvoriti vlastite.);
1x neka vrsta (elastične) trake koju ćete staviti oko grudi.
Alati: -Laptop
-Lemilica
-Arduino IDE softver
Vidjet ćete dva gumba i prekidač na mom pvc -u, koristim samo lijevo dugme za spajanje na prekidač, ne koristim drugo dugme desno od slike. Stavio sam dugmad na pvc prije nego što sam shvatio da mi ne trebaju i da moram umjesto toga koristiti prekidač.
Ispod ćete vidjeti slike svega što sam koristio:
Korak 2: Neopixel prstenovi
Bijela žica je spojena na uzemljenje na stražnjoj strani neopikselnog prstena.
Narančasta žica spojena je na 5V.
Smeđa žica je spojena na ulaz podataka
Korak 3: Veze
Ovako je izgledala moja ploča tijekom izrade prototipa, možete je koristiti kao referencu.
Napravio sam i raspored ožičenja kako bi trebalo izgledati sa samo jednim gumbom.
Korak 4: Kôd:
To vjerojatno nije najefikasniji kod, ali radi za mene. Izazovite sebe i pokušajte je učiniti efikasnijom; P
#include
// Koji
pin na Arduinu je spojen na NeoPixels?
#define
PIN 6
// Koji
pin na Arduinu povezan je s gumbom
#define
BUTTON_PIN 9
// Kako
mnogi NeoPixeli su priključeni na Arduino?
#define
NUMPIXELS 16
// Kada
postavljamo NeoPixel biblioteku, govorimo joj koliko piksela i koji pin treba koristiti za slanje signala.
// Bilješka
da ćete za starije NeoPixel trake možda morati promijeniti treći parametar-pogledajte strandtest
//
primjer za više informacija o mogućim vrijednostima.
Adafruit_NeoPixel
pikseli = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pause
= 1; // delay2
int
pauza2 = 80; // pada prema dolje kada se koristi fsr
int
pauza3 = 150; // raditi gore kada se koristi fsr
int
delayval = 4; // delay1
int
fsrPin = 0; // FSR i 10K padajući izbornik povezani su s a0
int
fsrReading;
void
postaviti() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // Ovo inicijalizira
Biblioteka NeoPixel.
pixels.show ();
}
bool
pritisnuto dugme (int pin) {
return digitalRead (pin);
}
void
loop () {// čita da li je pin ulaz tačan ili netačan
fsrReading = analogRead (fsrPin);
Serial.print ("Analogno čitanje =");
Serial.print (fsrReading);
if (pritisnuto dugme (BUTTON_PIN) == tačno) {
// svjetlosni efekt pri upotrebi fsr senzora
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 ();
kašnjenje (pauza3);
}
if (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 ();
kašnjenje (pauza2);
}
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 ();
kašnjenje (pauza3);
}
if (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 ();
kašnjenje (pauza2);
}
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 ();
kašnjenje (pauza3);
}
if (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 ();
kašnjenje (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 ();
kašnjenje (pauza3);
}
if (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 ();
kašnjenje (20);
}
}
else {
udahni_plavo (20, 100, 0, 1, 1); // normalno
efekat
}
}
// Pauza
= kašnjenje između prijelaza
// Koraci
= broj koraka
// R, G, B = Potpune RGB vrijednosti
// De void dishe is voor het licht effect als de
fsrsensor niet gebruikt wordt. Deze void wordt u de void loop () je bolje prilagođeno.
voidreathe_blue (int pauza, int koraci, bajt R, bajt G, bajt B) {
int
tmpR, tmpG, tmpB; // Temp vrijednosti
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixels.show ();
kašnjenje (4);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixels.show ();
kašnjenje (4);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixels.show ();
kašnjenje (3,5);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixels.show ();
kašnjenje (3);
}
za (int i = 0;
ipixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
i
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixels.show ();
kašnjenje (3);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixels.show ();
kašnjenje (2);
}
za (int i = 0;
ipixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
ipixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixels.show ();
kašnjenje (delayval);
}
za (int i = 0;
ipixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// Fade up
for (int s = 1; s <= koraci; s ++) {
tmpR = (R * s) /
koraci; // Najprije se pomnožite kako biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0;
i
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixels.show ();
kašnjenje (delayval);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (1);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (1);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (2);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (2);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (3);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; //
Prvo pomnožite da biste izbjegli greške pri skraćivanju
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (3);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (4);
}
// Smanjivanje
for (int s = koraci; s> 0; s--) {
tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje
greške
tmpG = (G * s) / koraci;
tmpB = (B * s) / koraci;
za (int i = 0; i
pixels.setPixelColor (0, tmpR, tmpG, tmpB);
pixels.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixels.show ();
kašnjenje (4);
}
}
Korak 5: Spajanje svega:
Mogli ste jednostavno ostaviti sve svoje žice spojene na vašu matičnu ploču ili PVC, to je na vama (ja sam odlučio staviti PVC na vrh arduina, tako je lijepo i uredno).
Sljedeći korak je staviti cijevi za skupljanje topline oko svih žica tako da bude manje nereda.
Ako ste odabrali korištenje PVC -a, tada ste već trebali sve zalemiti.
Nakon toga stavite neopikselne prstenove na vanjsku stranu naočala (provjerite jesu li LED diode poravnane na dnu) i pričvrstite ih na mjesto nekom trakom ili ljepilom (ja sam koristio traku).
Možete izabrati da zalijepite fsr-senzor na elastičnu traku nekom vrpcom ili ga samo izostavite.
Uživajte u naočarima:)
Preporučuje se:
Pametne naočare (ispod 10 USD !!!): 8 koraka (sa slikama)
Pametne naočare (ispod 10 USD !!!): Zdravo! Svima su nam poznate pametne naočale poput one koja se zove E.D.I.T.H. koju je napravio naš voljeni lik Tony Stark, a koja je kasnije proslijeđena Peteru Parkeru. Danas ću napraviti jedno takvo pametno staklo koje će koštati i ispod 10 USD! Nisu baš
Naočare za noćni vid za Google karton: 10 koraka (sa slikama)
Naočare za noćni vid za Google Cardboard: Odricanje od odgovornosti: Upotreba ovog uređaja je namijenjena samo za zabavu, obrazovanje i naučnu upotrebu; nije za špijuniranje i/ili nadzor. &Quot; spy gadget " značajke su dodane u aplikaciju samo radi zabave i neće imati nikakvu praktičnu svrhu za
Uradi sam - RGB naočare: 3 koraka (sa slikama)
Uradi sam | RGB naočale: Hej! Napravio sam RGB naočale koristeći LED svjetla WS2812B i Arduino Nano. Naočale imaju mnogo animacija kojima se može upravljati pomoću mobilne aplikacije. Aplikacija može komunicirati s arduinom putem Bluetooth modula
Kontrolisani prekidač za svjetlo koji treperi očima koristeći zaštitne naočare Shota Aizawe (My Hero Academia): 8 koraka (sa slikama)
Kontrolisani prekidač za svjetlo koji treperi očima koristeći naočare za brisanje Shota Aizawe (Moja herojska akademija): Ako čitate mangu moje akademije heroja ili gledate anime moje akademske zajednice, morate poznavati lik po imenu shota aizawa. Shota Aizawa, poznata i kao Eraser Head, je Pro Hero i učiteljica razredne nastave u američkom razredu 1-A. Shota's Quirk mu daje ab
Naočare s tekućim kristalima za ambliopiju (naočare za vježbanje naizmjenične okluzije) [ATtiny13]: 10 koraka (sa slikama)
Naočare s tekućim kristalima za ambliopiju (naočale za izmjenu okluzije) [ATtiny13]: ambliopija (lijeno oko), poremećaj vida koji pogađa približno 3% populacije, obično se liječi jednostavnim okularima ili kapima atropina. Nažalost, te metode liječenja zatvaraju jače oko na duge, neprekinute vremenske periode, bez