Мазмұны:

Қол ырғағы: 6 қадам
Қол ырғағы: 6 қадам

Бейне: Қол ырғағы: 6 қадам

Бейне: Қол ырғағы: 6 қадам
Бейне: Қолға арналған 6 минуттық жаттығу. Қолды тез өсіру жаттығулары/қолды жуандату 2024, Шілде
Anonim
Қол ырғағы
Қол ырғағы

Бұл киберглов дұрыс сәтте дұрыс қадам жасау туралы.

Шамдар қолыңыздан (шынтақтан) қолыңызға өтеді, ал шамдар сіздің қолыңызға жеткенде саусақтарыңызды шағын фотоэлементке басу керек.

Егер сіз қолыңызды шағын фотоэлементті бассаңыз, жарық диодтары жасылға айналады. Олай болмаған жағдайда, светодиодтар қызыл түске боялады.

1 -қадам: материалдарды жинау

  • Қолғап
  • Қолғапты ұзартатын мата
  • WS2812B жарық диодты жолағы
  • Сымдар
  • Ардуино
  • Шағын фотосурет

2 -қадам: тізбектерді құру

Схемалар жасау
Схемалар жасау
Схемалар жасау
Схемалар жасау

Алдымен жарықдиодты жолақты arduino -ға қосыңыз. Сіз мұны +5v ардуинодағы 5в -ке қосу арқылы жасай аласыз. Din arduino -да A0 -ке, ал GND -ге arduino -да GND -ге қосылуы керек.

Сондай -ақ, шағын фотоэлементті arduino -ға 5В сымына светодиодтан және сол сыммен ардуинодағы PIN 6 -ға қосылу арқылы қосу керек. Шағын фотоэлементтің екінші жағы GND сымына жарықдиодты жолақтан қосылуы керек

3 -қадам: қолғапты жобалау

Қолғапты жобалау
Қолғапты жобалау

Қолғаптың жетекші жолақтарға сәйкес келетін өлшемі болуы керек. Қарауға жағымды болу үшін жарықдиодты туралау керек.

Бұл ойын үшін сіз қолыңызды пайдалануыңыз керек және сіз еркін қозғалғыңыз келеді. Мұны ардуиноны қолғапқа қою арқылы жүзеге асыруға болады. Мен ардуиноны қолғапқа жабыстыру үшін бекіткіш ретінде велкро қолдандым. Содан кейін тұрақтылықты жоғарылату үшін қолғап пен ардуино айналасына арқан салуға болады.

Шағын фотоэлемент қолғаптың ішіне тігілген, сондықтан ол орнында қалады.

Ақырында, сым жақсы көрінуі үшін оны жасыру керек. Бұл сымдардың үстіне тігілетін матамен жасалуы мүмкін.

4 -қадам: дәнекерлеу

Дәнекерлеу
Дәнекерлеу

Енді сіз дәнекерлеу арқылы тізбектен қосылатын сымдарды қауіпсіз ете аласыз.

5 -қадам: кодтау

Кодтау
Кодтау
Кодтау
Кодтау
Кодтау
Кодтау

// NeoPixel күнделікті тестілеудің негізгі бағдарламасы.

// НЕОПИКСЕЛДІҢ ЕҢ жақсы тәжірибесі: // - NeoPixel жолағының + және - қосылыстары арасында 1000 uF CAPACITIT қосыңыз. // - микроконтроллер тақтасы мен бірінші пиксель арасындағы сым ұзындығын азайту. //-NeoPixel жолағының DATA-IN 300-500 OHM резисторы арқылы өтуі керек. // - NeoPixels -ті LIVE CIRCUIT -те қосудан аулақ болыңыз. Егер қажет болса, ӘРҚАШАН // алдымен GROUND (-), содан кейін +, содан кейін деректерді қосыңыз. //-5В қуатты NeoPixel жолағы бар 3.3В микроконтроллерді қолданған кезде, // деректер желісіндегі ЛОГИКАЛЫҚ ДЕҢГЕЙЛІ КОНВЕРТЕР қатаң түрде ұсынылады. // (Оларды өткізіп жіберу жұмыс үстелінде жақсы жұмыс істеуі мүмкін, бірақ өрісте сәтсіздікке ұшырауы мүмкін)

#қосу #ifdef _AVR_ #қосу // 16 МГц Adafruit Trinket үшін қажет #endif

// Arduino -дағы қандай түйреуіш NeoPixels -ке қосылған? // Trinket немесе Gemma -де біз оны 1 -ге өзгертуді ұсынамыз: #define LED_PIN 6

// Arduino -ға қанша NeoPixels бекітілген? 60. LED_COUNT анықтаңыз

// Біздің NeoPixel жолақ объектісін жариялаңыз: Adafruit_NeoPixel жолағы (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = жолақ. Түс (127, 127, 127); // Ақ түс, әдепкі bool үшін clickedCorrectly = false; // 1 -аргумент = NeoPixel жолағындағы пиксель саны // 2 -аргумент = Arduino түйреуішінің нөмірі (көпшілігі жарамды) // 3 -аргумент = пиксель түріндегі жалаушалар, қажет болғанда бірге қосыңыз: // NEO_KHZ800 800 КГц бит ағыны (NeoPixel өнімдерінің көпшілігі/ WS2812 жарық диодтары) // NEO_KHZ400 400 КГц (классикалық '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 жолақ объектісі (REQUIRED) strip.show (); // Барлық пикселдерді ASAP strip.setBrightness (10) өшіріңіз; // BRIGHTNESS мәнін 1/5 шамасына орнатыңыз (max = 255)}

// loop () функциясы-тақта қосулы болғанша бірнеше рет жұмыс істейді ---------------

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

// Анимациялық эффектілерді құруға арналған кейбір функциялар -----------------

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

6 -қадам: Өзгерістер

Өзгерістер
Өзгерістер
Өзгерістер
Өзгерістер
Өзгерістер
Өзгерістер

Мен кейбір өзгерістер енгіздім. Біріншіден, мен «ритмдік қолды» пайдалану ыңғайлы болу үшін ардуиноны жасырдым, екіншіден кодты сәл өзгерттім. Мен кодты өзгерттім, егер сіз оны дәл бассаңыз, түс жасылға айналады және жарық диодтары жылдамырақ қозғалады. Осылайша, жарық диодты жарықтандыру бұрынғыға қарағанда 10% жылдамырақ болады. Бұл ойынды қызықты етеді

Бұл код қазір:

// NeoPixel күнделікті тестілеудің негізгі бағдарламасы. // Неопиксельдің ең сенімді тәжірибесі үшін ең жақсы тәжірибе: // - NeoPixel жолағының + және - қосылыстары арасында 1000 uF CAPACITIT қосыңыз. // - микроконтроллер тақтасы мен бірінші пиксель арасындағы сым ұзындығын азайту. //-NeoPixel жолағының DATA-IN 300-500 OHM резисторы арқылы өтуі керек. // - NeoPixels -ті LIVE CIRCUIT -те қосудан аулақ болыңыз. Егер қажет болса, ӘРҚАШАН // алдымен GROUND (-), содан кейін +, содан кейін деректерді қосыңыз. //-5 В қуатымен жұмыс істейтін NeoPixel жолағы бар 3.3В микроконтроллерді қолданған кезде, // деректер жолындағы ЛОГИКАЛЫҚ ДЕҢГЕЙЛІ КОНВЕРТЕР қатаң түрде ұсынылады. // (Оларды өткізіп жіберу сіздің жұмыс үстеліңізде жақсы жұмыс істеуі мүмкін, бірақ өрісте сәтсіздікке ұшырауы мүмкін) #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 = жолақ. Түс (127, 127, 127); // Ақ түс, әдепкі bool үшін clickedCorrectly = false; int индексі = 0; int интервал = 300; int нәтижесі = 0; белгісіз ұзақ алдыңғыMs = millis (); // 1 -аргумент = NeoPixel жолағындағы пиксель саны // 2 -аргумент = Arduino түйреуішінің нөмірі (көбі жарамды) // 3 -аргумент = пиксель түріндегі жалаушалар, қажет болған жағдайда қосыңыз: // NEO_KHZ800 800 КГц бит ағыны (NeoPixel өнімдерінің көпшілігі/ WS2812 жарық диодтары) // NEO_KHZ400 400 КГц (классикалық '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 арнайы кодының соңы. Serial.begin (9600); while (! сериялық) {; // сериялық порт қосылуын күтіңіз. Тек USB порты үшін қажет} pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel жолақ объектісі (REQUIRED) strip.show (); // Барлық пикселдерді ASAP strip.setBrightness (10) өшіріңіз; // BRIGHTNESS параметрін шамамен 1/5 мәніне орнатыңыз (max = 255)} // loop () функциясы-тақта қосулы болғанша бірнеше рет жұмыс істейді -------------- void loop () {unsigned long currentMs = millis (); // Ағымдағы уақытты алу int мәні = analogRead (A0); // Егер ағымдағы жарық сенсоры оқылса, егер (мәні> 900 && нәтиже == 0) {// Егер сенсор басылса және әлі нәтиже жазылмаса, нәтижені түсіруді іске қосыңыз, егер (индекс = интервал) {// Ағымның бар -жоғын тексеріңіз цикл алдыңғыMs = currentMs интервалынан асады; // Жаңа аралықты ағымдағы уақытқа орнатыңыз + интервал индексі + = 1; // Циклде жарық диодтарын бір қадам алға қойыңыз, егер (индекс> 17) {// Циклды өңдеудің соңы индексі = 0; if (нәтиже == 2) {// Дұрыс нәтиже интервалында = (int) max ((интервал * 0,95), 50); // Жылдамдық 10%-ға, 50 мс интервалға дейін/ color = strip. Color (0, 255, 0); // Жарықдиодты жасылға орнатыңыз} else if if (result == 1) {// Қате нәтиже интервалында = 300; // color = strip. Color (255, 0, 0) интервалын қалпына келтіру; // Жарықдиодты қызылға орнатыңыз} else {// Ешқандай нәтижеге түспеген түс = strip. Color (255, 0, 0); // Жарықдиодты қызылға орнатыңыз} result = 0; // Келесі цикл үшін нәтижені қалпына келтіру} teatrChaseOne (түс, индекс); // Көрсету үшін жарықдиодты жарықтандырыңыз. }} // Анимациялық эффектілерді құруға арналған біздің кейбір функциялар ----------------- // Театр-марке стиліндегі қуатын шамдар. Түсті (32 биттік мән, // a la strip. Color (r, g, b) жоғарыда айтылғандай) және кадрлар арасында кешігу уақытын (мс) // өткізіңіз. void театрChaseOne (uint32_t түсі, int индексі) {strip.clear (); strip.setPixelColor (17 - индекс, түс); // бірінші қатардағы шамдар strip.setPixelColor (18 + индекс, түс); // екінші қатардағы жарықдиодты шамдар strip.setPixelColor (53 - индекс, түс); // үшінші қатардағы жарықдиодты шамдар strip.show (); }

Ұсынылған: