ዝርዝር ሁኔታ:

ሪትም እጅ: 6 ደረጃዎች
ሪትም እጅ: 6 ደረጃዎች

ቪዲዮ: ሪትም እጅ: 6 ደረጃዎች

ቪዲዮ: ሪትም እጅ: 6 ደረጃዎች
ቪዲዮ: ከወሲብ በፊት ይህን ከጠጣህ አለቀላት ! | ማለቂያ ለሌለው የወሲብ ብቃት | 2024, ህዳር
Anonim
ሪትም እጅ
ሪትም እጅ

ይህ ሳይበርግሎቭ በትክክለኛው ቅጽበት ትክክለኛውን እርምጃ ስለማድረግ ነው።

መብራቶቹ ከእጅዎ (ከክርን) ወደ እጅዎ ይሄዳሉ እና መብራቶች በእጅዎ ሲደርሱ በትንሽ ፎቶኮል ላይ ጣቶችዎን መጫን አለብዎት።

በትክክለኛው ቅጽበት እጅዎ በትንሽ ፎቶኮሉ ላይ ቢጫኑ ሌዲዎቹ አረንጓዴ ይሆናሉ። ካልሆነ ሌዶቹ ቀይ ይሆናሉ።

ደረጃ 1: ቁሳቁሶችን ይሰብስቡ

  • ጓንት
  • ጓንት እንዲረዝም ጨርቅ
  • WS2812B LED ስትሪፕ
  • ሽቦዎች
  • አርዱinoኖ
  • አነስተኛ ፎቶዎች

ደረጃ 2 - ወረዳዎችን መሥራት

ወረዳዎችን መሥራት
ወረዳዎችን መሥራት
ወረዳዎችን መሥራት
ወረዳዎችን መሥራት

በመጀመሪያ መሪውን ንጣፍ ከአርዲኖ ጋር ያገናኙ። በአርዱዲኖ ላይ +5v ን ወደ 5v በማገናኘት ያንን ማድረግ ይችላሉ። ዲን በአርዱዲኖ ላይ ከ A0 ጋር መገናኘት እና GND በአርዲኖ ላይ ከ GND ጋር መገናኘት አለበት።

እንዲሁም ከ 5v ሽቦ ጋር ከተመራው እርሳስ እና ከአርዲኖው ላይ ካለው ሽቦ ወደ ፒን 6 በማገናኘት አነስተኛውን ፎቶኮሉን ከአርዲኖ ጋር ማገናኘት አለብዎት። ከትንሽ ፎቶኮሌል ሌላኛው ጎን ከ GND ሽቦ ጋር ከመሪ ስትሪፕ ጋር መገናኘት አለበት

ደረጃ 3 ጓንት መንደፍ

ጓንት መንደፍ
ጓንት መንደፍ

ጓንትው መሪ መሪዎቹን ለመገጣጠም ትክክለኛ መጠን ሊኖረው ይገባል። ለመመልከት የበለጠ አስደሳች ለማድረግ ሌዲዎቹ መጣጣም አለባቸው።

ለዚህ ጨዋታ ክንድዎን መጠቀም አለብዎት እና በነፃነት መንቀሳቀስ መቻል ይፈልጋሉ። አርዱዲኖን በጓንት ላይ በማድረግ ይህ እውን ሊሆን ይችላል። አርዱዲኖን ወደ ጓንት ለመለጠፍ ቬልክሮ እንደ ማያያዣ እጠቀም ነበር። ከዚያ የበለጠ መረጋጋትን ለመመስረት ጓንት እና በአርዲኖ ዙሪያ ዙሪያ ገመድ ማስቀመጥ ይችላሉ።

ትንሹ የፎቶኮል በጓንት ውስጥ ተሰፍቷል ስለዚህ በቦታው ይቆያል።

በመጨረሻም የተሻለ ሆኖ እንዲታይ ሽቦዎቹን መደበቅ አለብዎት። ያ በሽቦዎቹ አናት ላይ በሚሰፋ ጨርቅ ሊሠራ ይችላል።

ደረጃ 4: መሸጥ

ብየዳ
ብየዳ

አሁን በማገናኘት ሽቦዎችን ከወረዳው ደህንነቱ በተጠበቀ ሁኔታ ማድረግ ይችላሉ።

ደረጃ 5 - ኮድ መስጠት

ኮድ መስጠት
ኮድ መስጠት
ኮድ መስጠት
ኮድ መስጠት
ኮድ መስጠት
ኮድ መስጠት

// መሠረታዊ የዕለት ተዕለት የ NeoPixel ስትሪፕ የሙከራ ፕሮግራም።

// ለኔፒፒክስል ምርጥ ልምዶች ለአብዛኛው አስተማማኝ ክወና - // - በ NeoPixel strip + እና - ግንኙነቶች መካከል 1000 uF CAPACITOR ን ያክሉ። // - በማይክሮ መቆጣጠሪያ ቦርድ እና በመጀመሪያው ፒክሴል መካከል የሽቦ ርዝመት። //-የ NeoPixel strip DATA-IN በ 300-500 OHM RESISTOR በኩል ማለፍ አለበት። // - NeoPixels ን በቀጥታ CIRCUIT ላይ ከማገናኘት ይርቁ። ካስፈለገዎት ሁል ጊዜ // መጀመሪያ GROUND (-) ን ያገናኙ ፣ ከዚያ +፣ ከዚያ ውሂብን ያገናኙ። //-3.3 ቪ ማይክሮ መቆጣጠሪያን በ 5 ቮ ኃይል ካለው የ NeoPixel strip ጋር ሲጠቀሙ ፣ // በመረጃ መስመሩ ላይ LOGIC-LEVEL CONVERTER በጥብቅ የሚመከር ነው። // (እነዚህን መዝለል በስራ ቦታዎ ላይ በጥሩ ሁኔታ ሊሠራ ይችላል ፣ ግን በመስክ ላይ ሊወድቅ ይችላል)

#ያካተተ #ifdef _AVR_ #አካታች // ለ 16 ሜኸ አዳፍ ፍሬ ትሪኔት #ኤንድፍ ያስፈልጋል

// በ Arduino ላይ የትኛው ፒን ከ NeoPixels ጋር ተገናኝቷል? // በትሪኔት ወይም ገማ ላይ ይህንን ወደ 1: #ዲፊን LED_PIN 6 እንዲቀይሩ እንመክራለን

// ከአርዱinoኖ ጋር ስንት ኒኦፒክስሎች ተያይዘዋል? #ጥራት LED_COUNT 60

// የእኛን የኒዮፒክስል ስትሪፕ ነገር ይግለጹ - Adafruit_NeoPixel strip (LED_COUNT ፣ LED_PIN ፣ NEO_GRB + NEO_KHZ800) ፤ uint32_t color = strip. Color (127, 127, 127); // ነጭ ቀለም ፣ ለነባሪ ቦል ጠቅ አደረገ በትክክል = ሐሰት; // ክርክር 1 = በ NeoPixel strip ውስጥ የፒክሴሎች ብዛት // ክርክር 2 = አርዱinoኖ ፒን ቁጥር (አብዛኛዎቹ ልክ ናቸው) // ክርክር 3 = የፒክሰል ዓይነት ባንዲራዎች ፣ እንደአስፈላጊነቱ አንድ ላይ ያክሉ - // NEO_KHZ800 800 KHz bitstream (አብዛኛዎቹ የ NeoPixel ምርቶች w/ WS2812 LEDs) // NEO_KHZ400 400 KHz (ክላሲክ 'v1' (v2 አይደለም) የፍሎራ ፒክስሎች ፣ የ WS2811 ሾፌሮች) // NEO_GRB ፒክሴሎች ለ GRB bitstream (ለአብዛኛዎቹ የኒዮፒክስል ምርቶች) // NEO_RGB ፒክስሎች ለ RGB bitstream (v1 FLORA ፒክሰሎች) ተይዘዋል። ፣ v2 አይደለም) // NEO_RGBW ፒክሴሎች ለ RGBW bitstream (NeoPixel RGBW ምርቶች) ተይዘዋል

// ማዋቀር () ተግባር-ሲነሳ አንድ ጊዜ ይሠራል --------------------------------

ባዶነት ማዋቀር () {// እነዚህ መስመሮች በተለይ Adafruit Trinket 5V 16 MHz ን ለመደገፍ ነው። // ማንኛውም ሌላ ሰሌዳ ፣ ይህንን ክፍል ማስወገድ ይችላሉ (ግን እሱን የሚተው ምንም ጉዳት የለም) - #ከተገለጸ (_ AVR_ATtiny85_) && (F_CPU == 16000000) ሰዓት_prescale_set (ሰዓት_ዲቪ_1); #endif // ትሪኬት-ተኮር ኮድ መጨረሻ።

pinMode (A0 ፣ ግቤት); strip.begin (); // መጀመሪያ ኒኦፒክስል ስትሪፕ ነገር (ተፈላጊ) strip.show (); // ሁሉንም ፒክሰሎች ያጥፉ ASAP strip.set ብሩህነት (10); // ብሩህነትን ወደ 1/5 (ከፍተኛ = 255)} ያዘጋጁ

// loop () ተግባር-ቦርዱ እስከተሠራ ድረስ በተደጋጋሚ ይሠራል ---------------

ባዶነት loop () {clickedCorrectly = ቲያትርChaseOne (ቀለም); ከሆነ (በትክክል ጠቅ የተደረገ) {color = strip. Color (0, 255, 0); } ሌላ {color = strip. Color (255, 0, 0); }}

// የታነሙ ተፅእኖዎችን ለመፍጠር አንዳንድ የራሳችን ተግባራት -----------------

// የቲያትር-ማርክ-ቅጥ ማሳደጃ መብራቶች። በቀለም (32-ቢት እሴት ፣ // አንድ ላ ስትሪፕ። ከላይ እንደተጠቀሰው ቀለም (r ፣ g ፣ ለ)) እና በማዕቀፎች መካከል መዘግየት ጊዜ (በ ms) // ውስጥ ይለፉ። bool theatreChaseOne (uint32_t color) {bool correct = false; bool ጠቅ አደረገ ስህተት = ሐሰት; ለ (int ኢንዴክስ = 0 ፤ መረጃ ጠቋሚ 800) {// እሴት የብርሃን ዳሳሽ (መረጃ ጠቋሚ <16) {// 2 ከመጨረሱ በፊት ቀለም = ስትሪፕ የሚለውን ጠቅ ማድረግ ይችላሉ ቀለም (255 ፣ 0 ፣ 0) ፤ // ቀይ ቀለም ሊድስ ጠቅ ተደርጓል ስህተት = እውነት; // ስህተት ጠቅ ከተደረገ ፣ ከዚያም ሌዲዎች ወደ ቀይ ይለወጣሉ (ሌላ ከሆነ (! clickedWrong) {// ካልሆነ የተሳሳተ ቀለም = strip. Color (0 ፣ 255 ፣ 0) ፤ // አረንጓዴ ቀለም ሊድስ ትክክለኛ = እውነት; // በትክክል ጠቅ ከተደረገ በኋላ ሊዲዎች አረንጓዴ ይሆናሉ}} strip.clear (); strip.setPixelColor (17 - መረጃ ጠቋሚ ፣ ቀለም); // የመጀመሪያው ረድፍ መሪ መብራቶች strip.setPixelColor (18 + መረጃ ጠቋሚ ፣ ቀለም); // ሁለተኛ ረድፍ መሪ መብራቶች ስትሪፕ። ፒክስል ቀለም (53 - ማውጫ ፣ ቀለም); // ሦስተኛው ረድፍ መሪ መብራቶች strip.show (); መዘግየት (300); } በትክክል መመለስ ፤ }

ደረጃ 6: ለውጦች

ለውጦች
ለውጦች
ለውጦች
ለውጦች
ለውጦች
ለውጦች

አንዳንድ ለውጦችን አድርጌያለሁ። በመጀመሪያ አርዱዲኖን ደብቄ ነበር ስለዚህ “የሪህ እጅ” ን ለመጠቀም የበለጠ ምቾት እንዲኖረው እና ሁለተኛ ኮዱን ትንሽ ቀይሬዋለሁ። በትክክለኛው ጊዜ ሲጫኑ ቀለሙ አረንጓዴ ይሆናል እና ኤልኢዲኤስ በፍጥነት እንዲንቀሳቀስ ኮዱን ቀይሬአለሁ። ይህን በማድረግ የ LED Swill ከዚያ በፊት 10% ፈጣን ይሆናል። ይህ ጨዋታውን የበለጠ አስደሳች ያደርገዋል

ኮዱ አሁን እንደዚህ ነው -

// መሠረታዊ የዕለት ተዕለት የ NeoPixel ስትሪፕ የሙከራ ፕሮግራም። // ለኔፒፒክስል ምርጥ ልምዶች ለአብዛኛው አስተማማኝ ክወና - // - በ NeoPixel strip + እና - ግንኙነቶች መካከል 1000 uF CAPACITOR ን ያክሉ። // - በማይክሮ መቆጣጠሪያ ቦርድ እና በመጀመሪያው ፒክሴል መካከል የሽቦ ርዝመት። //-የ NeoPixel strip DATA-IN በ 300-500 OHM RESISTOR በኩል ማለፍ አለበት። // - NeoPixels ን በቀጥታ CIRCUIT ላይ ከማገናኘት ይርቁ። ካስፈለገዎት ሁል ጊዜ // መጀመሪያ GROUND (-) ን ያገናኙ ፣ ከዚያ +፣ ከዚያ ውሂብን ያገናኙ። //-3.3 ቪ ማይክሮ መቆጣጠሪያን በ 5 ቮ ኃይል ካለው የ NeoPixel strip ጋር ሲጠቀሙ ፣ // በመረጃ መስመሩ ላይ LOGIC-LEVEL CONVERTER በጥብቅ የሚመከር ነው። // (እነዚህን መዝለል በስራ ወንበርዎ ላይ እሺ ሊሠራ ይችላል ነገር ግን በመስክ ላይ ሊወድቅ ይችላል) #ያካትቱ #ifdef _AVR_ #ያካትቱ // ለ 16 ሜኸ አዳፍ ፍሬ ትሪኔት #ኤንዲፍ // በአርዱዲኖ ላይ የትኛው ፒን ከኒዮፒክስሎች ጋር ተገናኝቷል? // በትሪኔት ወይም በጌማ ላይ ይህንን ወደ 1 ለመቀየር እንመክራለን #ዲፊን LED_PIN 6 // ምን ያህል ኒኦፒክስሎች ከአርዱዲኖ ጋር ተያይዘዋል? #define LED_COUNT 60 // የእኛን የኒዮፒክስል ስትሪፕ ዕቃ ይግለጹ - Adafruit_NeoPixel strip (LED_COUNT ፣ LED_PIN ፣ NEO_GRB + NEO_KHZ800) ፤ uint32_t color = strip. Color (127, 127, 127); // ነጭ ቀለም ፣ ለነባሪ ቦል ጠቅ አደረገ በትክክል = ሐሰት; int ኢንዴክስ = 0; int interval = 300; int ውጤት = 0; ያልተፈረመ ረጅም ቀዳሚ ኤምኤምስ = ሚሊስ (); // ክርክር 1 = በ NeoPixel strip ውስጥ የፒክሴሎች ብዛት // ክርክር 2 = አርዱinoኖ ፒን ቁጥር (አብዛኛዎቹ ልክ ናቸው) // ክርክር 3 = የፒክሰል ዓይነት ባንዲራዎች ፣ እንደአስፈላጊነቱ አንድ ላይ ያክሉ - // NEO_KHZ800 800 KHz bitstream (አብዛኛዎቹ የ NeoPixel ምርቶች w/ WS2812 LEDs) // NEO_KHZ400 400 KHz (ክላሲክ 'v1' (v2 አይደለም) የፍሎራ ፒክስሎች ፣ የ WS2811 ሾፌሮች) // NEO_GRB ፒክሴሎች ለ GRB bitstream (ለአብዛኛዎቹ የኒዮፒክስል ምርቶች) // NEO_RGB ፒክስሎች ለ RGB bitstream (v1 FLORA ፒክሰሎች) ተይዘዋል። ፣ v2 አይደለም) // NEO_RGBW ፒክስሎች ለ RGBW bitstream (NeoPixel RGBW ምርቶች) // ማዋቀር () ተግባር-ጅምር ላይ አንድ ጊዜ ይሠራል -------------------- ------------ ባዶነት ማዋቀር () {// እነዚህ መስመሮች በተለይ አዳፍ ፍሬው ትሪኔት 5 ቮ 16 ሜኸዝ ለመደገፍ ነው። // ማንኛውም ሌላ ሰሌዳ ፣ ይህንን ክፍል ማስወገድ ይችላሉ (ግን እሱን የሚተው ምንም ጉዳት የለም) - #ከተገለጸ (_ AVR_ATtiny85_) && (F_CPU == 16000000) ሰዓት_prescale_set (ሰዓት_ዲቪ_1); #endif // ትሪኬት-ተኮር ኮድ መጨረሻ። Serial.begin (9600); ሳለ (! ተከታታይ) {; // ተከታታይ ወደብ እስኪገናኝ ይጠብቁ። ለአገሬው የዩኤስቢ ወደብ ብቻ ያስፈልጋል} pinMode (A0 ፣ INPUT) ፤ strip.begin (); // መጀመሪያ ኒኦፒክስል ስትሪፕ ነገር (ተፈላጊ) strip.show (); // ሁሉንም ፒክሰሎች ያጥፉ ASAP strip.set ብሩህነት (10); // ብሩህነትን ወደ 1/5 ገደማ (ከፍተኛ = 255)} // loop () ተግባር ያዋቅሩ-ሰሌዳው እስኪያልቅ ድረስ በተደጋጋሚ ይሠራል --------------- ባዶ ባዶ loop () {ያልተፈረመ ረጅም የአሁኑ ኤምኤምኤስ = ሚሊስ (); // የአሁኑን ጊዜ int እሴት = analogRead (A0) ማግኘት ፣ // የአሁኑን የብርሃን ዳሳሽ ማንበብ (እሴት> 900 && ውጤት == 0) {// አነፍናፊው ተጭኖ ገና ምንም ውጤት ካልተመዘገበ የውጤት መቅረጽ (መረጃ ጠቋሚ = ክፍተት) {// የአሁኑን ከሆነ ያረጋግጡ ሉፕ ከቀዳሚው ኤምኤምኤስ = የአሁኑኤምኤዎች ክፍተት ይበልጣል። // አዲሱን የጊዜ ክፍተት ወደ የአሁኑ ጊዜ + የጊዜ ክፍተት መረጃ ጠቋሚ + = 1 ያዘጋጁ። // (ጠቋሚ> 17) {// የሉፕ አያያዝ መረጃ ጠቋሚ = 0 ን የሚያነቃቃ ከሆነ በሉፕ ውስጥ አንድ እርምጃ ወደፊት ያርቁ። ከሆነ (ውጤት == 2) {// በትክክለኛው የውጤት ክፍተት = (int) ከፍተኛ ((ክፍተት * 0.95) ፣ 50); // በ 10%ፍጥነት ፣ እስከ 50ms ልዩነት/ ቀለም = ስትሪፕ። ቀለም (0 ፣ 255 ፣ 0); // ሌላ ከሆነ (ውጤት == 1) {// በተሳሳተ የውጤት ክፍተት = 300; // የጊዜ ቀለሙን ዳግም ያስጀምሩ = ስትሪፕ። ቀለም (255 ፣ 0 ፣ 0); // ሌዶቹን ወደ ቀይ ያዋቅሩ} ሌላ {// ምንም ውጤት ላይ ባለቀለም ቀለም = strip. Color (255, 0, 0); // ሊዶቹን ወደ ቀይ ያዘጋጁ} ውጤት = 0; // ውጤቱን ለቀጣዩ ዙር ዳግም ያስጀምሩ} ቲያትርChaseOne (ቀለም ፣ መረጃ ጠቋሚ); // ሌዶቹን ለዕይታ ያብሩ። }} // አኒሜሽን ተፅእኖዎችን ለመፍጠር አንዳንድ የራሳችን ተግባራት ----------------- // የቲያትር-ማርክ-ቅጥ ማሳደጃ መብራቶች። በቀለም (32 ቢት እሴት ፣ // አንድ ላ ስትሪፕ። ከላይ እንደተጠቀሰው ቀለም (r ፣ g ፣ ለ)) እና በማዕቀፎች መካከል መዘግየት ጊዜ (በ ms) // ውስጥ ይለፉ። ባዶ ቲያትርChaseOne (uint32_t ቀለም ፣ int ኢንዴክስ) {strip.clear (); strip.setPixelColor (17 - መረጃ ጠቋሚ ፣ ቀለም); // የመጀመሪያው ረድፍ መሪ መብራቶች ስትሪፕ። // ሁለተኛ ረድፍ መሪ መብራቶች ስትሪፕ። ፒክስል ቀለም (53 - መረጃ ጠቋሚ ፣ ቀለም) // ሦስተኛው ረድፍ መሪ መብራቶች strip.show (); }

የሚመከር: