Arduino - เกมความจำ: 4 ขั้นตอน

Arduino - เกมความจำ: 4 ขั้นตอน

สารบัญ:

Anonim

เกมหน่วยความจำอย่างง่ายโดยใช้ Arduino Uno

วัสดุ:

ขั้นตอนที่ 1: ขั้นตอนที่ 1: อะไหล่และเครื่องมือ

4 ปุ่ม

4 LED ของ

1 74HC595 Shift Register

1 Piezo

2 (อาจใหญ่กว่า) Breadboard

Arduino Uno 1 ตัว

1 220 Ωความละเอียด

ขั้นตอนที่ 2: ขั้นตอนที่ 2: เคล็ดลับ

พยายามใส่ arduino และเขียงหั่นขนมไว้ด้วยกันก่อน การทำงานกับมันง่ายกว่ามาก

ฉันใช้ catron เล็กน้อยที่ฉันติดกาวเขียงหั่นขนมและใช้ scews สองตัวและสกรูน็อตสองตัวเพื่อติดตั้ง arduino

เมื่อคุณขนส่งโครงการของคุณ (อาจจะไม่ดี) ตรวจสอบให้แน่ใจว่า Arduino ได้รับการป้องกันอย่างดี สายสามารถเลอะง่าย

ขั้นตอนที่ 3: ขั้นตอนที่ 3: รหัส

// Pin เชื่อมต่อกับ 12 (ST_CP) จาก 74HC595 Shift Register

int latchPin = 8; // clockPin เชื่อมต่อกับ 11 (SH_CP) บน 74HC595 Shift register int clockPin = 12; //// Pin เชื่อมต่อกับ DS ของ 74HC595 Shift register int dataPin = 11;

// Variabel ถ้าเกมนั้นจบเกมแบบบูล = เท็จ;

// Array สำหรับ ledregay int shiftregister 8 = {1,2,4,8,16,32,64,128}; // Variabel สำหรับระดับปัจจุบัน int level = 4; // อาร์เรย์ที่สงวนไว้ของไฟ LED ที่ถูกต้องในแต่ละระดับ int randarray1 8; // จำนวนไฟ LED ที่มีอยู่ int min = 0; int สูงสุด = 4; // Variabel สำหรับปุ่มใดปุ่มหนึ่งที่กด int buttpr; // Variabel สำหรับทุกปุ่มหมุดปัก int buttonpins 8 = {2,3,4,5,6,7, A0, A1};

void setup () {// Ställ in pinnarna จนถึง shift registret pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT);

// ตั้งค่า LEDs ทั้งหมดในโหมด PULLUP สำหรับ (int buttpin = 0; buttpin <8; buttpin ++) {pinMode (buttonpins buttpin, INPUT_PULLUP); } // Arduino พร้อมสำหรับ seriell comunication Serial.begin (9600); }

void loop () {// เพิ่มระดับเกมหาก (ระดับ <8) {ระดับ ++; } // ทำระดับตราบใดที่ไม่มี Gameover ถ้า (! gameover) {// สร้างชุด LED ใหม่สำหรับระดับสำหรับ (int i = 0; i <ระดับ; i ++ ระดับ) {randarray1 i = สุ่ม (สูงสุด); } // วนรอบไฟ LED ทั้งหมดในระดับปัจจุบันสำหรับ (int numberToDisplay = 0; numberToDisplay <ระดับ; numberToDisplay ++) {Serial.println (ledarray randarray1 numberToDisplay); // ปิดพลังไปที่ shift ลงทะเบียน readingPin ก่อนที่เราจะเลือกพิน digitalWrite ใหม่ (latchPin, LOW); // ทำเครื่องหมาย LED ถัดไปด้วย shift ลงทะเบียน shiftOut (dataPin, clockPin, MSBFIRST, ledarray randarray1 numberToDisplay); // จุดไฟ LED ที่ถูกทำเครื่องหมายในครึ่งหนึ่งของ digitalWrite ที่สอง (latchPin, HIGH); ล่าช้า (500); // กำจัดแสงอีกครั้ง digitalWrite (latchPin, LOW); // ทำเครื่องหมาย LED shiftOut แรก (dataPin, clockPin, MSBFIRST, 0); // เปิด digitalWrite ตัวแรกของ LED (latchPin, HIGH); // หยุดชั่วคราวหนึ่งวินาทีก่อนการหน่วงเวลา LED ถัดไป (1,000); }

// วนรอบเพื่ออ่าน buttonpressed สำหรับ (int lednr = 0; lednr <ระดับ; lednr ++) {// เขียนออกมาหนึ่งอันคือ Serial.print LED ที่ถูกต้องถัดไป ("ถัดไปนำ:"); Serial.println (lednr); // รอหนึ่งวินาทีก่อนการหน่วงเวลาการอ่านครั้งถัดไป (1,000); // อ่านปุ่มจนกว่าจะมีการกดปุ่มหนึ่งทำ {buttpr = whichbuttonpressed (); } ในขณะที่ (buttpr == 9); // เขียนปุ่มกดปัจจุบันและปุ่มที่ถูกต้อง Serial.print (buttpr); Serial.println (randarray1 lednr); // เล่นเสียงสำหรับเสียงกดปุ่ม (13,660,200); // ถ้ามันเป็นปุ่มผิด Gameover ถ้ามัน (buttpr! = randarray1 lednr) {gameover = true; // เล่น Gameover sound tone (13,440,1000); Serial.println ("gameover"); // ยกเลิกการวนซ้ำสำหรับการอ่านของปุ่มแตก; }} Serial.println ("ระดับสิ้นสุด"); }}

int ซึ่งปุ่มกด () {// ทำซ้ำปุ่มทั้งหมดและอ่าน (int buttpin = 0; buttpin <8; buttpin ++) {// หากกดปุ่มแล้วให้ส่งคืนค่าของปุ่มถ้า (digitalRead (buttonpins buttpin) == 0) {return (buttpin); ทำลาย; }} // ถ้าไม่มีการกดปุ่มใด ๆ ให้ส่งคืน 9 เพื่อดำเนินการต่อเพื่ออ่านปุ่มในลูปส่งคืน 9; }

ขั้นตอนที่ 4: ขั้นตอนที่ 4: ฟังก์ชั่นของเกม

เกมเล็ก ๆ นี้ง่ายต่อการสร้าง ฉันแน่ใจว่าคุณจะทำสิ่งนี้ในเวลาไม่ถึงหนึ่งชั่วโมง

แต่จริงๆแล้วเกมนี้ค่อนข้างตลกและเป็นเกมที่มีประโยชน์อย่างมากในวิชายิมนาสติกสมอง

ไฟ LED สี่ดวงในเกมกะพริบเป็นชุดแบบสุ่ม เมื่อชุดค่าผสมสิ้นสุดลงคุณกดเพื่อใช้ปุ่มทั้งสี่ ทุกครั้งที่คุณกดปุ่มคุณจะได้ยินเสียง กดปุ่มผิดและคุณจะได้เสียงที่ชัดเจนซึ่งบ่งบอกว่าเป็น GAME OVER! แต่ถ้าคุณจัดการกดชุดค่าผสมที่ถูกต้องคุณจะไปสู่ระดับใหม่ เวลานี้การรวมกันห้าครั้งกะพริบ ระดับต่อไปที่หกเป็นต้น

โดยส่วนตัวฉันคิดว่าเกมประเภทนี้มีประโยชน์สำหรับผู้สูงอายุ บางทีคนที่มีอาการป่วยที่มีผลต่อความทรงจำของพวกเขา?