Мазмуну:

"Ниндзя доллары" Arduino үчүн оюн: 3 кадам
"Ниндзя доллары" Arduino үчүн оюн: 3 кадам

Video: "Ниндзя доллары" Arduino үчүн оюн: 3 кадам

Video:
Video: Hack: modify 20A DC 10-60V PWM Motor Speed Controller and control with Arduino 2024, Ноябрь
Anonim
Сүрөт
Сүрөт

Дагы бир видео оюну arduino.it үчүн эң сонун оюн, мен чыгарган акыркыга караганда алда канча өнүккөн. Эмне үчүн ал башкага караганда татаалыраак? Бул татаалыраак, анткени бул секирип, атып, үн жарыгы жана жаңы пункттар cont ыкмасына ээ.

Жабдуулар

  1. Arduino.
  2. Breadboard
  3. секирүүчү зымдар
  4. Кызыл LED
  5. 2 баскычтар
  6. 2 10k ohm резисторлор
  7. 2 220R каршылыгы.
  8. Супер ачык көк LED.
  9. пьезо сигнал
  10. 16*2 ЖК дисплей

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

Бардыгын бирге бириктирүү
Бардыгын бирге бириктирүү

Эми баарын зым менен жабыш керек

2 -кадам: Кантип ойноо керек:

  1. Ардуинону күйгүзүңүз.
  2. ЖК басып чыгарышы керек: "оюн башталат" жана кайра эсептөө.
  3. Баскычтардын бирин секирүү үчүн, экинчисин атуу үчүн басыңыз.
  4. секирген ар бир блоктон сиз бир упайга ээ болдуңуз жана ар бир кармаган * сизге 5 упай берет.
  5. 50 упай же андан жогору болгондо утуп алдыңыз

3 -кадам: Кодекс

// эсте джого e muito interessante e ao mesmo tempo irritante e frustante mas muito divertido.

#кошуу

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

const int buttonPin1 = 1; const int buttonPin2 = 6; const int buzzer = 7; белгисиз узун пт = 0; // buttonstates коюу bool buttonState1 = 0; bool buttonState2 = 0; // туш келди тоскоолдуктардын орду үчүн кокустук саны int randomNums [6]; // тоскоолдуктардын саны үчүн туш келди сан int randomNum = 0; // pts int randomNums1 позициясы үчүн туш келди сан [3]; // кокус сан pts int randomNum1 = 0 саны үчүн; // баштоо кечигүү убактысы, бара -бара төмөндөйт unsigned int myDelay = 500; // бул логиканы button2 басылганын текшерүү үчүн жасады, анткени эгер ал цикл үчүн биринчи жолу бир жолу басылса, мен анын аягына чейин тоскоолдуктар жазылбашын каалайм bool temp = 0; // бул өзгөрмө жоокердин аткан кездеги позицияларын сактайт. 16 позиция болушу мүмкүн, анткени жоокердин 16 позициясы бар. int tempI [16]; // мен бул логиканы колдонуп, чекиттин кармалышын текшерүү үчүн bool temp1 = 0;

// кармалган чекиттин ордун сактоо үчүн бул өзгөрмөнү колдонуңуз. бул бардык пункттардын ордун биринчи for циклинин бир итерациясында сактоо үчүн жана массив болушу керек. эгер ал бир гана позицияны сактаса, анда "эски" чекит жаңы итерацияда кайтып келет

int tempI1 [3]; // бул өзгөрмөнү жоокердин бир катар кадрларына ээ болуу үчүн колдонуңуз, ал дагы tempI int button2IsPressed массивинин узундугу = 0; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

жараксыз орнотуу () {

// ЖКнын мамычаларынын жана катарларынын санын орнотуу: lcd.begin (16, 2); // pinMode (buttonPin1, INPUT) клавиша режимин коюу; pinMode (buttonPin2, INPUT); pinMode (ызы -чуу, ЧЫГУУ); lcd.setCursor (4, 0); lcd.print ("ОЮН"); lcd.setCursor (2, 1); lcd.print ("БАШТАЛАТ"); lcd.print ("5"); кечигүү (1000); lcd.setCursor (12, 1); lcd.print ("4"); кечигүү (1000); lcd.setCursor (12, 1); lcd.print ("3"); кечигүү (1000); lcd.setCursor (12, 1); lcd.print ("2"); кечигүү (1000); lcd.setCursor (12, 1); lcd.print ("1"); кечигүү (1000); lcd.clear ();

}

void loop () {

бул жерде:

randomNum = random (5);

үчүн (int i = 0; i9 && pts19 && pts29 && pts = 50) {pts = 0; myDelay = 500; lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ЖЕНИШ"); обон (коңгуроо, 262); кечигүү (200); обон (ызы -чуу, 330); кечигүү (200); обон (коңгуроо, 392); кечиктирүү (100); обон (ызы -чуу, 330); кечиктирүү (100); обон (коңгуроо, 392); кечиктирүү (100); обон (коңгуроо, 523); кечигүү (200); noTone (ызы -чуу); кечигүү (3000); lcd.clear (); goto here; } else lcd.setCursor (15, 0); lcd.print (pts); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); // жоокер атпаса же ал атса, тоскоолдуктарды коюу, бирок ал да секирди, эгерде (! temp) {for (int j = 0; jrandomNums [j]) {lcd.setCursor (randomNums [j], 1); lcd.print ("#"); }

}

}

// пункттарды коюу

if (! temp1) {for (int j = 0; j

}

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