สารบัญ:

ไฟสัญญาณมือจักรยาน: 10 ขั้นตอน (พร้อมรูปภาพ)
ไฟสัญญาณมือจักรยาน: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟสัญญาณมือจักรยาน: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไฟสัญญาณมือจักรยาน: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: 7 สัญญาณมือ จักรยาน ที่นักปั่นต้องรู้! | Training with Jack 2024, พฤศจิกายน
Anonim
ไฟสัญญาณมือจักรยาน
ไฟสัญญาณมือจักรยาน

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

หมายเหตุ: สิ่งนี้ต้องใช้ความรู้ก่อนหน้านี้เกี่ยวกับวิธีการประสานและแนวคิดในการเขียนโปรแกรม AVR นั้นเป็นประโยชน์อย่างมาก ด้วยเหตุนี้ ขอให้สนุก อดทน และโพสต์รูปภาพผลิตภัณฑ์ของคุณด้านล่าง! นี่คือวิดีโอ: และนี่คือภาพของฉัน:

ขั้นตอนที่ 1: อะไหล่

อะไหล่
อะไหล่

x1 ATmega 32L 8PU (www.digikey.com)x1 ซ็อกเก็ต DIP 40 พิน (www.digikey.com)x1 8x8 LED Array (www.sparkfun.com)x1 74138 De-multiplexer (www.digikey.com)x2 Flex Sensors (www.sparkfun.com)x(หลายตัว) ตัวต้านทาน 180 ohm และ 10k ohmx2 PC Board (www.sparkfun.com)x6 Standoffs (www.sparkfun.com) และสกรูให้พอดี (Local Hardware Store)x1 Accelerometer บน breakout board (www.sparkfun.com)x2 Headers - Male (www.sparkfun.com), Female (www.sparkfun.com) และ Right Angle (www.sparkfun.com)x1 LM7805 (www.digikey.com)x2 ช่องเสียบ 8 ขา (ฉันได้ของฉันที่ Radio Shack) x1 9v batteryx1 foot stick-on velcrox1 Full-fingered bike glovex1 spool polyester threadx1 Programmer (ฉันมีอันนี้) x1 Wire stripper และ clipx1 Multimeter บางส่วนของชิ้นส่วน:

ขั้นตอนที่ 2: เตรียมบอร์ด

เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด
เตรียมบอร์ด

ขั้นแรก ให้เพิ่มข้อขัดแย้ง คุณจะต้องขันสกรูสองตัวเข้าด้วยกันเพื่อให้ได้ความสูงที่เหมาะสม ตรวจสอบให้แน่ใจว่าจุดรองลดหลั่นลงมาจากด้านข้างด้วยแผ่นรอง SQUARE วิธีนี้คุณสามารถเชื่อมแผ่นอิเล็กโทรดด้วยการบัดกรีที่ด้านล่างและบริดจ์ด้วยแผ่นทั่วไปที่ด้านบนเพื่อเชื่อมต่อกับกราวด์ ถัดไปเพิ่มอาร์เรย์ LED และประสานเข้าไป ควรอยู่ไกลถึงขอบของบอร์ดโดยให้สแตนออฟทั้งสองข้างให้มากที่สุดเท่าที่จะทำได้โดยที่ YS หันไปทางฝั่งตรงข้าม หมุดที่ด้านล่างซ้ายคือพิน 1 (มีการทำเครื่องหมายไว้ที่รูปภาพด้วย) จากนั้นให้เพิ่มซ็อกเก็ต 8 พินสองตัวที่ด้านบนของอีกอันเพื่อสร้างซ็อกเก็ต 16 พินหนึ่งอัน ตรวจสอบให้แน่ใจว่ามีช่องว่างทางด้านซ้ายหนึ่งช่องแล้วประสานเข้าไป จากนั้นแยกส่วนหัวของตัวผู้และตัวเมียออกเป็นส่วน 10 และ 11 พิน คุณจะต้องมีส่วนหัวของเพศหญิงเป็นสองเท่า บัดกรีตามที่เห็นในภาพ สำหรับส่วนหัวของผู้ชาย คุณต้องเลื่อนหมุดเพื่อให้มีจำนวนเท่ากันในแต่ละด้านของพลาสติก ง่ายที่สุดที่จะดูภาพเพื่อดูว่าฉันหมายถึงอะไร ลองดู #6 ฉันใช้คีมและทำงานได้ดีทีเดียว ตอนนี้ ถ้าคุณเอาส่วนหัวของผู้ชายมาวางไว้ระหว่างส่วนหัวของตัวเมีย 2 ตัว คุณจะเห็นว่าตอนนี้มีขนาดเหมาะสมที่จะเชื่อมต่อบอร์ดด้านบนและด้านล่างเข้าด้วยกัน

ขั้นตอนที่ 3: เพิ่มตัวต้านทาน

เพิ่มตัวต้านทาน
เพิ่มตัวต้านทาน
เพิ่มตัวต้านทาน
เพิ่มตัวต้านทาน
เพิ่มตัวต้านทาน
เพิ่มตัวต้านทาน

ตัวต้านทานเหล่านี้อยู่ระหว่างอาร์เรย์ LED และ 74138 (กราวด์) เพื่อป้องกันอาร์เรย์ พับลีดตัวใดตัวหนึ่งจากตัวต้านทานด้านบนเพื่อให้ลีดทั้งสองขนานกัน ติดตั้งเข้ากับหมุด 7, 9, 10, 11, 12, 13, 14 และ 15 และบัดกรี ฉันพบว่ามันจะทำงานได้ดีที่สุดหากคุณเปลี่ยนทิศทางของตัวต้านทานดังที่คุณเห็นในภาพที่สองและสาม

ขั้นตอนที่ 4: ต่อสายด้านบน

ลวดด้านบน
ลวดด้านบน
ลวดด้านบน
ลวดด้านบน
ลวดด้านบน
ลวดด้านบน
ลวดด้านบน
ลวดด้านบน

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

ขั้นตอนที่ 5: เติมด้านล่าง

เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง
เติมด้านล่าง

ตอนนี้ได้เวลาวางส่วนประกอบพื้นฐานของเราไว้บนกระดานด้านล่าง ขั้นแรก เราจะทำซ็อกเก็ต DIP 40 พิน ซึ่งเข้าใกล้ด้านซ้ายบนให้มากที่สุดเท่าที่จะทำได้ โดยเว้นที่ว่างไว้หนึ่งแถวทางด้านซ้าย (ดูรูปที่ #1.) ประสานเข้าแล้ววางส่วนหัว วิธีที่ง่ายที่สุดในการทำเช่นนี้คือเชื่อมต่ออันที่อยู่ด้านบนกับอันที่จะอยู่ด้านล่างโดยใช้ส่วนหัวของผู้ชายที่ดัดแปลง หากคุณทำทุกอย่างถูกต้องแล้ว คุณควรลงเอยด้วยหมุดสามตัวบนสามตัวที่ส่วนหัวด้านซ้าย ถัดจากหมุดด้านล่างขวาของซ็อกเก็ต นี้ก็โอเค เราใช้หมุดด้านล่างสุดทางด้านขวาเท่านั้น และอย่างที่คุณเห็น เรามีการยิงที่ชัดเจนจากอีกทิศทางหนึ่ง ตอนนี้เพิ่มตัวควบคุมแรงดันไฟฟ้าตามที่แสดงในภาพ ฉันยึดของฉันผ่านรูในฮีตซิงก์โลหะด้วยสกรูและน๊อต ฮีตซิงก์เป็นอีกวิธีหนึ่งในการกราวด์ชิปและการโบลต์เข้ากับบอร์ดทำให้ได้สัมผัสที่แน่นหนากับการเชื่อมต่อทั่วไป สิ่งนี้เชื่อมต่อกับด้านล่างและด้านบนเนื่องจากทั้งสองเชื่อมต่อกับส่วนที่เป็นโลหะ อย่างไรก็ตาม หากคุณไม่ได้ใช้การเชื่อมต่อทั่วไปสำหรับกราวด์ อย่าขันฮีตซิงก์เข้ากับบอร์ดเนื่องจากฮีตซิงก์ทำหน้าที่เป็นกราวด์ และคุณอาจจะลัดวงจรบางสิ่งได้ ต่อไปลวดในคลิปแบตเตอรี่ สีแดงไปที่พินทางด้านซ้าย (โดยที่ฮีตซิงก์ขึ้นและพินลง) สีดำที่ตรงกลางและพินด้านขวาจะสร้าง +5v ตอนนี้คุณสามารถต่อสายไฟไปที่ด้านบน (ดูรูปที่ 2) ตอนนี้สำหรับตัวเชื่อมต่อโปรแกรมเมอร์ ฉันมีอะแดปเตอร์ที่ฉันสร้างขึ้นสำหรับโปรแกรมเมอร์ของฉัน แต่คุณอาจต้องการรวมส่วนหัว 6 พิน (3x2) เข้ากับการออกแบบของคุณ อย่างไรก็ตาม หากคุณมีอะแดปเตอร์อย่างฉัน นี่คือสิ่งที่ฉันทำ ฉันเอาส่วนหัวมุมฉากกับส่วนหัวของตัวเมียมาบัดกรีเข้าด้วยกัน (รูปภาพ #3) จากนั้นฉันก็ติดมันเข้ากับบอร์ดโดยที่พินแรกที่เชื่อมต่อกับพิน 6 ตอนนี้คุณต้องจ่ายไฟและกราวด์ชิปรวมถึงการเดินสายในตัวต้านทานเพื่อดึงการรีเซ็ตให้สูง ฉันรันตัวต้านทาน 10k จากพิน 9 ถึงพิน 10 จากนั้นเชื่อมต่อพิน 10 ถึง +5v พินถัดไป (11) ไปที่การเชื่อมต่อทั่วไป (กราวด์) สุดท้ายดูภาพ #4 เพื่อเสร็จสิ้นขั้นตอนนี้ (มันค่อนข้างอธิบายตัวเอง)

ขั้นตอนที่ 6: ต่อสายด้านล่าง

ลวดด้านล่าง
ลวดด้านล่าง
ลวดด้านล่าง
ลวดด้านล่าง
ลวดด้านล่าง
ลวดด้านล่าง

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

ขั้นตอนที่ 7: เซ็นเซอร์แบบยืดหยุ่นและมาตรความเร่ง

เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง
เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง
เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง
เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง
เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง
เซนเซอร์แบบยืดหยุ่นและมาตรความเร่ง

เราจะจัดการกับเซ็นเซอร์แบบยืดหยุ่นก่อน แต่คุณพร้อมเสมอเมื่อฮาร์ดแวร์ดำเนินไป ฉันคิดว่ารูปภาพด้านล่างอธิบายได้ดีว่าต้องทำอะไร เชื่อมต่อหนึ่งพินกับ +5v อีกพินหนึ่งเข้ากับพินที่สามหรือสี่จากด้านบนทางด้านขวาของ AVR (ไมโครคอนโทรลเลอร์ที่เป็นหัวใจของโปรเจ็กต์นี้) เมื่อฉันรวมสิ่งนี้เข้าด้วยกันครั้งแรก ฉันคิดว่านั่นคือทั้งหมดที่ฉันต้องทำ แต่ปรากฎว่าเพื่อให้ AVR อ่านเซ็นเซอร์แบบยืดหยุ่น คุณต้องใส่ตัวต้านทานจากพินบนเซ็นเซอร์ไปที่ AVR ลงกราวด์ (ดูรูปที่ # 10 และ 11) ผมใช้ 10k สิ่งนี้แบ่งแรงดันไฟฟ้าที่ส่งไปยัง AVR ซึ่งเพิ่มความไวของเซ็นเซอร์เป็นสองเท่า ตอนนี้สำหรับมาตรความเร่ง เนื่องจากมาตรความเร่งเป็นเพียงเส้นผมที่สูงกว่าช่องว่างระหว่างกระดานทั้งสอง และเนื่องจากเราอาจต้องการเปลี่ยนมันสักวันหนึ่ง ฉันจึงตัดสินใจใช้ส่วนหัวเพื่อกระแทกออกจากบอร์ดและเชื่อมต่อ ใช้ส่วนหัวมุมฉากเพื่อเชื่อมต่อกับ 6 พินบนกระดานฝ่าวงล้อม ตอนนี้ใช้ส่วนหัวมุมฉากอีกอันแล้วประสานส่วนหัวของตัวเมียเข้ากับหมุดสั้น ๆ จากนั้นบัดกรีที่ด้านล่างซ้ายของบอร์ดของคุณ เสียบมาตรวัดความเร่งเพื่อให้แน่ใจว่าพอดี ถอดปลั๊ก จากนั้นเชื่อมต่อพินที่เหมาะสมกับ Vcc (+5v) และ Gnd จากนั้นเชื่อมต่อพินเอาต์พุต X กับพิน 40 และ Y กับพิน 39 ตอนนี้คุณควรตั้งค่าให้เพิ่ม IC (วงจรรวม) และเปิดเครื่อง

26 ธันวาคม 2552: ฉันพบว่าวิธีที่ฉันติดตั้งเซ็นเซอร์งอนิ้วชี้ทำให้วัสดุที่เชื่อมต่อเซ็นเซอร์กับหมุดเสื่อมสภาพ ฉันได้ซื้อเซ็นเซอร์สำรองและติดแผ่นพลาสติกบางๆ กับเซ็นเซอร์ด้วยความร้อนเพื่อป้องกันไม่ให้บริเวณนี้เป็นส่วนที่ทำให้เกิดการโค้งงอมากที่สุด ฉันได้แท็กสถานที่ในภาพด้านล่าง

ขั้นตอนที่ 8: การเพิ่ม IC และโปรแกรมแรก

การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก
การเพิ่ม IC และโปรแกรมแรก

นี่น่าจะเป็นขั้นตอนที่ง่ายที่สุดของกระบวนการทั้งหมด อีกครั้งที่ภาพช่วย ตรวจสอบให้แน่ใจว่าคุณมีชิปอย่างถูกต้องตามที่อธิบายไว้ในรูปภาพ #3 ก่อนอื่นฉันจะเชื่อมต่อพลังงานโดยไม่มีอะไรเชื่อมต่อและแตะแผงระบายความร้อนบนตัวควบคุมแรงดันไฟฟ้า ถ้ามันร้อน แสดงว่ามีบางอย่างขาดหายไป และคุณต้องกลับไปตรวจสอบการเชื่อมต่อของคุณ ดำเนินการด้วยวิธีนี้ โดยเพิ่มทีละชิป โดยรู้สึกถึงความร้อน และเมื่อทุกอย่างอยู่ในนั้นแล้ว ขันน็อตบนกระดานด้านล่างให้แน่นเพื่อให้บอร์ดทั้งสองยึดเข้าด้วยกันอย่างแน่นหนา ต่อไปคุณจะตั้งโปรแกรม AVR หากคุณไม่เคยทำเช่นนี้มาก่อน การค้นหาโดย Google อย่างรวดเร็วจะให้ผลลัพธ์มากมาย ถ้าฉันเป็นคุณ ฉันจะวาง AVR ไว้บนเขียงหั่นขนมและตั้งโปรแกรมไว้ที่นั่นก่อนที่คุณจะพยายามทำงานหนักของคุณ ฉันเขียนโปรแกรมง่ายๆ เพื่อส่งข้อมูลที่ได้รับจากเซ็นเซอร์แบบยืดหยุ่นไปยังอาร์เรย์ LED สิ่งนี้ควรให้แนวคิดพื้นฐานแก่คุณว่าอะไรคืออะไรและไม่ทำงานในวงจรของคุณ นี่คือวิดีโอของโค้ดที่ใช้งานจริง……และนี่คือรหัส: #define F_CPU 800000UL#include #include #include void ADCINIT(){ ADMUX = 0b01100000; ADCSRA = 0b10000000;}int หลัก (){ int a; ก = 0; int ข; ข = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT(); ในขณะที่ (1) { ADMUX = 0b01100011; ADCSRA |= 0b01000000; ในขณะที่(bit_is_clear(ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _delay_ms(1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA |= 0b01000000; ในขณะที่(bit_is_clear(ADCSRA, ADIF)); ปอร์ตา = 0b11100000; PORTB = ADCH; _delay_ms(1); PORTB = 0x00; }}

ขั้นตอนที่ 9: การแนบ Circut ของคุณเข้ากับถุงมือ

การแนบ Circut ของคุณเข้ากับถุงมือ
การแนบ Circut ของคุณเข้ากับถุงมือ
การแนบ Circut ของคุณเข้ากับถุงมือ
การแนบ Circut ของคุณเข้ากับถุงมือ
การแนบ Circut ของคุณเข้ากับถุงมือ
การแนบ Circut ของคุณเข้ากับถุงมือ

ฉันคิดว่ามีหลายวิธีที่จะแนบวงจรของคุณไว้กับมือ และครู่หนึ่งคิดว่าฉันจะปล่อยให้มันขึ้นอยู่กับผู้อ่าน แต่แล้วตัดสินใจว่าคำแนะนำจะไม่สมบูรณ์หากไม่มีการปิดนี้ ฉันไปที่ร้านจักรยานในพื้นที่ของฉันและ ได้ถุงมือเต็มนิ้วที่ถูกที่สุดที่ฉันหาได้ ต้องใช้นิ้วเต็ม เพราะไม่เช่นนั้น คุณจะไม่สามารถติดเซ็นเซอร์แบบยืดหยุ่นได้ดีนัก จากนั้นฉันก็ไปที่ร้านขายผ้าและได้เส้นด้ายโพลีเอสเตอร์และเวลโครแบบติด ฉันสวมถุงมือและวางวงจรไว้ในมือ ส่วนหนึ่งของการวางตำแหน่งคือความสบาย แต่อีกส่วนหนึ่งคือเซ็นเซอร์แบบยืดหยุ่น พวกเขาควรจะลงไปตรงกลางของสองนิ้ว ฉันเย็บห่วงรอบสาม standoffs เพื่อยึดกระดานหลักไว้ (ดูรูปที่ 2) จากนั้นทำลูปหลวม 3/4 ของนิ้วเซ็นเซอร์งอแต่ละนิ้ว (#3 และ 4) ตรวจสอบให้แน่ใจว่าคุณไม่ได้เย็บถุงมือปิด ต่อไปฉันติดเวลโครชิ้นหนึ่งไว้ที่ด้านข้างของนิ้วหัวแม่มือเพื่อเก็บแบตเตอรี่ ฉันพบว่าหลังจากการทดสอบว่ามันคุ้มค่ามากที่จะเย็บมันด้วยเพราะไม้มีอายุการใช้งานไม่นานเกินไป ต่อไปฉันใส่เวลโครวนรอบ 9v (ภาพที่ 5) การตั้งค่านี้ดูเหมือนจะทำงานได้ดีทีเดียว ดังที่คุณเห็นในภาพในสไลด์แรกและสไลด์สุดท้าย ตอนนี้ฉันได้เพิ่มปลอกหุ้มสำหรับเซ็นเซอร์แบบยืดหยุ่นแล้ว แต่หากคุณไม่มีเวลา ลูปก็ควรทำได้ เมื่อคุณทำโปรเจกต์เสร็จแล้ว โปรดโพสต์รูปถ่ายของผลิตภัณฑ์ที่ทำเสร็จแล้ว ด้านล่าง. ฉันชอบที่จะดูว่าคุณคิดอย่างไรในการต่อวงจร!

ขั้นตอนที่ 10: รหัสจริง

รหัสจริง
รหัสจริง

ขอบคุณที่อดทนกับฉันมาจนถึงตอนนี้ โปรดทราบว่ารหัสของฉันไม่สมบูรณ์แบบ ฉันพบว่าต้องใช้เวลาเรียนรู้เล็กน้อยเพื่อให้สัญญาณทำงานได้อย่างถูกต้อง ฉันจะพยายามทำให้ระบบของฉันสมบูรณ์แบบต่อไปและจะอัปเดตหน้านี้ด้วยรหัสใหม่เมื่อฉันเขียนมัน 26 ธันวาคม 2552: รหัสใหม่! มันโพสต์ว่ารหัสเก่าอยู่ที่ไหน ขอบคุณมากที่จาคอบสำหรับการทำให้เข้าใจง่าย มันทำงานได้ดีจริงๆ นี่มัน. ขอบคุณสำหรับการอ่านและอย่าลืมโหวต! #include #include #include // เซ็ตหรือล้างบิตในรีจิสเตอร์ #define setBit(sfr, bit) (sfr |= (1 << bit)) #define clearBit(sfr, bit) (sfr &= ~(1 << บิต)) #define flipBit(sfr บิต) (sfr ^= (1 << บิต)) #define FALSE 0 #define TRUE 1 #define matrixX(x) (PORTA = (x - 1) << 5) #define matrixGY (y) (PORTD = y) #define matrixRY (y) (PORTB = y) ความล่าช้าเป็นโมฆะ (การหน่วงเวลา int ที่ไม่ได้ลงนาม) { int ที่ไม่ได้ลงนาม x = 0; ในขณะที่ (x <ล่าช้า) { x++; } } โมฆะ initMatrix () { DDRD = 0xFF; // ตัวควบคุมสีเขียว DDRB = 0xFF; // ตัวควบคุมสีแดง DDRA = 0xE0; // การควบคุมภาคพื้นดิน } เป็นโมฆะ matrixRowDraw (ถ่าน greenmask, ถ่านสีแดง, คอลัมน์ถ่าน) { matrixX (คอลัมน์); int ผม = 0; สำหรับ (i = 0; i <8; i++) { matrixGY(greenmask & (1 << i)); matrixRY(หน้ากากสีแดง & (1 << i)); _delay_us(150); } matrixGY(0x00); เมทริกซ์RY(0x00); } เป็นโมฆะ matrixLeft() { matrixRowDraw(0x10, 0, 1); matrixRowDraw(0x20, 0, 2); matrixRowDraw(0x40, 0, 3); matrixRowDraw(0xFF, 0, 4); matrixRowDraw(0xFF, 0, 5); matrixRowDraw(0x40, 0, 6); matrixRowDraw(0x20, 0, 7); matrixRowDraw(0x10, 0, 8); } โมฆะ matrixRight () { matrixRowDraw (0x18, 0, 1); matrixRowDraw(0x18, 0, 2); matrixRowDraw(0x18, 0, 3); matrixRowDraw(0x18, 0, 4); matrixRowDraw(0x99, 0, 5); matrixRowDraw(0x5A, 0, 6); matrixRowDraw(0x3C, 0, 7); matrixRowDraw(0x18, 0, 8); } โมฆะ adcInit () { ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (ถ่านจัง) { ADMUX = 0x60 | ชาน; ADCSRA |= 0x40; ในขณะที่(bit_is_clear(ADCSRA, ADIF)); ส่งคืน ADCH; } char adcAvg (char chan, char avgnum) // เฉลี่ยเพียง 256 ตัวอย่างเท่านั้น { int i = 0; รวม int ที่ไม่ได้ลงนาม = 0; สำหรับ (i = 0; i < avgnum; i++) { รวม += adcGet (chan); } ผลตอบแทนรวม/เฉลี่ย; } int main() { initMatrix(); adcInit(); while(1) { while(adcAvg(3, 50) > 0x45 & adcAvg(2, 50) > 0x70) // ค่าฐานสิบหกที่นี่ควรเปลี่ยนขึ้นอยู่กับการตั้งค่าของผู้ใช้เพื่อกำหนดความไวของเซ็นเซอร์แบบยืดหยุ่น { ถ้า (adcAvg (1, 50) > 0x4F) { matrixRight (); } ถ้า (adcAvg (1, 100) < 0x4F) { matrixLeft (50); } } } คืนค่า 0; } ขอขอบคุณเป็นพิเศษสำหรับ Chamberlains พ่อแม่และเพื่อน ๆ ของฉันที่ช่วย

ผู้เข้ารอบสุดท้ายในการแข่งขัน Homemade Holidays Contest

แนะนำ: