ทำสก์ท็อป Tamagotchi: 8 ขั้นตอน (พร้อมรูปภาพ)

ทำสก์ท็อป Tamagotchi: 8 ขั้นตอน (พร้อมรูปภาพ)

สารบัญ:

Anonim

อยู่มาวันหนึ่งฉันนั่งอยู่หลังโต๊ะทำงานและฉันก็ต้องสร้างอะไรแปลก ๆ ขึ้นมาหลังจากมองไปรอบ ๆ สักครู่ฉันก็มอง LED เมทริกซ์และจุดประกายความคิดในหัวของฉัน: "ฉันอยากได้ทามาโกะทาจิ".

ดังนั้นสำหรับพวกคุณที่ไม่รู้ว่า heck คือ Tamagotchi ตรงนี้คือ snip-it เล็กน้อยจากวิกิพีเดีย:

"Tamagotchi (たまごっち Tamagocchi?) เป็นสัตว์เลี้ยงดิจิตอลแบบพกพาที่สร้างขึ้นในญี่ปุ่นโดย Akihiro Yokoi จาก WiZ และ Aki Maita แห่ง Bandai ขายครั้งแรกโดย Bandai ในปี 1996 ในญี่ปุ่น"

ดังนั้นการใช้ของเล่นคลาสสิกนี้ของฉันคือการทำให้มันเป็นอุปกรณ์เดสก์ท็อปที่มีเมทริกซ์ LED สำหรับจอแสดงผลและ Arduino สำหรับสมองเพื่อให้ผู้คนเข้าถึงได้มากขึ้น ด้วยที่กล่าวไว้เข้าร่วมกับฉันในขณะที่เราออกแบบสร้างและเขียนโปรแกรมสก์ท็อป Tamagotchi แห่งแรกของโลก (เท่าที่ฉันรู้)

วัสดุ:

ขั้นตอนที่ 1: รับสิ่งที่ถูกต้อง

เช่นเดียวกับโครงการอิเล็กทรอนิกส์อื่น ๆ คุณจะต้องได้รับเครื่องมือพื้นฐาน:

1) หัวแร้ง

2) ลวดบัดกรี

3) คู่ของใบมีด

4) คีมปากเข็ม

ทางเลือก: รับการประสานประสานหรือปั๊มประสานเพื่อแก้ไขข้อผิดพลาดการบัดกรี

สำหรับชิ้นส่วนอิเล็คทรอนิคส์นั้นมีรายการอยู่อีกหน่อยนี่คือสิ่งที่คุณจะต้องได้รับ:

1) ATmega328P ที่มี bootloader arduino + 16MHz คริสตัลพร้อมหมวก 22pF สองอัน

* คุณต้องการบางสิ่งบางอย่างในการเขียนโปรแกรมชิปเช่นเดียวกับแพลตฟอร์ม arduino หรืออะแดปเตอร์ FDTI

2) การลงทะเบียนกะ 4 x 74HC595

3) อาร์เรย์ทรานซิสเตอร์ดาร์ลิงตัน 2 x ULN2803

4) 1 x DS1302 RTC + 32.768kHz Crystal

5) 1 x 3V ใส่แบตเตอรี่เซลล์แบบเหรียญ + แบตเตอรี่

6) 4 x ปุ่มกดมุมฉาก

7) 1 x Peizzo Buzzer

8) เมทริกซ์เมทริกซ์ LED 8 x 8x8

9) ตัวต้านทาน 16 x 330Ohm (คุณจะต้องคำนวณค่าเมทริกซ์ของคุณ)

10) 2 x แถวหัวเข็มหมุดหญิง 16 อัน

11) 2 x แถวหัวเข็มหมุด 16 ตัว

12) แถว x 1 ของ 4 ส่วนหัวหญิง (สำหรับการเขียนโปรแกรม)

13) 5 x 100nF cap

14) 1 x 10uF cap

15) ตัวต้านทาน 1 x 10K

15) ขั้วต่อแจ็คไฟ

16) 5V DC กำแพงหูด

17) Protoboard ชิ้นใหญ่

18) สายเชื่อมต่อบางอย่าง

ขั้นตอนที่ 2: ด้านฮาร์ดแวร์

แม้ว่าโครงการนี้หากซอฟต์แวร์ส่วนใหญ่เน้นเราจะต้องสร้างฮาร์ดแวร์ก่อนเพื่อให้โค้ดการเขียนชีวิตและการดีบักง่ายขึ้น

ฮาร์ดแวร์ประกอบด้วย 2 ส่วนหลักคือส่วนไมโครคอนโทรลเลอร์และจอแสดงผล LED

ส่วนไมโครคอนโทรลเลอร์ตรงไปตรงมามากมันเป็น arduino แบบสแตนด์อโลน (ATmega328 กับ arduino bootloader) ด้วย

อุปกรณ์ต่อพ่วงบางตัว (4 ปุ่ม, ออดและ RTC) แต่มันเป็นส่วนที่สำคัญที่สุดในการคิด

ส่วนจอแสดงผล LED มีความซับซ้อนขึ้นเล็กน้อยและใช้เวลาในการประสาน วงจรนี้ประกอบด้วย 4 shift register (74HC595)

2 อาร์เรย์ทรานซิสเตอร์ดาร์ลิงตัน (ULN2803) และเมทริกซ์ LED 4 8x8

เช่นเดียวกับจอ LED ส่วนใหญ่ไม่แปลกใจเลยที่จอแสดงผลจะต้องมีมัลติเพล็กซ์ (ดูมันเป็นแนวคิดที่เจ๋งมาก) เพราะการขับขี่ LED 16x16 แต่ละตัวจะใช้เวลา 256 พินจากไมโครคอนโทรลเลอร์และมันไร้สาระ

แม้ด้วยวิธีการมัลติเพล็กซ์เรายังคงต้องการพิน 32 (16 แถว + 16 คอลัมน์) จากไมโครคอนโทรลเลอร์เพื่อขับเคลื่อนจอแสดงผลที่เราไม่มีอีกดังนั้นวิธีแก้ปัญหาคือการใช้การลงทะเบียนกะเป็นการขยาย I / O, 4 8 การลงทะเบียนบิตกะให้เรา 32 ผลและใช้เวลาเพียง 3 บรรทัดในการควบคุมพวกเขาทั้งหมด

แต่ปัญหาไม่ได้จบลงที่นี่เพราะการลงทะเบียนกะไม่สามารถจัดการกับการจมกระแสไฟ LED 16 ดวง (ถ้าไฟเต็มแถว) บนขาเดียวดังนั้นเราต้องให้มือของมันด้วยความช่วยเหลือของอาร์เรย์ทรานซิสเตอร์ดาร์ลิงตันที่ จะทำหน้าที่เหมือนบัฟเฟอร์ที่สามารถจัดการกับกระแสน้ำขนาดใหญ่ที่สามารถทอดการลงทะเบียนกะ

ดังนั้นในการสรุปเราใช้การลงทะเบียนเชนเดซี่ 4 ตัวเพื่อควบคุมการแสดงผล 2 ไดรฟ์แรกแถวและอีก 2 ไดรฟ์คอลัมน์ด้วยความช่วยเหลือของอาร์เรย์ดาร์ลิงตัน

สิ่งเดียวที่ต้องคำนวณในโครงการนี้คือค่าของตัวต้านทานที่จะขับแถว LED

สูตรง่ายมากและเป็นไปตาม:

R = (Vsource - Vled) / Iled

Vsource คือ 5V, Vled คือแรงดันไปข้างหน้าของ LED หนึ่งตัวในเมทริกซ์และ Iled เป็นกระแสไปข้างหน้าของ LED เดียวกันนั้น

คุณยังสามารถใช้เครื่องคิดเลขออนไลน์เพื่อช่วยคุณได้

ขั้นตอนที่ 3: แนวคิดการก่อสร้าง - กระดาน LED

เมื่อฉันเริ่มสร้างฉันต้องการได้รูปลักษณ์ที่สะอาดโดยไม่ต้องใช้เคส (การค้นหาเคสที่เหมาะสมคือฝันร้าย) ดังนั้นฉันจึงไป

โครงสร้างสองชิ้นกล่าวคือหนึ่งบอร์ดที่มีเมทริกซ์ LED และอีกอันหนึ่งเป็นอุปกรณ์อิเล็กทรอนิกส์ทั้งหมด

วิธีนี้เป็นสิ่งเดียวที่คุณเห็นเมื่อคุณมองไปที่ด้านหน้าคือจอแสดงผล LED และสิ่งอื่น ๆ ทั้งหมดจะถูกซ่อนอยู่หลังจอแสดงผล

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

เนื่องจากฉันมีเมทริกซ์ LED 8x8 4 ตัวฉันจึงต้องเชื่อมต่อเข้าด้วยกันเพื่อรับเมทริกซ์ LED 16x16 หนึ่งอันซึ่งค่อนข้างง่ายและใช้เวลาเพียงเล็กน้อยในการเชื่อมต่อเข้าด้วยกัน วิธีที่คุณทำได้คือการเชื่อมต่อแถวของเมทริกซ์แนวนอนกับบนและอื่น ๆ และเชื่อมต่อคอลัมน์ของเมทริกซ์แนวตั้ง (ฉันทำการเชื่อมต่อกับสายไฟลวดพันสายไฟบาง ๆ)

ตอนนี้ส่วนเดียวที่เหลืออยู่กับบอร์ดนี้คือการเชื่อมต่อส่วนหัวที่จะเชื่อมต่อกับบอร์ดด้วยกันตำแหน่งของตัวเชื่อมต่อนี้จะถูกตัดสินโดยตำแหน่งของสวิตช์บนกระดานที่สอง สวิตช์จะอยู่ที่ด้านข้างของบอร์ดดังนั้นคุณจึงไม่สามารถใส่คอนเนคเตอร์ที่ขอบของบอร์ดนั่นเป็นสาเหตุที่ทำให้คอนเนคเตอร์ถูกวางไว้ประมาณ 4 รูจากขอบ

มีตัวเชื่อมต่อสองตัวตัวหนึ่งสำหรับแถวและอีกตัวสำหรับคอลัมน์

และเพื่อให้ดูเสร็จผมแนะนำให้วางแผ่นกระดาษสีขาวทับเมทริกซ์เพื่อซ่อนชุดประกอบและดูสะอาดตา

ฉันติดกระดาษที่ขอบของเมทริกซ์เพื่อให้จอแสดงผลปลอดภัยจากกาว

ขั้นตอนที่ 4: แนวคิดการก่อสร้าง - คณะกรรมการควบคุม

ตอนนี้บอร์ดควบคุมเป็นส่วนที่ซับซ้อนที่สุดของโครงสร้างนี้เนื่องจากข้อ จำกัด ด้านพื้นที่และฉันไม่สามารถบอกคุณได้ว่าจะสร้างมันอย่างไรเพราะทุกคนมีสไตล์ในการสร้าง

สิ่งที่ฉันสามารถบอกคุณได้คือการจัดวางองค์ประกอบที่สำคัญเช่นปุ่มและตัวเชื่อมต่อ ตอนนี้ปุ่มควรอยู่ที่ด้านข้างของบอร์ดและส่วนใหญ่จะเป็นมุมฉากเพื่อที่พวกเขาจะมองไม่เห็น แต่คุณยังสามารถกดได้

จากที่นั่นคุณวางคอนเนคเตอร์ที่จะเข้าร่วมทั้งสองบอร์ดคอนเนคเตอร์ควรอยู่ใกล้กับขอบมากที่สุดเท่าที่จะทำได้เพื่อให้การเชื่อมต่อที่ดีและทนทานนั่นคือวิธีที่คุณวางปุ่มแรกไว้ที่ขอบ ใส่ขั้วต่อ

หมายเหตุ: สิ่งสำคัญคือต้องแน่ใจว่าขั้วต่อทั้งสองบอร์ดเข้าด้วยกันอย่างสมบูรณ์และด้านข้างของบอร์ดนั้นเรียบเสมอกัน

หลังจากชิ้นส่วนสำคัญเหล่านั้นทำคุณมีอิสระที่จะสร้างส่วนที่เหลือตามที่คุณเห็นถูกต้อง แต่ให้แน่ใจว่าไม่มีส่วนใดที่ "ลงน้ำ"

ฉันจะแนะนำการสร้างเป็นกลุ่มและเก็บชิ้นส่วนทั้งหมดในกลุ่มนั้นไว้ใกล้กันเพื่อความสะดวกในการเดินสายไฟตัวอย่างเช่น:

ตัวเชื่อมต่อคอลัมน์ควรเชื่อมต่อกับชิปดาร์ลิงตันสองตัวและตัวเปลี่ยนกะสองตัวดังนั้นจึงเหมาะสมที่จะวางมัดนั้นไว้ใกล้กันและด้วยความคิดเล็กน้อยเป็นไปได้ที่จะหลีกหนีด้วยสายไฟเพียงไม่กี่ที่นี่และในกลุ่มนี้.

นอกจากนี้ตรวจสอบให้แน่ใจว่าได้ใส่ส่วนหัวการเขียนโปรแกรมสำหรับไมโครคอนโทรลเลอร์สำหรับการดัดแปลงในอนาคต

ขั้นตอนที่ 5: กฎของเกม

หลังจากเสร็จสิ้นส่วนฮาร์ดแวร์ก็ถึงเวลาคิดเกี่ยวกับรหัสและกลไกเกม

นี่เป็นส่วนที่ยากที่สุดสำหรับฉันเพราะฉันจ้องตั้งแต่เริ่มต้นและต้องทำตามกฎของตัวเองซึ่งไม่สมบูรณ์แบบด้วยวิธีการใด ๆ

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

ดังนั้นด้วยข้อจำกัดความรับผิดชอบเล็ก ๆ น้อย ๆ นี้ให้พูดคุยเกี่ยวกับกฎของเกมเล็กน้อย

สัตว์เลี้ยงมีสถิติพื้นฐาน 5 ประการ: สุขภาพ, น้ำหนัก, ความสุข, ความหิวและอายุ

บทบาทผู้เล่นคือการรักษาสมดุลของสถิตินี้โดยการกระทำ 4 อย่างที่เขามี: ให้อาหารสัตว์เลี้ยงเล่นกับเขาทำความสะอาดหลังเขาและดูแลรักษา

แต่ละการกระทำมีผลในเชิงบวกและผลกระทบเชิงลบและผู้เล่นจำเป็นต้องใช้ความพยายามในการเลือกประนีประนอมที่ดีที่สุด

เมื่อผู้เล่นเลือกที่จะเลี้ยงสัตว์เลี้ยงเขามี 3 ตัวเลือก: ให้เขากินเนื้อให้เขาผลไม้หรือขนม

อาหารที่ทำจากเนื้อสัตว์ทำขึ้นเพื่อจุดหิวมากที่สุดและเพิ่มน้ำหนักให้มากขึ้นผลไม้ทำให้สุขภาพสัตว์เลี้ยงดีขึ้น แต่ลดความสุขของสัตว์เลี้ยงลงและขนมให้ความสุขเพิ่มมากขึ้น แต่ลดสุขภาพและยกน้ำหนักสัตว์เลี้ยง

เมื่อผู้เล่นเลือกที่จะเล่นกับสัตว์เลี้ยงเกมของ Simon จะเริ่มต้นและขึ้นอยู่กับว่าผู้เล่นทำสถิติความสุขดีแค่ไหน แต่ถ้าผู้เล่นเล่นได้แย่มากความสุขก็จะลดลง

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

นอกจากนี้ยังมีโอกาสสุ่มที่สัตว์เลี้ยงจะป่วยโอกาสนั้นสูงกว่าหากสัตว์เลี้ยงนั้นเก่าหรือสกปรก แต่ละคนมีระดับความเจ็บป่วย 3 ระดับโดยมีผลกระทบด้านลบของตัวเอง ผู้เล่นสามารถยิงสัตว์เลี้ยงเพื่อรักษาเขา แต่สิ่งนี้จะทำให้สุขภาพสัตว์เลี้ยงลดลง (ไม่มีใครเหมือนการถ่ายภาพ: D)

และส่วนที่ไร้สมรรถภาพที่สุด (สำหรับฉัน) ก็คือสัตว์เลี้ยงจะเข้าสู่โหมดสลีอัตโนมัติเมื่อเวลา 23:00 น. และตื่นขึ้นเวลา 8:00 น. เพื่อไม่ให้สัตว์เลี้ยงตายข้ามคืน แน่นอนคุณสามารถเปลี่ยนส่วนนี้เพื่อความชอบของคุณและกำหนดเวลานอนใหม่สำหรับสัตว์เลี้ยง

ขั้นตอนที่ 6: ซอฟต์แวร์: เมนูและภาพเคลื่อนไหว

ที่นี่เราเป็นส่วนที่ใช้เวลาส่วนใหญ่ในโครงการหลังจากตัดสินใจคุณสมบัติและสถานะของเกมทั้งหมดแล้วก็ถึงเวลาที่จะทำให้พวกเขามีชีวิตชีวาด้วยการสร้างภาพเคลื่อนไหวการตั้งค่าการกระทำและสถานะของเกมทั้งหมด

สำหรับขั้นตอนนี้ฉันใช้การรวมกันของสองโปรแกรม: paint.net และ excel

ในสีฉันสร้างไอคอนและหน้าจอเมนูทั้งหมดทีละรายการ การใช้สีเป็นความช่วยเหลือที่ยอดเยี่ยมเพราะคุณสามารถคัดลอกทาสีลบและจัดการภาพได้อย่างง่ายดาย ส่วนที่ไม่เคยน้อยนี้เป็นเรื่องยากสุด ๆ สำหรับฉันเพราะฉันมีเวลายากลำบากในการหาไอคอนแบบกำหนดเองที่ยืนขึ้นสำหรับการกระทำการตั้งค่าอาหารและอารมณ์แต่ละอย่าง

หมายเหตุ: ในโปรแกรมระบายสีฉันใช้ตัวเลือกกริดพิกเซลเพื่ออนุญาตให้ฉันแบ่งส่วนเป็นพิกเซลและทาสีแต่ละส่วนได้อย่างง่ายดาย

หลังจากทำงานในแอนิเมชั่นและไอคอนเสร็จฉันก็กำหนดหมายเลขไอคอนเป็นกลุ่มและเริ่มทำงานในการสร้างบิตแมปของไอคอนเพื่อที่จะทำเช่นนั้นฉันใช้เคล็ดลับที่ฉันโปรดปรานใน excel เพื่อสร้างบิตแมป

ฉันสร้างสเปรดชีต excel ที่ให้ฉัน "ทาสี" กับเซลล์ในพื้นที่เฉพาะแล้วมันกระจายบิตแมปในรูปแบบที่ฉันต้องการ

หลังจากเสร็จสิ้นทั้งหมดมันเป็นเพียงเรื่องของการจัดการบิตแมปในรหัสและเริ่มเขียนซอฟต์แวร์

ขั้นตอนที่ 7: ซอฟต์แวร์: รหัสสุดท้าย

ส่วนหลักของโครงการนี้คือซอฟต์แวร์และเป็นสิ่งที่ทำให้โครงการนี้เป็นตัวละคร

ตอนนี้ฉันจะไม่อ่านรายละเอียดของรหัสที่นี่เพราะฉันได้ทำไปแล้วในรหัสดังนั้นคาดว่าจะเห็นความคิดเห็นมากมายที่นั่น (บางคนมีข้อผิดพลาดในการสะกดคำที่น่ากลัว: D)

รหัสนี้ใช้ 3 ไลบรารี แต่ทั้งหมดมาพร้อมกับ Arduino IDE ดังนั้นไม่จำเป็นต้องดาวน์โหลดใด ๆ

ฉันเขียนโค้ดโดยไม่มีไลบรารี่พิเศษเพื่อบันทึกปัญหาในการรักษาโค้ดให้ทันสมัยและค้นหาไลบรารี่เหล่านั้นในอนาคต

นี่คือสาเหตุที่รหัสมีความยาวและมีจำนวนมากหากฟังก์ชันที่แตกต่าง

ตอนนี้รหัสมันเองมีสองส่วนหลัก: วงหลักที่จัดการกับกฎของเกมทั้งหมดและพฤติกรรม "สัตว์เลี้ยง" และประจำขัดจังหวะจับเวลาซึ่งจัดการการปรับปรุงการแสดงผล

งานของฉันเกี่ยวกับรหัสยังไม่เสร็จเพราะมีสิ่งใหม่ ๆ ที่จะเพิ่มและปรับปรุงอยู่เสมอดังนั้นฉันจะอัปเดตรหัสเป็นครั้งคราว แต่ตอนนี้รหัสอยู่ในสถานะทำงานและมีคุณลักษณะครบถ้วน

ขั้นตอนที่ 8: คุณทำเสร็จแล้ว! ทำอะไรต่อไป

เย้! เราทำเสร็จแล้ว! หรือเรา

เรามี Tamagotchi บนม้านั่งทำงานได้อย่างสมบูรณ์พร้อมฟังก์ชั่นพื้นฐานทั้งหมด แต่ทำไมถึงหยุดอยู่ที่นั่น?

มีหลายสิ่งที่จะเพิ่มและปรับปรุงให้ดีขึ้นและขึ้นอยู่กับคุณที่จะทำเช่นนั้น ดังนั้นใช้อุปสรรค์และปรับปรุงเปลี่ยนแปลงและสนุกไปกับมัน!

และอย่าลืมใส่ในสำรับของคุณด้วยความภาคภูมิใจและแสดงผลงานสร้างใหม่ของคุณ

ป.ล.

ดูแลมันให้ดีและอย่าลืมให้อาหารมันเป็นครั้งคราว:)