Мазмуну:

Ритм Hand: 6 кадам
Ритм Hand: 6 кадам

Video: Ритм Hand: 6 кадам

Video: Ритм Hand: 6 кадам
Video: Техника перемещений вперед-назад. #tabletennis #footwork #sport 2024, Июль
Anonim
Ритм Колу
Ритм Колу

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

Жарыктар колуңуздан (чыканагыңыздан) колуңузга өтүп жатат жана жарыктар колуңузга келгенде манжаларыңызды мини фотоэлементке басууңуз керек.

Эгерде сиз колуңузду мини фотоэлементте керектүү учурда бассаңыз, леддер жашыл түскө ээ болот. Болбосо, леддер кызарып кетет.

1 -кадам: материалдарды чогултуу

  • Кол кап
  • Мээлейди узартуу үчүн кездеме
  • WS2812B LED тасмасы
  • Зымдар
  • Arduino
  • Мини фотосүрөт

2 -кадам: Микросхемаларды жасоо

Микросхемаларды түзүү
Микросхемаларды түзүү
Микросхемаларды түзүү
Микросхемаларды түзүү

Адегенде LED тилкесин arduino менен туташтырыңыз. Сиз муну +5v arduinoдогу 5v менен туташтырып жасай аласыз. Дин ардуинодо A0 менен туташышы керек жана GND ардуинодо GND менен туташышы керек.

Сиз ошондой эле мини фотоэлементти ардуиного 5в зымга алып баруучу тилкеден жана ошол эле булактан ардуинодогу PIN 6га зым менен туташтыруу аркылуу туташтырышыңыз керек. Кичи фотоэлементтин экинчи тарабы алып баруучу тилкеден GND зымына туташтырылышы керек

3 -кадам: Колкапты долбоорлоо

Мээлейди долбоорлоо
Мээлейди долбоорлоо

Мээлей жетектелген тилкелерге туура келүүчү өлчөмгө ээ болушу керек. Леддерди карап жагымдуу кылуу үчүн тегиздөө керек.

Бул оюн үчүн сиз колуңузду колдонушуңуз керек жана сиз эркин кыймылдай алгыңыз келет. Муну кол капка arduino коюу менен ишке ашырса болот. Ардуинону кол капка жабыштыруу үчүн мен велкрону бекиткич катары колдондум. Андан кийин туруктуулукту орнотуу үчүн колкапка жана ардуинонун айланасына жип салсаңыз болот.

Мини фотоэлемент мээлейдин ичине тигилген, ошондуктан ал ордунда калат.

Акыры жакшыраак көрүнүшү үчүн зымдарды жашырышыңыз керек. Муну зымдардын үстүнө тигиле турган кездеме менен жасаса болот.

4 -кадам: ширетүү

Soldering
Soldering

Эми сиз схемадан туташтыруучу зымдарды ширетүү менен коопсуз кыла аласыз.

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

Coding
Coding
Coding
Coding
Coding
Coding

// Негизги күнүмдүк NeoPixel тилкесин сыноо программасы.

// Эң ишенимдүү иштөө үчүн NEOPIXEL ЭҢ МЫКТЫ ПРАКТИКАСЫ: // - NeoPixel тилкесинин + жана - туташууларынын ортосуна 1000 uF CAPACITOR кошуңуз. // - Микроконтроллер тактасы менен биринчи пикселдин ортосундагы зымдын узундугун азайтуу. //-NeoPixel тилкесинин DATA-IN 300-500 OHM RESISTOR аркылуу өтүшү керек. // - NeoPixelsти LIVE CIRCUITке туташтыруудан сактан. Эгер керек болсо, АРДАКТАН // биринчи GROUND (-), анан +, анан маалыматтарды туташтырыңыз. //-5V кубаттуулуктагы NeoPixel тилкеси бар 3.3V микроконтроллерди колдонууда, // маалымат линиясындагы ЛОГИКАЛЫК ДЕҢГЭЭЛДИ КОНКУРСУЗ сунушталат. // (Буларды өткөрүп жиберүү столунда жакшы иштеши мүмкүн, бирок талаада ийгиликсиз болуп калышы мүмкүн)

#include #ifdef _AVR_ #include // 16 МГц Адафрут Трinkети үчүн керектүү #endif

// Arduinoдогу кайсы пин NeoPixelsке туташкан? // Trinket же Gemma боюнча биз муну 1ге алмаштырууну сунуштайбыз: #define LED_PIN 6

// Ардуиного канча NeoPixels тиркелет? 60

// Биздин NeoPixel тилкесинин объектисин жарыялайбыз: Adafruit_NeoPixel тилкеси (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Ак түс, демейки bool үчүн clickedCorrectly = false; // Аргумент 1 = NeoPixel тилкесиндеги пикселдердин саны // Аргумент 2 = Arduino пин номери (көбү жарактуу) // Аргумент 3 = Пикселдин түрүндөгү желектер, керектүү учурда кошуңуз: // NEO_KHZ800 800 KHz бит агымы (NeoPixel продуктуларынын көбү/ WS2812 LED) // NEO_KHZ400 400 KHz (классикалык 'v1' (v2 эмес) FLORA пикселдери, WS2811 драйверлери) // NEO_GRB Пикселдери GRB бит агымы үчүн зымдуу (NeoPixelдин көпчүлүк продуктулары) // NEO_RGB Пикселдери RGB бит агымы үчүн (v1 FLORA пикселдери), v2 эмес) // NEO_RGBW Пикселдери RGBW бит агымы үчүн зымдуу (NeoPixel RGBW продуктулары)

// setup () функциясы-башталганда бир жолу иштейт --------------------------------

void setup () {// Бул линиялар атайын Adafruit Trinket 5V 16 MHz колдоого арналган. // Башка каалаган такта, сиз бул бөлүктү алып салсаңыз болот (бирок андан эч кандай зыяны жок): #if аныкталган болсо (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinketке тиешелүү коддун аягы.

pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel тилкесинин объектиси (КЕРЕКТҮҮ) strip.show (); // Бардык пикселдерди ASAP strip.setBrightness (10) өчүрүү; // Жарыктыкты болжол менен 1/5ке коюңуз (максимум = 255)}

// loop () функциясы-такта турганда кайра-кайра иштейт ---------------

void loop () {clickedClaimly = TheaterChaseOne (түс); if (clickedClaimly) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}

// Анимацияланган эффекттерди түзүү үчүн өзүбүздүн кээ бир функцияларыбыз -----------------

// Театр-марке стилиндеги чырактарды кубалоо. Түстөн өтүңүз (32-бит мааниси, // a la strip. Color (r, g, b) жогоруда айтылгандай), жана кечигүү убактысы (мс менен) // кадрлардын ортосунда. bool teatrChaseOne (uint32_t түс) {bool туура = жалган; bool clickedWrong = false; for (int index = 0; index 800) {// маани жарык сенсору, эгерде (index <16) {// 2 лед аягына чейин чыкса, анда color = strip. Color (255, 0, 0) чыкылдатыңыз; // кызыл түс leds clickedWrong = true; // туура эмес чыкылдатыңыз, анда ледтер кызылга айланат} else if if (! clickedWrong) {// not not false color = strip. Color (0, 255, 0); // жашыл түс ледтер туура = чындык; // туура чыкылдатыңыз, анда леддер жашыл түскө}} strip.clear (); strip.setPixelColor (17 - индекс, түс); // биринчи катардагы жарыктар strip.setPixelColor (18 + индекси, түсү); // экинчи катардагы жарыктар strip.setPixelColor (53 - индекс, түс); // үчүнчү катардагы жарыктар strip.show (); кечигүү (300); } туура кайтаруу; }

6 -кадам: Өзгөртүүлөр

Өзгөртүүлөр
Өзгөртүүлөр
Өзгөртүүлөр
Өзгөртүүлөр
Өзгөртүүлөр
Өзгөртүүлөр

Мен кээ бир өзгөртүүлөрдү киргиздим. Биринчиден, мен ардуинону катып койгом, андыктан "Ритм колун" колдонуу ыңгайлуураак болмок, экинчиден кодду бир аз алмаштырдым. Мен кодду өзгөрттүм, ошондо сиз басканыңызда түс жашыл болуп, LED тезирээк жылат. Муну менен LED Swill мурункуга караганда 10% ылдамыраак болуп калат. Бул оюнду кызыктуу кылат

Бул код азыр кандай:

// Негизги күнүмдүк NeoPixel тилкесин сыноо программасы. // Эң ишенимдүү иштөө үчүн NEOPIXEL ЭҢ МЫКТЫ ПРАКТИКАСЫ: // - NeoPixel тилкесинин + жана - туташууларынын ортосуна 1000 uF CAPACITOR кошуңуз. // - Микроконтроллер тактасы менен биринчи пикселдин ортосундагы зымдын узундугун азайтуу. //-NeoPixel тилкесинин DATA-IN 300-500 OHM RESISTOR аркылуу өтүшү керек. // - NeoPixelsти LIVE CIRCUITке туташтыруудан сактан. Эгер керек болсо, АРДАК // // биринчиден GROUND (-), анан +, анан маалыматтарды туташтырыңыз. //-5V кубаттуулуктагы NeoPixel тилкеси бар 3.3V микроконтроллерди колдонууда, // маалымат линиясындагы ЛОГИКАЛЫК ДЕҢГЭЭЛДИ КОНКУРСУЗ сунушталат. // (Буларды өткөрүп жиберүү сиздин жумуш үстөлүңүздө жакшы иштеши мүмкүн, бирок талаада иштебей калышы мүмкүн) #include #ifdef _AVR_ #include // 16 MHz Adafruit Trinket үчүн керектүү #endif // Arduinoдогу кайсы пин NeoPixelsке туташкан? // Trinket же Gemmaда биз муну 1ге алмаштырууну сунуштайбыз: #define LED_PIN 6 // Arduinoго канча NeoPixels тиркелет? #define LED_COUNT 60 // Биздин NeoPixel тилке объектибизди жарыялайбыз: Adafruit_NeoPixel тилкеси (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Ак түс, демейки bool үчүн clickedCorrectly = false; int index = 0; int интервал = 300; int result = 0; белгисиз узак мурункуMs = millis (); // Аргумент 1 = NeoPixel тилкесиндеги пикселдердин саны // Аргумент 2 = Arduino пин номери (көбү жарактуу) // Аргумент 3 = Пикселдин түрүндөгү желектер, керек болгондо кошуңуз: // NEO_KHZ800 800 KHz бит агымы (NeoPixel продуктуларынын көбү/ WS2812 LED) // NEO_KHZ400 400 KHz (классикалык 'v1' (v2 эмес) FLORA пикселдери, WS2811 драйверлери) // NEO_GRB Пикселдери GRB бит агымы үчүн зымдуу (NeoPixelдин көпчүлүк продуктулары) // NEO_RGB Пикселдери RGB бит агымы үчүн (v1 FLORA пикселдери), v2 эмес) // NEO_RGBW Пикселдери RGBW bitstream (NeoPixel RGBW продуктулары) үчүн орнотулган // setup () функциясы-башталганда бир жолу иштейт -------------------- ------------ void setup () {// Бул линиялар атайын Adafruit Trinket 5V 16 MHz колдоого арналган. // Башка каалаган такта, сиз бул бөлүктү алып салсаңыз болот (бирок андан эч кандай зыяны жок): #if аныкталган болсо (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Trinketке тиешелүү коддун аягы. Serial.begin (9600); while (! Serial) {; // сериялык порттун туташуусун күтө туруңуз. USB порту үчүн гана керек} pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel тилкесинин объектиси (КЕРЕКТҮҮ) strip.show (); // Бардык пикселдерди ASAP strip.setBrightness (10) өчүрүү; // BRIGHTNESSти болжол менен 1/5ке коюңуз (max = 255)} // loop () функциясы-такта күйүп турганда кайра-кайра иштейт --------------- void loop () {unsigned long currentMs = millis (); // Учурдагы убакытты алуу int value = analogRead (A0); // Эгерде учурдагы жарык сенсорун окуу цикл мурдагыMs = currentMs интервалынан ашат; // Жаңы интервалды учурдагы убакытка коюу + интервал индекси + = 1; // LEDлерди циклде бир кадам алдыга коюңуз, эгерде (индекс> 17) {// Циклди иштетүүнүн аягы индекси = 0; if (result == 2) {// Туура жыйынтык интервалында = (int) max ((interval * 0,95), 50); // 10%ылдамдатуу, 50ms интервалга чейин/ color = strip. Color (0, 255, 0); // Леддерди жашылга коюңуз} else if if (result == 1) {// Туура эмес жыйынтык интервалында = 300; // Interval color = strip. Color (255, 0, 0) абалга келтирүү; // Ледтерди кызылга коюңуз} башка {// Эч кандай жыйынтык чыкпай калган түс = strip. Color (255, 0, 0); // Ледтерди кызылга коюңуз} result = 0; // Натыйжаны кийинки цикл үчүн баштапкы абалга келтирүү} TheaterChaseOne (түс, индекс); // Дисплейди жарыктандырыңыз. }} // Анимацияланган эффекттерди түзүү үчүн өзүбүздүн кээ бир функцияларыбыз ----------------- // Театр-марке стилиндеги чырактарды кубалоо. Түстөн өтүңүз (32-бит мааниси, // a la strip. Color (r, g, b) жогоруда айтылгандай), жана кечигүү убактысы (мс менен) // кадрлардын ортосунда. жараксыз театрChaseOne (uint32_t түс, int индекси) {strip.clear (); strip.setPixelColor (17 - индекс, түс); // биринчи катардагы жарыктар strip.setPixelColor (18 + индекси, түсү); // экинчи катардагы жарыктар strip.setPixelColor (53 - индекс, түс); // үчүнчү катардагы жарыктар strip.show (); }

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