Мазмуну:

Эс алуучу көз айнек - ITTT: 5 кадам (сүрөттөр менен)
Эс алуучу көз айнек - ITTT: 5 кадам (сүрөттөр менен)

Video: Эс алуучу көз айнек - ITTT: 5 кадам (сүрөттөр менен)

Video: Эс алуучу көз айнек - ITTT: 5 кадам (сүрөттөр менен)
Video: КЫЗ СУУГА АГЫП КЕТКЕН КАДРЫ ВИДЕОГО ТҮШҮП КАЛГАН 2024, Ноябрь
Anonim
Эс алуучу көз айнек - ITTT
Эс алуучу көз айнек - ITTT
Эс алуучу көз айнек - ITTT
Эс алуучу көз айнек - ITTT
Эс алуучу көз айнек - ITTT
Эс алуучу көз айнек - ITTT

HKU Project - ITTT (If This That That) - Юлия Беркувер, 1В

Сиз качандыр бир убакта стресске кабылгансыз жана өзүңүздү кантип тынчтандырууну билбейсизби, анда бул эс алуучу көз айнектерди колдонушуңуз керек! Сиз аларды кийгизип, көзүңүздү жумсаңыз, дем алуу формасы ойнойт. Бул дем алуу моделине баш ийүү менен дем алуу ритеми мүнөтүнө 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 -кадам: Neopixel Rings

Neopixel Rings
Neopixel Rings

Ак зым неопикселдик шакектин артындагы жерге туташтырылган.

Апельсин зым 5Vга туташкан.

Ал эми күрөң зым маалымат киргизүүгө туташкан

3 -кадам: Байланыштар

Байланыштар
Байланыштар
Байланыштар
Байланыштар

Прототип түзүүдө менин нон тактам ушундай болгон, муну шилтеме катары колдонсоңуз болот.

Мен ошондой эле бир баскыч менен кандай болууга тийиш болгон зымдардын схемасын түздүм.

4 -кадам: Код:

Бул, балким, эң эффективдүү код эмес, бирок ал мен үчүн иштейт. Өзүңүздү сынап, аны эффективдүү кылууга аракет кылыңыз; П

#кошуу

// Кайсы

pin Arduino NeoPixels менен байланышканбы?

#аныктоо

PIN 6

// Кайсы

pin Arduino баскычка туташкан

#аныктоо

BUTTON_PIN 9

// Кантип

көптөгөн NeoPixels Arduino тиркелет?

#аныктоо

NUMPIXELS 16

// Качан

Биз NeoPixel китепканасын орнотобуз, ага канча пикселди жана сигналдарды жөнөтүү үчүн кайсы пинди колдонуу керектигин айтабыз.

// Эскертүү

эски NeoPixel тилкелери үчүн үчүнчү параметрди өзгөртүү керек болушу мүмкүн-strandtestти караңыз

//

мүмкүн болгон баалуулуктар жөнүндө көбүрөөк маалымат алуу үчүн мисал.

Adafruit_NeoPixel

пиксель = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

тыныгуу

= 1; // кечигүү2

int

pause2 = 80; // fsr колдонулганда төмөндөйт

int

пауза3 = 150; // fsr колдонулуп жатканда жасоо

int

delayval = 4; // кечигүү1

int

fsrPin = 0; // FSR жана 10K ачылышы a0 менен туташкан

int

fsrReading;

жараксыз

жайгашуу() {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

piksel.begin (); // Бул баштайт

NeoPixel китепканасы.

piksel.show ();

}

bool

басылган (int пин) {

return digitalRead (pin);

}

жараксыз

loop () {// пин киргизүү чын же жалган экенин окуйт

fsrReading = analogRead (fsrPin);

Serial.print ("Аналогдук окуу =");

Serial.print (fsrReading);

эгер (басылган (BUTTON_PIN) == чындык) {

// fsr сенсорун колдонууда жарык эффекти

эгер (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 ();

кечигүү (пауза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 ();

кечигүү (тыным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 ();

кечигүү (пауза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 ();

кечигүү (тыным2);

}

эгер (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 ();

кечигүү (пауза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 ();

кечиктирүү (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 ();

кечигүү (пауза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 ();

кечигүү (20);

}

}

башка {

breath_blue (20, 100, 0, 1, 1); // нормалдуу

эффект

}

}

// Тыныгуу

= өткөөлдөрдүн ортосундагы кечигүү

// Кадамдар

= кадамдардын саны

// R, G, B = Толук RGB баалуулуктары

// Бош дем алуу - бул дагы эффект

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

жараксыз дем алуу_көк (тыным, инт кадам, байт R, байт G, байт B) {

int

tmpR, tmpG, tmpB; // Темп мааниси

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (0, tmpR, tmpG+1, tmpB);

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

}

piksel.show ();

кечигүү (4);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (1, tmpR, tmpG+1, tmpB);piksel.setPixelColor (14, tmpR, tmpG+1, tmpB);

}

piksel.show ();

кечигүү (4);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (2, tmpR, tmpG+2, tmpB);pixel.setPixelColor (13, tmpR, tmpG+2, tmpB);

}

piksel.show ();

кечигүү (3.5);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (3, tmpR, tmpG+3, tmpB+5);piksel.setPixelColor (12, tmpR, tmpG+3, tmpB+5);

}

piksel.show ();

кечигүү (3);

}

үчүн (int i = 0;

менpiksel.setPixelColor (0, 0, 0, 0);piksel.setPixelColor (15, 0, 0, 0);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

мен

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

}

piksel.show ();

кечигүү (3);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (5, tmpR, tmpG+4, tmpB+20);piksel.setPixelColor (10, tmpR, tmpG+4, tmpB+20);

}

piksel.show ();

кечигүү (2);

}

үчүн (int i = 0;

менpiksel.setPixelColor (1, 0, 0, 0);

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

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

менpiksel.setPixelColor (6, tmpR, tmpG+2, tmpB+40);

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

}

piksel.show ();

кечиктирүү (кечиктирүү);

}

үчүн (int i = 0;

менpiksel.setPixelColor (2, 0, 0, 0);piksel.setPixelColor (13, 0, 0, 0);

}

// Өчүп барат

үчүн (int s = 1; s <= кадамдар; s ++) {

tmpR = (R * s) /

кадамдар; // Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0;

мен

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

}

piksel.show ();

кечиктирүү (кечиктирүү);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (1);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (1);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (2);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (2);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (3);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; //

Кесүү каталарын болтурбоо үчүн адегенде көбөйтүңүз

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (3);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (4);

}

// Өчүп барат

үчүн (int s = кадамдар; s> 0; s--) {

tmpR = (R * s) / кадамдар; // Кыскартууну болтурбоо үчүн биринчиден көбөйтүңүз

каталар

tmpG = (G * s) / кадамдар;

tmpB = (B * s) / кадамдар;

үчүн (int i = 0; i

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

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

}

piksel.show ();

кечигүү (4);

}

}

5 -кадам: Бардыгын бириктирүү:

Баарын бириктирүү
Баарын бириктирүү

Сиз бардык зымдарыңызды нан тактаңызга же ПВХга туташтырып койсоңуз болот, бул сизге байланыштуу (мен ардуинонун үстүнө ПВХ коюуну тандагам, ал ушунчалык жакшы жана тыкан).

Кийинки кадам - бардык зымдардын тегерегине жылуулукту азайтуучу түтүктөрдү коюу, андыктан башаламандык аз болот.

Эгер сиз ПВХ колдонууну чечсеңиз, анда азырынча баарын чогуу ширетиш керек болчу.

Андан кийин, сиз көз айнектин сыртына неопикселдүү шакектерди коюп (ледтердин түбүнө туура келгенин текшериңиз) жана аларды лента же клей менен бекемдеп коюңуз (мен скотч колдондум).

Сиз fsr-сенсорун серпилгичке бир нече скотч менен жабыштырууну же өзүңүз таштап коюуну тандасаңыз болот.

Көз айнегиңизден ырахат алыңыз:)

Сунушталууда: