สารบัญ:

BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน: 5 ขั้นตอน
BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน: 5 ขั้นตอน

วีดีโอ: BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน: 5 ขั้นตอน

วีดีโอ: BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน: 5 ขั้นตอน
วีดีโอ: เรื่องไปไกลขนาดนี้ หยกยังจะไปโรงเรียนอยู่ไหม? #หยก #ชุดไปรเวท #เด็กต้องได้เรียน #dailytopics 2024, กรกฎาคม
Anonim
BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน
BloodBowl หมุนตัวนับโดยใช้ไฟ LED 7 ส่วน

โปรเจ็กต์นี้มีไว้สำหรับเกม BloodBowl เทิร์นเคาน์เตอร์โดยใช้ไฟ LED 7 เซ็กเมนต์ Charlieplexed 7 ดวง

ขั้นตอนที่ 1: แนวคิด

แนวคิด
แนวคิด

เพื่อนของฉันถามฉันเกี่ยวกับแนวคิดในการสร้าง Bloodbowl Turn counter สำหรับเกมกระดานของเขา ฉันไม่รู้ว่านี่คืออะไรและต้องการอะไร จึงต้องใช้เวลาสักครู่ในการตัดสินใจว่าฉันจะทำเช่นนี้หรือไม่และอย่างไร ก่อนอื่นฉันต้องมีความคิดว่าเขาต้องการอะไร ดังนั้นฉันจึงเริ่มด้วยแนวคิดศิลปะ (รูปภาพ) แนวคิดพื้นฐานคือการมีปุ่มกด 3 ปุ่ม ควบคุม LED 3 ดวงแต่ละดวง และจะถูกวางไว้ภายในหอคอยที่สร้างขึ้นเอง คำขอที่ยิ่งใหญ่เพียงอย่างเดียวคือการมีจอแสดงผล 4 อันดับแรกนับขึ้นจาก 0 ถึง 8 และรีเซ็ต และมี 2 ด้านล่าง แสดงนับถอยหลังจาก 8 ถึง 0 และวนกลับ ฉันจะทำวงจรให้เสร็จและเขาจะสร้างหอคอยให้เสร็จ

ขั้นตอนที่ 2: การออกแบบและรายการชิ้นส่วน

การออกแบบและรายการอะไหล่
การออกแบบและรายการอะไหล่

เนื่องจากแนวคิดนี้ใช้ LED 7 เซ็กเมนต์ 6 ตัว และฉันมี Microchip PIC 8 บิตบางตัว ฉันจึงค้นคว้าวิธีใช้ PIC เพื่อควบคุม LED ฉันพบลิงก์นี้ https://www.mikroe.com/en/books /picbook/7_08chapter.htm ที่ระบุว่า " สามารถเข้าถึงได้ถึง 6 จอในลักษณะนี้ โดยไม่กระทบต่อความสว่างของจอภาพแต่ละจอ" ฉันคิดว่านี่เป็นความท้าทายและบางสิ่งที่ต้องตรวจสอบซึ่งเป็นส่วนหนึ่งของโครงการของฉัน สิ่งแรกที่ฉันทำคือหยิบจอแสดงผล 7 เซ็กเมนต์หลอดไส้จากกล่องของฉันและดูว่าพวกเขาจะทำงานอย่างไร ข่าวร้าย. ส่วนใดส่วนหนึ่งที่ฉันเลือกไม่ได้มีลักษณะตามที่ฉันต้องการ ส่วนจะสว่างเมื่อจำเป็นบนเขียงหั่นขนม แต่กระแสไฟรั่วกระจายไปยังอีก 6 ส่วน ฉันตระหนักว่าหลอดไส้อาจไม่ใช่วิธีที่ควรไป หรือฉันจำเป็นต้องใช้ในวิธีที่ต่างไปจากนี้ เพื่อความง่าย ฉันได้ตรวจสอบ LED 7 เซ็กเมนต์ที่ฉันมีอยู่ว่าใช้งานได้กับบอร์ดทดลอง และสั่งจอแสดงผลแอโนดทั่วไป สิ่งที่สองที่ฉันต้องทำคือจัดวางการออกแบบและเริ่มทำงานกับโค้ด ภาพเป็นวงจรของฉัน ไม่มากนักเนื่องจากรหัสใน PIC ดูแลมัลติเพล็กซ์…เอ่อ Charlieplexing หมายเหตุ: จอแสดงผลทั้ง 6 จอมีบรรทัดเดียวกันจากไดรเวอร์ IC ตัวเลือก IC ช่วยให้แสดงผลได้ทีละ 1 ส่วน และ PIC จะอัปเดตบรรทัด 7 ส่วนตามลำดับ แนวคิดที่ง่ายมาก หลังจากนั้น โค้ดและฮาร์ดแวร์ที่จำเป็นทั้งหมดก็เพียงพอแล้ว รายการชิ้นส่วนหลังจากคำสั่งซื้อเล็กๆ 3 รายการจาก Digi-Key ขณะตัดสินใจเกี่ยวกับส่วนประกอบเฉพาะ ฉันมีทุกอย่างที่ต้องการ (มีของในมือ)1 ~3"x4 PCB6 สวิตช์ปุ่มกดขนาดเล็ก (NO) 1 74LS47, จอแสดงผล 7 ส่วน IC1 PIC16F627 1 CD4028, 1 จาก 10 ตัวเลือก IC 6 ตัวต้านทาน 10KOhm1 470Ohm ตัวต้านทาน1 spool of wire ฉันใช้สีและมาตรวัดต่างๆ แต่นั่นเป็นเพียงตัวฉันเอง1 78L05 5V regulator1 9V แบตเตอรี่ คลิป1 แบตเตอรี่ 9V1 สวิตช์ขนาดเล็ก (สำหรับเปิด/ปิด) ฉันคิดว่านี่เป็นโครงการที่ค่อนข้างซับซ้อนเนื่องจาก 1) ต้องใช้รหัสไมโครโปรเซสเซอร์ 2) การบัดกรีและ การทำ breadboarding 3) การเพิ่มประสิทธิภาพการออกแบบ ไม่มีปัญหาเหล่านี้โดยลำพังแล้วจะซับซ้อนเกินไป แต่การดำเนินการทั้งหมดโดยไม่มีประสบการณ์อาจช่วยอะไรได้มากสำหรับผู้เริ่มต้น ต้องใช้โปรแกรมเมอร์ฮาร์ดแวร์ในการเบิร์นอุปกรณ์ สถานีบัดกรี ฯลฯ … สิ่งแรกที่อาจมีคนสังเกตเห็นคือ LED 7 ส่วนไม่มีตัวต้านทานแบบอนุกรม (จำกัดกระแส)! ให้ฉันจัดการเรื่องนั้นอย่างรวดเร็วโดยระบุว่าการออกแบบดั้งเดิมของฉันมีพวกเขาใน…แต่อ่านขั้นตอนต่อไปสำหรับคำอธิบาย!

ขั้นตอนที่ 3: Breadboarding & Micro Code

เขียงหั่นขนมและไมโครโค้ด
เขียงหั่นขนมและไมโครโค้ด

Breadboard เป็นสิ่งจำเป็นสำหรับสิ่งนี้ แสดงให้เห็นว่าเป็นเขียงหั่นขนมทั่วไปของฉัน แต่สำหรับขนาดของโครงการนี้ จริง ๆ แล้วฉันใช้อันนี้และเขียงหั่นขนมที่เล็กกว่า เนื่องจากมีสายไฟจำนวนมากที่จำเป็นต้องเว้นระยะห่าง ก่อนอื่น ฉันทดสอบ LED 7 ส่วนเดียวโดยใช้โค้ดเริ่มต้น สิ่งนี้ยืนยันได้ 3 สิ่ง 1) การเดินสายไฟของ IC นั้นได้รับการตรวจสอบแล้วว่าดี!2) ทำให้ฉันปรับให้เหมาะสมและจบโค้ดของฉัน 3) ทำให้ฉันรู้ว่าฉันไม่ต้องการตัวต้านทานจำกัดกระแส!1 WIRINGตามที่ระบุไว้ พบการออกแบบแผนผังของฉัน เพื่อทำงานกับรหัสของฉัน เนื่องจาก LED จะวนไปตามตัวเลขโดยใช้สวิตช์ปุ่มกดเพียงปุ่มเดียว เพื่อตรวจสอบรหัสและเลย์เอาต์ของฉัน ไม่จำเป็นต้องใช้มากนัก แต่การทำ breadboarding ยืนยันว่าฉันอยู่ในสภาพดี2 เดิมที CODEI มีชุดรหัสของฉันที่มีรูทีนหลักในการสแกนหาปุ่มและ ISR (Interrupt Service Routine) แสดงตัวเลข หลังจากการทดสอบ breadboarding ฉันเปลี่ยนกิจวัตร ดังนั้นส่วนใหญ่จะแสดงตัวเลขอย่างต่อเนื่องและ ISR เพื่อตรวจสอบปุ่มต่างๆ เหตุผลที่ฉันทำเช่นนี้ก็เพื่อให้มีการแสดงผลคงที่ เนื่องจาก PIC ทำงานด้วยนาฬิกา 4Mhz ภายใน ฉันจึงเสียเวลาน้อยมากในการสแกนหาปุ่ม ไม่มีอะไรมาก…ขึ้นอยู่กับว่าคุณต้องการทำโค้ดอย่างไรและอะไรเหมาะสมที่สุดสำหรับแต่ละแอปพลิเคชัน สำหรับสิ่งนี้ การแสดงผลมีความสำคัญ ดังนั้นฉันจึงใส่สิ่งนั้นไว้ในรูทีนหลัก เมื่อชิ้นส่วนแรกของฉันมาถึง (จอแสดงผลทั้ง 6 จอ!) ฉันเดินสายไฟของเขียงหั่นขนมเสร็จแล้วและพบปัญหาอื่น เมื่อกดปุ่ม รหัสของฉันมีการลงทะเบียนเลอะเทอะที่ไม่ได้รับการล้างและ ISR ทำให้เกิดข้อบกพร่องในการแสดงผลเล็กน้อย;========================= ================================================= =====;เลี้ยวเคาน์เตอร์;; ------------;Dsply3 Dsply2;Dsply4 Dsply1;Led1 Led3; A5 |4 15| A6 - Led2; ปะทะ |5 14| Vdd;Button1 B0 |6 13| B7; B1 |7 12| บี6; B2 |8 11| บี5; B3 |9 10| บี4; -----------;; LED1-3 - BCD-ธ.ค. IC -LEDSeg's1-6; Dsply1-3 - BCD-7seg IC -Dsply#1-9;;================================== ============================================; ประวัติการแก้ไข & หมายเหตุ:; V1.0 ส่วนหัวเริ่มต้น รหัส 3/30/09;;;(C) 5/2009;รหัสนี้อาจใช้สำหรับการเรียนรู้/แอปพลิเคชัน/การปรับเปลี่ยนส่วนบุคคล;การใช้รหัสนี้ในผลิตภัณฑ์เชิงพาณิชย์ใดๆ ถือเป็นการละเมิดรุ่นฟรีแวร์นี้ สำหรับคำถาม/ความคิดเห็น โปรดติดต่อวงจร dot mage ที่ yahoo dot com.;------------------------------------------------ -------------------------------#รวม P16F627A. INC;============== ================================================= =================; กำหนด;------------------------------------------------ -------------------------------------;================== ================================================= ============; ข้อมูล;------------------------------------------------ -------------------------------------; ตัวแปรการรักษาเวลา count1 equ 20 count2 equ 21 dis1 equ 22dis2 equ 23dis3 equ 24dis4 equ 25dis5 equ 26dis6 equ 27w_temp equ 28status_temp equ 29ISRCNTR equ 2A;==================== ================================================= ========; รีเซ็ตเวกเตอร์;; ตรวจสอบการกำหนดค่า BITS ก่อนการเผาไหม้!!!; อินทอสค์; MCLR: เปิดใช้งาน; PWRUP: เปิดใช้งาน; อื่นๆ ทั้งหมด: ปิดการใช้งาน!!;;------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 org RESET_ADDR ไปที่เริ่มต้น;== ================================================= ===========================; ISR;;----------------------------------------------------------- --------------------------------org ISR_ADDR movwf w_temp swapf STATUS, w movwf status_temp;; ISR ที่นี่; ตรวจสอบสวิตช์ PB0-PB5 btfsc PORTB, 0; ตรวจสอบการโทร SW1 sw1debounce btfsc PORTB, 1; ตรวจสอบการโทร SW1 sw2debounce btfsc PORTB, 2; ตรวจสอบการโทร SW1 sw3debounce btfsc PORTB, 3; ตรวจสอบการโทร SW1 sw4debounce btfsc PORTB, 4; ตรวจสอบการโทร SW1 sw5debounce btfsc PORTB, 5; ตรวจสอบการโทร SW1 sw6debounce goto endisrsw1debounce call debounce; รอ 0.2 วินาที โทร debounce incf dis1; อัปเดตตัวนับ movf dis1, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0x1A; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'10'; ใช่ รีเซ็ตจอแสดงผล movwf dis1 returnw2debounce โทร debounce; รอ 0.2 วินาที โทร debounce incf dis2; อัปเดตตัวนับ movf dis2, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0x4A; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'40'; ใช่ รีเซ็ตจอแสดงผล movwf dis2 returnw3debounce โทร debounce; รอ 0.2 วินาที โทร debounce incf dis3; อัปเดตตัวนับ movf dis3, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0x5A; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'50'; ใช่ รีเซ็ตจอแสดงผล movwf dis3 returnw4debounce โทร debounce; รอ 0.2 วินาที โทร debounce incf dis4; อัปเดตตัวนับ movf dis4, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0x8A; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'80'; ใช่ รีเซ็ตจอแสดงผล movwf dis4 ส่งคืนw5debounce โทร debounce; รอ 0.2 วินาที โทร debounce incf dis5; อัปเดตตัวนับ movf dis5, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0x9A; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'90'; ใช่ รีเซ็ตจอแสดงผล movwf dis5 ส่งคืนw6debounce โทร debounce; รอ 0.2 วินาที โทร debounce incf dis6; อัปเดตตัวนับ movf dis6, W; ตรวจสอบโอเวอร์โฟลว์ xorlw 0xCA; 10 บน 7-seg? btfss สถานะ Z กลับ; ไม่ กลับไปที่การสแกน movlw h'C0'; ใช่ รีเซ็ตจอแสดงผล movwf dis6 returnendisr bcf INTCON, T0IF swapf status_temp, w movwf สถานะ swapf w_temp, f swapf w_temp, wretfie;============================ ================================================= =; เริ่มที่นี่!;---------------------------------------------- ---------------------------------เริ่ม; พอร์ตคอนฟิก I/O clrf PORTA movlw 0x07 movwf CMCON bcf STATUS, RP1 bsf STATUS, RP0 movlw h'00';RA Outputs, RA5 No output movwf TRISA bcf STATUS, RP0 clrf PORTB bsf STATUS' FFl RB อินพุต movwf TRISB; ตั้งเวลาภายใน bsf PCON, 3; ตั้งค่าเป็น 4Mhz movlw h'CF'; Tmr0 ซอร์สภายใน, พรีสเกล TMR0 1:256 movwf OPTION_REG movlw h'A0' movwf INTCON; เปิดใช้งานการขัดจังหวะ TMR0, bcf STATUS, RP0; เริ่มต้นการลงทะเบียน clrf PORTA; เคลียร์ PortA clrf PORTB; ล้างพอร์ตB ออก clrf count1 clrf count2 movlw h'10' movwf dis1 movlw h'40' movwf dis2 movlw h'50' movwf dis3 movlw h'80' movwf dis4 movlw h'90' movwf dis5 movlw movlw ดีเบต; 0.2 วินาที ทดสอบ LEDs แสดงผล 8 ???;===================================== =========================================; หลัก; รับอินพุตจากสวิตช์ debounces และการแสดงความผิด;;สิ่งนี้จะอัปเดตจอแสดงผล @4Mhz ด้วย TMR0 prescal 1:4 ที่อัตรา 1Khz;Display 0 ใช้เพื่อจัดสรรให้กับจอแสดงผลที่ไม่ได้ใช้ จอแสดงผล 1-6 เป็นแบบต่อสาย อย่างแรก BCD-7Seg IC ถูกโหลดด้วยค่าการแสดงผล และ BCD-Dec IC ถูกเปิดใช้งานสำหรับ;การเลือกการแสดงผล ประการที่สอง หน่วงเวลา ms ไว้สำหรับการแสดงผล สาม BCD-Dec IC ถูกปิดใช้งาน…display0 ถูกเลือกเพื่อปิดจอแสดงผล;;สิ่งนี้ถูกทำซ้ำสำหรับจอแสดงผลทั้ง 6 จอและวนซ้ำ;ISR จัดการการตรวจจับสวิตช์ที่อัตรา 15Hz;-------------- -------------------------------------------------- ---------------main;Disp1 movf dis1, 0 movwf PORTA call ledon goto main;====================== ================================================= =========; เลดอน; ตั้งเวลาเปิดเครื่อง LED; 6 จอแสดงผล -> 1/6 รอบการทำงานที่ 1Khz = 166 รอบ; ------------------------------------ --------------------------------------------------ledon movlw.54 movwf count1ledloop decfsz count1, F ไปที่ ledloopreturn;=========================================== ====================================; สัญญาณดีเบต; 4 รอบในการโหลดและโทร, 2 รอบเพื่อส่งคืน; 4Mhz Tc:: count2=255 -> 0.2 วินาที;-------------------------------------- ----------------------------------------- debounce movlw.255; หน่วงเวลา 1/5 วินาที debounce movwf count2 โทรกลับ pon_wait;------------------------------------------- ------------------------------------; count1=255d:: 775 รอบเป็น 0, + 3 รอบเพื่อส่งคืน;--------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1, F ไปที่ short_loopS decfsz count2, F goto big_loopSreturnend3 CIRCUITI เดิมมีตัวต้านทาน 470Ohm จากแต่ละบรรทัดไดรเวอร์การแสดงผลจาก 74LS47 และ CD4028 เปิดใช้งานบรรทัด อย่างไรก็ตาม ฉันทดสอบการวาดปัจจุบันของวงจรและพบว่ามีการดึงเพียง ~31mA และเนื่องจากไดรเวอร์จริงสำหรับจอแสดงผลนั้นมาจาก 74LS47 โดยตรง และเปิดใช้งานมาจาก IC อื่น ความต้องการเฉลี่ยและยอดสูงสุดอย่างรวดเร็ว และเอกสารข้อมูลที่เกี่ยวข้อง…..ฉันดึงตัวต้านทานออกจากเขียงหั่นขนมและพบความแตกต่าง 1mA ! ปรากฏว่าขับสาย CA โดยตรงจาก 4028 ในขณะที่ขับตรงทุกเซกเมนต์ก็โอเค! …ประเภท:) ฉันมีข้อผิดพลาดในรหัสของฉันซึ่งไม่ได้ล้างการลงทะเบียนของฉันเมื่อกดปุ่ม ทำให้หน้าจอสุดท้ายมี 2 ส่วนสว่างมากเมื่อกดปุ่ม สิ่งนี้ไม่ดี อย่างไรก็ตาม การล้างรีจิสเตอร์ช่วยแก้ไขปัญหานี้ได้ และการตรวจสอบพลังงานอย่างต่อเนื่องยืนยันว่ามีการดึงประมาณ 30mA อย่างต่อเนื่อง สิ่งนี้น่าจะให้ฉัน (จากประสบการณ์ก่อนหน้านี้กับวงจรที่คล้ายกัน) เวลาทำงานประมาณ 20 ชั่วโมงโดยใช้แบตเตอรี่ 1 9V (500mAH/30mAH ภายใต้การควบคุม 5V)…ฉันหวังว่า! ฉันตัดสินใจที่จะให้ LED ขับเคลื่อนโดยตรง แต่ใส่ไว้ในซ็อกเก็ต กรณีที่บางสิ่งบางอย่างเกิดขึ้นในระยะยาว

ขั้นตอนที่ 4: การบัดกรี PCB

บัดกรี PCB
บัดกรี PCB

ทุกครั้งที่ฉันมาถึงจุดนี้ในโครงการของฉัน ฉันจะล่าช้าเล็กน้อย ตอนแรกฉันกำลังจะพันสิ่งนี้ด้วยลวด แต่ก็ล้มเลิกความคิดนั้นไปอย่างรวดเร็ว ตอนแรกฉันคิดว่า "ลวดบัดกรีสองสามเส้น ไม่ใช่เรื่องใหญ่"…จากนั้น เมื่อถึงเวลาที่โปรเจ็กต์ของฉันจะบัดกรี ฉันก็คิดว่า " ฉันควรจะส่งออกไปเพื่อทำบอร์ดโปรโตหรือแกะสลักบอร์ดของตัวเอง" ฉันยังไม่ได้แกะสลัก PCB (ยัง) และไม่ต้องการจ่ายเงิน $$ เพื่อทำบอร์ดดังนั้น….ใช่…..ฉันใช้เวลาประมาณ 3 ชั่วโมงในการบัดกรีสิ่งนี้ มีสายไฟประมาณ 150 เส้น นั่นคือจุดบัดกรี 300 จุด บวกกับการตกแต่งสะพานบัดกรี อย่างไรก็ตาม นี่คือด้านหลังของกระดานตามภาพ….ใช่…ค่อนข้างจะเลอะเทอะ แต่เมื่อเสร็จแล้ว ฉันมีบัดกรีสั้นเพียง 1 เส้น. ใช้เวลาคิด 20 นาทีเนื่องจากหน้าจอแสดง # ผิด กำลังแสดงในรูปแบบตรรกะที่ฉันต้องถอดรหัส หลังจากนั้น ฉันก็เจอช็อตสั้นแล้ว แบม! มันทำงานได้อย่างสมบูรณ์

ขั้นตอนที่ 5: บทสรุป

บทสรุป
บทสรุป

มันได้ผล! โปรเจ็กต์นี้ใช้เวลาประมาณ 2 สัปดาห์ในการคิดและส่งอีเมลจุดที่ดีไปยังผู้ร้องขอ ~3 ชั่วโมงของการเติมโค้ดให้สมบูรณ์และการดีบัก ~4 ชั่วโมงของการทำ breadboarding และ debug ~3 ชั่วโมงของการบัดกรีโดยใช้เพียง 3 IC เป็นไปได้ที่จะ Charlieplex 6 7-segment LEDs การดึงกำลังไฟอยู่ที่ประมาณ 30mA ด้วยการออกแบบนี้ ซึ่งก็ไม่เลวถ้าฉันพูดอย่างนั้นเอง ฉันสงสัยว่าจะสามารถใช้ LED 7-segment มากกว่านี้ได้ แต่ยังไม่ได้ผลักซองจดหมาย แนวคิดนี้สามารถทำได้ นำไปใช้กับแอปพลิเคชันเกือบทุกชนิดโดยใช้ LED 7 ส่วน เทอร์โมมิเตอร์ นาฬิกา การแสดงข้อความ ฯลฯ ด้วยรหัสที่ซับซ้อน คุณสามารถมีหน้าจอเคลื่อนไหวหรือรูปภาพ…บางทีอาจเป็นฐานสำหรับโครงการ POV (ความคงอยู่ของการมองเห็น) การใช้งานขั้นสุดท้ายเหลือให้เพื่อนของฉันสร้างหอคอยของเขา และวางกระดานตามที่เห็นสมควร ถ้า/เมื่อเสร็จแล้วฉันจะได้อัปโหลดรูปภาพ แต่สำหรับวงจรนี่ดูเหมือนจะสร้างมาตามสั่ง!

แนะนำ: