สารบัญ:

อินเทอร์เฟซ PIC Dialer แบบหมุน: 7 ขั้นตอน
อินเทอร์เฟซ PIC Dialer แบบหมุน: 7 ขั้นตอน

วีดีโอ: อินเทอร์เฟซ PIC Dialer แบบหมุน: 7 ขั้นตอน

วีดีโอ: อินเทอร์เฟซ PIC Dialer แบบหมุน: 7 ขั้นตอน
วีดีโอ: ชุดเครื่องมือ Redux + RTK Query ฉบับสมบูรณ์สำหรับผู้เริ่มต้น | รีดักซ์ใน 2 ชั่วโมง! 2024, กรกฎาคม
Anonim
อินเทอร์เฟซ PIC Dialer แบบหมุน
อินเทอร์เฟซ PIC Dialer แบบหมุน

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

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

ขั้นตอนที่ 1: ไปรับสิ่งของ

ไปรับของ
ไปรับของ

คุณจะต้องการ:1 - โทรศัพท์แบบหมุน3 - ตัวต้านทาน 220 โอห์ม2 - ตัวเก็บประจุ 0.1uF 2 - ตัวต้านทาน 20K (สามารถทดแทนอะไรก็ได้ระหว่าง 10K ถึง 47K)2 - LED1 - บอร์ดพัฒนา PIC (ฉันใช้สภาพแวดล้อมการพัฒนา Basic Micro) 1 - 20 MHZ resonator หรือคริสตัล1 - เขียงหั่นขนม1 - แหล่งพลังงาน 5V1 - ปลายสายเชื่อมต่อ 1 - ไขควง1 - ที่ปอกสายไฟ

ขั้นตอนที่ 2: ผ่าโทรศัพท์

ผ่าโทรศัพท์
ผ่าโทรศัพท์
ผ่าโทรศัพท์
ผ่าโทรศัพท์
ผ่าโทรศัพท์
ผ่าโทรศัพท์

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

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

ขั้นตอนที่ 3: กำหนดว่าสายไฟทำอะไร

กำหนดว่าสายไฟทำอะไร
กำหนดว่าสายไฟทำอะไร
กำหนดว่าสายไฟทำอะไร
กำหนดว่าสายไฟทำอะไร

ต่อสายไฟ LED สองดวงตามที่แสดงในแผนภาพด้านล่าง

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

ขั้นตอนที่ 4: เชื่อมต่อ Dialer กับชิป PIC

เชื่อมต่อ Dialer กับชิป PIC
เชื่อมต่อ Dialer กับชิป PIC
เชื่อมต่อ Dialer กับชิป PIC
เชื่อมต่อ Dialer กับชิป PIC

เชื่อมต่อแป้นหมุนหมายเลขเข้ากับชิป PIC ตามที่เห็นในแผนภาพ สังเกตว่าฉันกำลังอ่านสถานะของแป้นหมุนโดยใช้ RC-timing กล่าวอีกนัยหนึ่ง ชิป PIC กำลังนับจำนวนครั้งที่ตัวเก็บประจุใช้ในการคายประจุ (ซึ่งจะเปลี่ยนแปลงเมื่อมีการเพิ่มความต้านทาน)

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

ขั้นตอนที่ 5: รวบรวมรหัส

รวบรวมรหัส
รวบรวมรหัส

ในการตั้งโปรแกรมชิป ฉันใช้สภาพแวดล้อมการพัฒนา MBasic จาก Basic Micro MBasic ค่อนข้างง่าย เป็นรูปแบบของ Basic ที่ออกแบบมาเพื่อใช้กับชิป PIC สามารถแปลงเป็นภาษาสากล (มีประโยชน์) ได้ง่ายขึ้น รหัสเป็นตัวกำหนดโดยพื้นฐานแล้วเมื่อมีคนหมุนแป้นหมุน จากนั้นทำการตรวจจับขอบของสัญญาณ (กำหนดช่วงการเปลี่ยนภาพต่ำ-สูง) จนกว่าแป้นหมุนจะกลับสู่สถานะเริ่มต้น หลังจากนับจำนวนครั้งที่วัดการเปลี่ยนแปลงของสัญญาณแล้ว ไฟ LED จะกะพริบตามลำดับ ตัวอย่างเช่น หากคุณหมุนหมายเลข 3 PIC จะนับช่วงการเปลี่ยนภาพต่ำ-สูงสามครั้ง จากนั้นไฟ LED จะกะพริบ 3 ครั้ง LED อย่างที่คุณอาจอนุมานได้ ไม่จำเป็นสำหรับสิ่งนี้เพื่อใช้งาน และอยู่ที่นั่นเพื่อให้คุณเห็นข้อเสนอแนะที่มองเห็นได้ คุณสามารถเปลี่ยนอุปกรณ์ส่งออกใด ๆ ที่คุณเห็นว่าจำเป็น *********************นี่คือรหัสบางส่วน:************************CPU = 16F877MHZ = 20CONFIG 16254clicker var wordstartcountin var wordcountclicks var wordrepvar var wordclacker var wordlargefig var wordmain:countclicks = 0repvar = 0'sets/resetsvalueshigh B2rctime B2, 1, startcountincountclicks = 0if startcountin > 10 จากนั้นให้ไปที่การนับจำนวนการตรวจสอบ ไปที่รูทีนย่อยถ้ามัน hasgoto main'===============countmeup:high B1rctime B1, 1, clacker'sets comparison valuegoto countmeuploop'=========== =====countmeuploop:high B1rctime B1, 1, clicker'checks counting valuelargefig = clacker + 100' ตั้งค่าสำหรับขีดจำกัดที่จะมากกว่า '0 แต่น้อยกว่าค่า pin-high ที่เป็นไปได้ถ้า bigfig < clicker thencountclicks = countclicks + 1endif'เพิ่ม 1 ค่าทุกครั้งที่บันทึกการเปลี่ยนแปลงจากต่ำไปสูงสูง B2rctime B2, 1, startcountinif startcountin < 10 จากนั้นหากนับคลิก > 0 จากนั้นไปที่การกะพริบตาหลักendifendif'ตรวจสอบเพื่อดูว่าแป้นหมุนกลับมาที่ i หรือไม่ สถานะ nitial'ถ้ามีและโทรออกจำนวนหนึ่งจะไปที่รูทีน LED' มิฉะนั้นถ้าไม่มีการโทรออกมันจะไปที่ maincracker = clicker'รีเซ็ตค่าเปรียบเทียบกับค่าพินปัจจุบันไปที่ countmeuploop'no หยุดเลยในรูทีนนี้ !'================blinker:repvar = repvar + 1'counts การทำซ้ำของรูทีนแต่ละครั้งสูง B3pause 1000low B3pause 1000'blinks LEDif repvar = countclicks thenrepvar = 0goto mainendif'if การทำซ้ำเท่ากับจำนวนครั้งที่ไฟ LED ควรกะพริบจากนั้นจะกลับไปที่ไฟกระพริบหลักตามปกติ

ขั้นตอนที่ 6: การทดสอบ

การทดสอบ
การทดสอบ

หากคุณทำทุกอย่างเหมือนกับฉัน มันน่าจะได้ผล (ดูวิดีโอ)

หากไม่ได้ผล ตรวจสอบให้แน่ใจว่าคุณต่อสายทุกอย่างถูกต้องและคัดลอกรหัสอย่างถูกต้อง ตรวจสอบให้แน่ใจด้วยว่าเรโซเนเตอร์ (หรือคริสตัล) ของคุณคือ 20 MHZ หากคุณเขียนโค้ดของคุณเอง ตรวจสอบให้แน่ใจว่าไม่มีการหยุดชั่วคราวในรูทีนที่ตรวจสอบการเปลี่ยนช่วงต่ำ-สูง

ขั้นตอนที่ 7: ไปไกลกว่านั้น

ล่วง
ล่วง

พิจารณาการใช้งานอื่น ๆ สำหรับแป้นหมุนแบบหมุนนอกเหนือจากการกะพริบไฟ LED

แนะนำ: