Talaan ng mga Nilalaman:

Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: 5 Mga Hakbang (na may Mga Larawan)
Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: 5 Mga Hakbang (na may Mga Larawan)

Video: Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: 5 Mga Hakbang (na may Mga Larawan)

Video: Laro ng Mabilis na Reaksyon: Bersyon ng Distansya: 5 Mga Hakbang (na may Mga Larawan)
Video: Paano TUMANGKAD: 10 Home Exercises Para Tumangkad Ng Mabilis 2024, Hulyo
Anonim
Laro ng Mabilis na Reaksyon: Bersyon ng Distansya
Laro ng Mabilis na Reaksyon: Bersyon ng Distansya

Hi Ito ay isang Maituturo sa kung paano lumikha ng isang laro na sumusubok sa parehong oras ng iyong reaksyon at pakiramdam ng distansya. Ang proyektong ito ay batay sa isang lumang proyekto na ginawa ko na kinasasangkutan ng dalawang manlalaro na nakikipagkumpitensya upang makita kung sino ang may mas mabilis na oras ng reaksyon sa pamamagitan ng pag-click sa isang pindutan kapag ang isang ilaw ay naging berde. Ang isang ito ay may isang katulad na layunin, maliban sa solong-manlalaro at sa halip na isang ilaw na patay, ang manlalaro ay bibigyan ng isang time frame upang malayo ang kanilang kamay sa isang tiyak na puwang na malayo sa isang distansya sensor.

Tulad ng lahat ng mga proyekto ng Arduino, ang larong ito ay mangangailangan ng maraming mga de-koryenteng sangkap sa Arduino circuit. Ang mga pangunahing sangkap, bukod sa mga kable at ang Arduino mismo, ay nagsasama ng breadboard, isang motor na servo, isang LCD display, isang RGB LED, at isang distansya na sensor.

Gamit ang https://abra-electronics.com, ang presyo na hindi kasama ang mga wire at Arduino ay $ 32.12 CAD.

Hakbang 1: Hakbang 1: Distance Sensor

Hakbang 1: Distance Sensor
Hakbang 1: Distance Sensor

Ang unang hakbang ay upang i-set ang sensor ng distansya ng ultrasonic sa breadboard at i-wire ito sa Arduino. Ang eksaktong posisyon ng sensor ay hindi talagang mahalaga, ngunit perpekto na malapit ito sa isang gilid upang may lugar para sa iba pang mga bahagi, tulad ng ipinakita sa larawan sa itaas. Mayroong apat na mga pin sa sensor; GND, VCC, TRIG, at ECHO. Ang GND at VCC ay dapat na mai-wire sa lupa at mga riles ng kuryente ayon sa pagkakabanggit, at i-wire ang iba pang dalawang mga pin sa dalawang pin sa Arduino. Ang dalawang pin na ginamit ko ay 12 para sa ECHO at 11 para sa TRIG. Gumamit ng dalawang iba pang mga wire upang mapagana ang power rail at ibagsak ang ground rail sa pamamagitan ng pagkonekta sa power rail sa 5V pin at sa ground rail sa isang GND pin.

Hakbang 2: Hakbang 2: Servo Motor

Hakbang 2: Servo Motor
Hakbang 2: Servo Motor

Ang susunod na hakbang ay ang pag-set up ng servo motor. Sa proyektong ito, gumagana ang servo motor bilang isang timer. Magsisimula ito sa 1 degree, at sa tagal ng panahon kung saan kailangang ilayo ng gumagamit ang kanilang mga kamay, paikutin sa 180 degree. Gumamit ako ng 2 segundo para kapag nalaman ng gumagamit kung gaano kalayo ang kanilang distansya sa kanilang mga kamay, kaya't ang servo ay umiikot ng 179 degree sa loob ng 2 segundo na panahon, umiikot sa maikling agwat. Ang servo motor ay may tatlong mga wire; karaniwang isang dilaw, pula, at kayumanggi. Ang pula ay papunta sa power rail na naka-wire sa 5V, at ang kayumanggi ay papunta sa ground rail na naka-wire sa GND. Ang pangwakas na wire plugs sa isang Arduino pin. Pinili ko ang pin # 9 para sa isang ito. Pagkatapos, kailangan mo ng isang kapasitor na kumokonekta sa parehong riles na mayroong kapangyarihan ng servo motor at mga ground wires na konektado, tulad ng nakikita sa larawan sa itaas.

Hakbang 3: Hakbang 3: RGB LED

Hakbang 3: RGB LED
Hakbang 3: RGB LED

Ang pagpapaandar ng LED sa ito ay upang kumilos bilang isang sukat para sa iskor. Kapag ang iskor ng manlalaro ay nasa paligid ng 0, ang LED ay magiging puti, at magiging mas pula kung ang marka ng manlalaro ay bumaba at berde kung ang iskor ng manlalaro ay tumataas. Ang LED na ito ay may apat na paa; isang pulang-ilaw na paa, isang asul na ilaw na paa, isang berdeng-ilaw na paa, at isang pangkaraniwang katod na ibinahagi sa pagitan ng iba pang tatlong mga binti. Ang karaniwang cathode, ang pinakamahabang binti, ay naka-wire sa power rail kaya't tumatanggap ito ng 5 volts. Ikabit ang 330 ohm resistors sa iba pang tatlong mga binti ng kulay, at ilakip ang iba pang mga dulo ng mga resistor sa PWM digital na mga pin sa Arduino. Ang mga ginamit ko ay mga digital pin 3, 5, at 6 para sa pula, berde, at asul na mga paa ayon sa pagkakabanggit.

Hakbang 4: Hakbang 4: LCD

Hakbang 4: LCD
Hakbang 4: LCD

Ang pangwakas na sangkap ay ang LCD, na nangangahulugang likidong kristal na pagpapakita. Ang layunin nito ay upang sabihin sa manlalaro ang kanilang kasalukuyang marka pati na rin ang distansya na kailangan nila upang mailayo ang kanilang mga kamay sa sensor. Mayroong apat na mga pin dito; GND, VCC, SDA, at SCL. Ang GND at VCC ay mai-wire sa lupa at mga riles ng kuryente ng breadboard ayon sa pagkakabanggit. Ang pin ng SDA ay dapat na mai-wire sa analog pin A4, at ang SCL pin ay dapat na mai-wire sa analog pin A5. Hindi tulad ng iba pang mga bahagi, dapat mong i-wire ang mga pin ng SDA at SCL sa A4 at A5.

Hakbang 5: Hakbang 5: ang Code

Ngayon na nag-wire na kami sa lahat ng mga bahagi, maaari naming isulat ang code. Ang unang bahagi ng code ay ang mag-import ng mga kinakailangang aklatan at ideklara ang aming mga variable at kung aling mga pin ang mga bahagi ang na-wire. Kailangan naming i-import ang mga aklatan ng Wire, LiquidCrystal_I2C, at Servo para sa code na ito.

# isama

# isama

# isama

Servo myServo;

int Const trigPin = 11;

int Const echoPin = 12;

int redPin = 3;

int greenPin = 5;

int bluePin = 6;

int iskor = 0;

int tim = 500;

int kasalukuyang = random (8, 16); // random na halaga kung saan ang distansya ng gumagamit ay dapat na ilayo ang kanilang kamay sa sensor

LiquidCrystal_I2C lcd (0x27, 16, 2); // LCD setup

Ngayon kailangan naming gamitin ang void setup () upang ideklara ang aming mga uri ng pin at pag-setup ng iba pang kinakailangang mga bahagi.

void setup () {myServo.attach (9); Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); lcd.init (); lcd.backlight (); lcd.begin (16, 2); lcd.clear (); // LCD setup}

Ngayon kailangan naming i-setup ang RGB LED code gamit ang isang function at PWM:

void setColor (int red, int green, int blue) {

pula = 255 - pula;

berde = 255 - berde;

asul = 255 - asul;

analogWrite (redPin, pula);

analogWrite (greenPin, berde);

analogWrite (bluePin, blue);

}

Ngayon kailangan naming idagdag ang void loop (). Dito, bubuo kami ng mga random na integer at gumagamit ng isang serye ng kung mga pahayag upang makontrol ang laro para sa manlalaro. Ang kasalukuyang variable, pag-set up sa itaas, ay para sa kasalukuyang distansya na dapat ilayo ng manlalaro ang kanilang sarili mula sa sensor.

Dahil ang code sa void loop () ay napakahaba, mag-i-paste ako ng isang link sa isang dokumento na mayroong code na iyon:

docs.google.com/document/d/1DufS0wuX0N6gpv…

Sa wakas, kailangan nating gawin ang aktwal na mga kalkulasyon upang mai-convert ang mga halaga ng ultrasonic distansya sensor sa pulgada. Ang sensor ng distansya ng ultrasonic ay hindi direktang sumusukat sa distansya; naglalabas ito ng tunog at itinatala ang oras na kinakailangan para maibalik ng sensor ang tunog mula sa kahit anong bagay na bouncing nito.

mahabang microsecondToInches (mahabang microseconds) {

ibalik ang mga microseconds / 74/2;

}

Ngayon ay naka-plug namin ang wired Arduino sa computer gamit ang code, i-setup ang mga port, at patakbuhin ito! Mayroong dalawang mga mode sa larong ito. Alinman maaari mo lamang magamit ang LCD display, servo motor, sensor, at RGB LED at malalaman mo lang ang distansya na kailangan mo mula sa sensor, na kung saan ay ang mahirap na mode. Ang mas madaling mode ay nagsasangkot ng paggamit ng serial monitor sa Mga Tool> Serial Monitor, na ia-update ka bawat segundo kung gaano kalayo ka mula sa sensor, upang makagawa ka ng mga kinakailangang pagsasaayos.

Salamat sa pagbabasa!

Inirerekumendang: