INHOUDSOPGAWE:
- Stap 1: Materiaal en onderdele benodig:
- Stap 2: Neopixel -ringe
- Stap 3: Verbindings
- Stap 4: Die kode:
- Stap 5: Alles saamvoeg:
Video: Ontspanningsbril - ITTT: 5 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
HKU Project - ITTT (If This Then That That) - Julia Berkouwer, 1B
Het u al ooit gespanne gevoel en weet u nie hoe u uself kan kalmeer nie, probeer dan hierdie ontspanningsbril! Jy trek dit aan en maak jou oë toe, dan speel 'n asemhalingspatroon. Deur hierdie asemhalingspatroon te volg, sal u asemhalingsritme 6 keer per minuut in- en uitasem. Deur dit te doen, word die daaglikse spanning verlig.
U kan ook u asemhalingsintensiteit volg deur 'n fsr-sensor aan te skakel.
Met hierdie toturial lei ek u stap vir stap deur u eie ontspanningsbril te bou.
Stap 1: Materiaal en onderdele benodig:
Materiaal:
1x arduino uno;
1x broodbord of PCV;
3x 10k weerstande
Drade (verkieslik verskillende kleure, sodat dit makliker is om te sien watter dinge op die grond gaan en watter na verskillende penne gaan, ens.);
Sommige krimpende buise;
2x NeoPixel -ring - 16 x 5050 RGB LED met geïntegreerde bestuurders;
1x skakelaar;
1x FSR -sensor;
1x SteamPunk -bril (u kan dit by 'n partytjiewinkel koop, dit is maklik om te gebruik, want die neopixelring pas perfek op die bril. U probeer altyd 'n ander bril gebruik of u eie bril skep.);
1x 'n (elastiese) band om jou bors.
Gereedskap: -Laptops
-Soldeerbout
-Arduino IDE sagteware
U sal twee knoppies en 'n skakelaar op my pvc sien; ek gebruik slegs die linkerknoppie om dit aan die skakelaar te koppel; ek gebruik nie die tweede knoppie aan die regterkant van die prentjie nie. Ek het die knoppies op die pvc gesit voordat ek besef dat ek dit nie nodig het nie, en ek moes eerder 'n skakelaar gebruik.
Hieronder sien u foto's van alles wat ek gebruik het:
Stap 2: Neopixel -ringe
Die wit draad is aan die agterkant van die neopixelring met die grond verbind.
Die oranje draad is gekoppel aan die 5V.
En die bruin draad is gekoppel aan die data -invoer
Stap 3: Verbindings
Dit is hoe my broodbord gelyk het tydens prototipering; u kan dit as verwysing gebruik.
Ek het ook 'n uiteensetting gemaak van die bedrading van hoe dit moet lyk met net een knoppie.
Stap 4: Die kode:
Dit is waarskynlik nie die doeltreffendste kode nie, maar dit werk vir my. Daag jouself uit en probeer dit doeltreffender maak; P
#insluit
// Watter
pin op die Arduino gekoppel is aan die NeoPixels?
#definieer
PIN 6
// Watter
pen op die Arduino is aan die knoppie gekoppel
#definieer
BUTTON_PIN 9
// Hoe
is daar baie NeoPixels aan die Arduino gekoppel?
#definieer
NUMPIXELS 16
// Wanneer
ons stel die NeoPixel -biblioteek op, ons vertel hoeveel pixels dit is, en watter pen om te gebruik om seine te stuur.
// Let wel
dat u moontlik die derde parameter vir ouer NeoPixel-stroke moet verander-sien die strengtoets
//
voorbeeld vir meer inligting oor moontlike waardes.
Adafruit_NeoPixel
pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pouse
= 1; // vertraging2
int
pouse2 = 80; // gaan af wanneer fsr gebruik word
int
pouse3 = 150; // doen op wanneer fsr gebruik word
int
vertragingsval = 4; // vertraging1
int
fsrPin = 0; // die FSR- en 10K -aftreklys is aan a0 gekoppel
int
fsrReading;
nietig
stel op() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // Dit initialiseer die
NeoPixel -biblioteek.
pixels.show ();
}
bool
knoppie gedruk (int pin) {
stuur digitalRead (pin) terug;
}
nietig
loop () {// lees of peninvoer waar of onwaar is
fsrReading = analogRead (fsrPin);
Serial.print ("Analoog lees =");
Serial.print (fsrReading);
as (knoppie gedruk (BUTTON_PIN) == waar) {
// lig effek by die gebruik van fsr sensor
as (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 ();
vertraging (pouse3);
}
as (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 ();
vertraging (pouse2);
}
as (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 ();
vertraging (pouse3);
}
as (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 ();
vertraging (pouse2);
}
as (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 ();
vertraging (pouse3);
}
as (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 ();
vertraging (40);
}
as (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 ();
vertraging (pouse3);
}
as (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 ();
vertraging (20);
}
}
anders {
asemblou (20, 100, 0, 1, 1); // normaal
effek
}
}
// Pouse
= vertraging tussen oorgange
// Stappe
= aantal stappe
// R, G, B = Volledige RGB-waardes
// Die leegte asemhaal is vir die ligte effek as die
fsrsensor word nie gebruik nie. Hierdie leemte word in die leegte -lus () weer aangeroepen.
leegte asemblou (int pouse, int stappe, byte R, byte G, greep B) {
int
tmpR, tmpG, tmpB; // Temp waardes
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixels.show ();
vertraging (4);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixels.show ();
vertraging (4);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixels.show ();
vertraging (3.5);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixels.show ();
vertraging (3);
}
vir (int i = 0;
ekpixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ek
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixels.show ();
vertraging (3);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixels.show ();
vertraging (2);
}
vir (int i = 0;
ekpixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ekpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixels.show ();
vertraging (delayval);
}
vir (int i = 0;
ekpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// Vervaag
vir (int s = 1; s <= steps; s ++) {
tmpR = (R * s) /
stappe; // Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0;
ek
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixels.show ();
vertraging (delayval);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (1);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (1);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (2);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (2);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (3);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; //
Vermenigvuldig eers om afkappingsfoute te voorkom
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (3);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (4);
}
// Verdof
vir (int s = stappe; s> 0; s--) {
tmpR = (R * s) / stappe; // Vermenigvuldig eers om afkapping te voorkom
foute
tmpG = (G * s) / stappe;
tmpB = (B * s) / stappe;
vir (int i = 0; i
pixels.setPixelColor (0, tmpR, tmpG, tmpB);
pixels.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixels.show ();
vertraging (4);
}
}
Stap 5: Alles saamvoeg:
U kan net al u drade aan u broodbord of 'n PVC koppel, dit is u besluit (ek het gekies om 'n PVC bo -op die arduino te plaas, dit is netjies).
Die volgende stap is om krimpende buise om al die drade te plaas, sodat dit minder gemors is.
As u verkies om 'n PVC te gebruik, moes u nou al alles saamgesoldeer het.
Daarna sit u die neopixelringe aan die buitekant van die bril (maak seker dat die LED's in lyn is met die onderkant) en maak dit vas met 'n bietjie band of gom (ek het band gebruik).
U kan kies om die fsr-sensor met 'n band aan die rek vas te plak, of dit net op u eie laat.
Geniet jou bril:)
Aanbeveel:
Neem wonderlike foto's met 'n iPhone: 9 stappe (met foto's)
Neem wonderlike foto's met 'n iPhone: die meeste van ons dra deesdae 'n slimfoon oral, daarom is dit belangrik om te weet hoe u u slimfoonkamera kan gebruik om fantastiese foto's te neem! Ek het net 'n paar jaar 'n slimfoon gehad, en ek hou daarvan om 'n ordentlike kamera te hê om dinge te dokumenteer wat ek
Raspberry Pi -boks met koelventilator met CPU -temperatuuraanwyser: 10 stappe (met foto's)
Raspberry Pi Box of Cooling FAN Met CPU Temperature Indicator: Ek het framboos pi (Hierna as RPI) CPU temperatuur aanwyser stroombaan in die vorige projek bekendgestel. Die kring wys eenvoudig RPI 4 verskillende CPU temperatuur vlakke soos volg.- Groen LED aangeskakel wanneer CPU temperatuur is binne 30 ~
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: 7 stappe (met foto's)
Howto: Raspberry PI 4 Headless (VNC) installeer met Rpi-imager en foto's: ek is van plan om hierdie Rapsberry PI te gebruik in 'n klomp prettige projekte in my blog. Kyk gerus daarna. Ek wou weer my Raspberry PI gebruik, maar ek het nie 'n sleutelbord of muis op my nuwe plek gehad nie. Dit was 'n rukkie sedert ek 'n Framboos opgestel het
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer