เราตั้งโปรแกรม LED บนโทรศัพท์ ไฟ LED แสดงสถานะมีไว้เพื่ออะไร? สถานะนำในโทรศัพท์สิ้นเชิงคืออะไร

ไม่อนุญาตให้คุณเปิด/ปิดไฟ LED หรือแฟลชกล้องโดยตรง โทรศัพท์บางรุ่นมีตัวเลือกนี้

วิธีกระพริบไฟหลากสีโดยทางโปรแกรมวิธีเขียน "ไฟฉาย" ของคุณเองหรืออุปกรณ์ LED อื่น ๆ ที่สามารถควบคุมได้ - คุณจะได้เรียนรู้เกี่ยวกับสิ่งนี้ด้านล่าง

ทุกอย่างเริ่มต้นขึ้นเมื่อขณะสำรวจระบบไฟล์ของ HTC Desire ของฉันโดยใช้ ES Explorer ฉันบังเอิญไปเจอไดเร็กทอรีที่น่าสนใจ: /sys/class/leds/blue, /sys/class/leds/flashlight ฯลฯ
สีฟ้าอะไรอีก! ฉันเห็นเพียงตัวบ่งชี้สีส้มและสีเขียว แต่สิ่งที่น่าสนใจที่สุดคือภายในไดเร็กทอรีเหล่านี้มีไฟล์ความสว่างที่มีสิทธิ์เขียน! ซึ่งฉันก็ใช้ประโยชน์ได้ทันที

อันที่จริงนี่ไม่ใช่ไฟล์ธรรมดา แต่เป็นอินเทอร์เฟซสำหรับการทำงานกับไดรเวอร์ LED ดังนั้น โดยการเขียนจำนวนบวกลงในไฟล์ /sys/class/leds/blue/brightness เราจะเปิดตัวบ่งชี้สีน้ำเงินบนตัวเครื่อง โดยการเขียน 0 จะเป็นการปิดเครื่อง เช่นเดียวกับตัวบ่งชี้สีเหลืองและสีเขียว เมื่อเปิดไฟ LED สองดวงพร้อมกัน เราจะได้สีใหม่: อำพัน + น้ำเงิน = ม่วง; เขียว + น้ำเงิน = น้ำ

ตอนนี้มันโปรแกรมทั้งหมดยังไงบ้าง?
โมฆะสาธารณะ ledControl (ชื่อสตริง, ความสว่าง int) (

พยายาม (

FileWriter fw = FileWriter ใหม่ ("/sys/class/leds/" + ชื่อ + "/ ความสว่าง" );

fw.write(จำนวนเต็มtoString(ความสว่าง));

fw.ปิด();

) จับ (ข้อยกเว้น e) (

// ไม่สามารถใช้การควบคุม LED ได้

}

}


// เปิดไฟสัญญาณสีม่วง

ledControl("สีเหลืองอำพัน" , 255 );

ledControl("สีน้ำเงิน" , ​​255 );


// ทำให้หน้าจอมืดลง

ledControl("แสงไฟหลังจอ LCD" , 30 );


// ปิดไฟแบ็คไลท์ของปุ่ม

ledControl("ปุ่มแบ็คไลท์" , 0 );


// จัดไฟฉายให้ความสว่างปานกลาง

ledControl("ไฟฉาย" , 128 );

สามารถดาวน์โหลดตัวอย่างแอปพลิเคชันพร้อมซอร์สโค้ดได้

บทสรุป
ทั้งหมด! ตอนนี้โทรศัพท์สว่างขึ้นเหมือนต้นคริสต์มาส รหัสนี้ได้รับการทดสอบบน HTC Desire ที่ใช้ Android 2.2 เท่านั้น แต่น่าจะใช้ได้กับอุปกรณ์อื่นๆ เขียนถึงฉันว่าโฟกัสจะทำงานหรือไม่บนโทรศัพท์ของคุณ

แสดงสัญลักษณ์บนกระดานคะแนน นาฬิกาอิเล็กทรอนิกส์ และอื่นๆ อีกมากมาย ไฟ LED คือการออกแบบที่เรียบง่ายซึ่งแสดงตัวอักษรหรือสัญลักษณ์ โครงสร้างเป็นชุดประกอบของไฟ LED โดยแต่ละองค์ประกอบจะส่องสว่างด้วยไฟแสดงส่วนป้าย

คุณสมบัติและประเภทของการออกแบบ

ไฟ LED ประกอบด้วยวงจรรวมที่แสดงข้อมูลต่างๆ แรงดันไฟฟ้าใช้งานอยู่ระหว่าง 2V ถึง 8V พวกเขาอาจจะเป็น:

แบ่งส่วน;
- เมทริกซ์;
- สเกลเชิงเส้น
- เดี่ยว

พันธุ์แรกใช้บ่อยที่สุดและเป็นชนิดมาตรฐาน โครงสร้างสามารถประกอบได้จากกลุ่มเจ็ดส่วน 1-4 กลุ่ม ทั้งนี้ขึ้นอยู่กับรุ่น ขนาดของวัตถุและจำนวนอักขระที่แสดงจะขึ้นอยู่กับจำนวน ดังนั้นกลุ่มเจ็ดส่วนหนึ่งกลุ่มจะแสดงตัวเลขหรือตัวอักษรเพียงตัวเดียวเท่านั้น มีการใช้สี่กลุ่มในนาฬิกาอิเล็กทรอนิกส์ เมื่อเลือกวงจรสำหรับใช้ในบ้านผู้ซื้อควรใส่ใจกับการมีขั้วบวกและแคโทดทั่วไป
นอกจากตัวชี้วัดเล็กๆ แล้ว ยังมีตัวชี้วัดที่สามารถมองเห็นได้ในที่สาธารณะอีกด้วย เพื่อเพิ่มความสว่าง มีการใช้ไฟ LED ที่เชื่อมต่อตามลำดับซึ่งติดตั้งอยู่ในแต่ละส่วนประกอบ เพื่อให้ตัวบ่งชี้แสดงตัวเลขหรือสัญลักษณ์ต้องใช้แรงดันไฟฟ้า 11.2 โวลต์ องค์ประกอบต่างๆ มีชื่อเป็นของตัวเอง: A, B, C, D, F หรือ G การดำเนินการนี้เกิดจากการรีจิสเตอร์และตัวถอดรหัสกะดิจิทัล

การเข้ารหัสข้อมูลและวงจรรวม

องค์ประกอบดังกล่าวได้รับการติดตั้งบนบอร์ดที่ควบคุมการจ่ายแรงดันไฟฟ้า งานนี้เกิดจากการเข้าถึงโค้ดโปรแกรมและการใช้ไมโครคอนโทรลเลอร์พิเศษ เมื่อใช้การเขียนโปรแกรม กำหนดเวลาจะส่งผลต่อการแสดงส่วนประกอบในช่วงเวลาหนึ่ง
วงจรรวมจะแปลงรหัสทศนิยมไบนารีและไบนารีที่จ่ายให้กับจอแสดงผล วงจรควบคุมไฟแสดงภายในประเทศทั่วไปคือ K514ID2 หรือ K176ID2 ในรุ่นนำเข้า 74HC595 การจัดการสามารถทำได้สองวิธี:

โดยตรงผ่านไมโครคอนโทรลเลอร์
- การใช้กะลงทะเบียน

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

คุณสมบัติของตัวบ่งชี้ส่วน

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

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

อุปกรณ์อิเล็กทรอนิกส์ทั้งหมดทำงานพื้นฐาน:

1. ข้อมูลภาพ
2. มีการออกแบบที่สมบูรณ์
3. มีระบบควบคุมอิเล็กทรอนิกส์

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

บทสรุป

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

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

โครงสร้างผลิตภัณฑ์นี้เป็นชุดประกอบของ LED ไฟ LED แต่ละตัวในชุดประกอบจะส่องสว่างส่วนป้ายของตัวเอง

การประกอบอาจประกอบด้วยกลุ่มเจ็ดส่วน 1 - 4 กลุ่ม ทั้งนี้ขึ้นอยู่กับรุ่น ตัวอย่างเช่น ตัวบ่งชี้ ALS333B1 ประกอบด้วยกลุ่มเจ็ดส่วนหนึ่งกลุ่ม ซึ่งสามารถแสดงเพียงหลักเดียวตั้งแต่ 0 ถึง 9

แต่ไฟ LED ของ KEM-5162AS มีกลุ่มเจ็ดส่วนสองกลุ่มอยู่แล้ว มันเป็นเลขสองหลัก รูปภาพต่อไปนี้แสดงไฟ LED เจ็ดส่วนต่างๆ

นอกจากนี้ยังมีตัวบ่งชี้ที่มีกลุ่มเจ็ดส่วน 4 กลุ่ม - สี่หลัก (ภาพ - FYQ-5641BSR-11) สามารถใช้กับนาฬิกาอิเล็กทรอนิกส์แบบโฮมเมดได้

ตัวบ่งชี้เจ็ดส่วนระบุไว้บนไดอะแกรมอย่างไร

เนื่องจากตัวบ่งชี้เจ็ดส่วนเป็นอุปกรณ์อิเล็กทรอนิกส์แบบรวม รูปภาพบนไดอะแกรมจึงแตกต่างจากรูปลักษณ์เล็กน้อย

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

คุณสมบัติของตัวบ่งชี้เจ็ดส่วน

แม้จะมีความเรียบง่ายที่ชัดเจนของส่วนนี้ แต่ก็มีลักษณะเฉพาะของตัวเองเช่นกัน

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

ตัวอย่างเช่น นี่คือ pinout ของตัวบ่งชี้ 4 หลักที่เราคุ้นเคยอยู่แล้ว ปีงบประมาณ-5641BSR-11.

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

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

เพื่อเพิ่มขนาดของตัวเลขบนจอแสดงผลและในเวลาเดียวกันก็รักษาความสว่างที่เพียงพอของแต่ละส่วนได้ จึงมีการใช้ LED หลายดวงเชื่อมต่อกันเป็นอนุกรม นี่คือตัวอย่างของตัวบ่งชี้ดังกล่าว - มันพอดีกับฝ่ามือของคุณ นี้ FYS-23011-BUB-21.

ส่วนหนึ่งประกอบด้วยไฟ LED 4 ดวงที่เชื่อมต่อกันเป็นอนุกรม

ในการส่องสว่างส่วนใดส่วนหนึ่ง (A, B, C, D, E, F หรือ G) คุณต้องใช้แรงดันไฟฟ้า 11.2 โวลต์ (2.8V สำหรับ LED แต่ละตัว) คุณสามารถทำน้อยลงได้ เช่น 10V แต่ความสว่างก็จะลดลงเช่นกัน ข้อยกเว้นคือจุดทศนิยม (DP) ส่วนประกอบด้วยไฟ LED สองดวง ต้องการไฟเพียง 5 - 5.6 โวลต์

ตัวบ่งชี้สองสีก็พบได้ในธรรมชาติเช่นกัน ตัวอย่างเช่นมีไฟ LED สีแดงและสีเขียวอยู่ภายใน ปรากฎว่ามีตัวบ่งชี้สองตัวในตัวเคส แต่มีไฟ LED ที่มีสีต่างกัน หากคุณใช้แรงดันไฟฟ้ากับวงจร LED ทั้งสอง คุณจะได้รับแสงสีเหลืองจากส่วนต่างๆ ต่อไปนี้เป็นแผนภาพการเดินสายไฟสำหรับไฟแสดงแบบสองสีตัวใดตัวหนึ่ง (SBA-15-11EGWA)

หากคุณเชื่อมต่อพิน 1 ( สีแดง) และ 5 ( สีเขียว) ถึงแหล่งจ่ายไฟ "+" ผ่านทรานซิสเตอร์หลักคุณสามารถเปลี่ยนสีของตัวเลขที่แสดงจากสีแดงเป็นสีเขียว และถ้าคุณต่อพิน 1 และ 5 พร้อมกัน สีเรืองแสงจะเป็นสีส้ม นี่คือวิธีที่คุณสามารถเล่นกับตัวบ่งชี้ได้

การจัดการตัวบ่งชี้เจ็ดส่วน

ในการควบคุมตัวบ่งชี้เจ็ดส่วนในอุปกรณ์ดิจิทัล จะใช้ชิฟต์รีจิสเตอร์และตัวถอดรหัส ตัวอย่างเช่นตัวถอดรหัสที่ใช้กันอย่างแพร่หลายในการควบคุมตัวบ่งชี้ของซีรีย์ ALS333 และ ALS324 นั้นเป็นไมโครวงจร K514ID2หรือ K176ID2- นี่คือตัวอย่าง

และเพื่อควบคุมตัวบ่งชี้ที่นำเข้าสมัยใหม่ มักใช้ shift register 74HC595- ตามทฤษฎี ส่วนการแสดงผลสามารถควบคุมได้โดยตรงจากเอาต์พุตของไมโครคอนโทรลเลอร์ แต่วงจรดังกล่าวไม่ค่อยได้ใช้เนื่องจากต้องใช้พินของไมโครคอนโทรลเลอร์ค่อนข้างน้อย ดังนั้นจึงใช้ shift register เพื่อจุดประสงค์นี้ นอกจากนี้ กระแสไฟฟ้าที่ใช้โดย LED ของส่วนป้ายอาจมากกว่ากระแสที่เอาต์พุตปกติของไมโครคอนโทรลเลอร์สามารถให้ได้

ในการควบคุมตัวบ่งชี้เจ็ดส่วนขนาดใหญ่เช่น FYS-23011-BUB-21 จะใช้ไดรเวอร์พิเศษเช่นไมโครวงจร MBI5026.

มีอะไรอยู่ภายในตัวบ่งชี้เจ็ดส่วน?

ก็ได้ของอร่อยสักหน่อย วิศวกรอิเล็กทรอนิกส์คนใดจะไม่ใช่คนนั้นถ้าเขาไม่สนใจ "ภายใน" ของส่วนประกอบวิทยุ นี่คือสิ่งที่อยู่ภายในตัวบ่งชี้ ALS324B1

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

รูปที่ 1 ตำแหน่งของส่วนไฟ LED

ไฟ LED แสดงสถานะเป็นวิธีที่ง่ายที่สุดในการแสดงข้อมูลสัญลักษณ์ การออกแบบของพวกเขาคือชุดไฟ LED ที่สร้างขึ้นในรูปแบบของส่วนที่มีรูปร่างบางอย่าง รูปที่ 1 แสดงเค้าโครงส่วนที่ใช้บ่อยที่สุด ซึ่งช่วยให้คุณแสดงตัวเลข 0...9 และอักขระเพิ่มเติมอื่นๆ อีกมากมาย ภายในตัวเครื่อง ไฟ LED ทั้งหมดมีจุดเชื่อมต่อร่วมกัน รวมเข้าด้วยกันอาจเป็นแอโนด (แอโนดทั่วไป) หรือแคโทด (แคโทดทั่วไป) สีเรืองแสงที่พบบ่อยที่สุดคือสีแดงและสีเขียว ตามกฎแล้วการใช้กระแสไฟเท่ากันไฟ LED สีแดงจะมีกำลังส่องสว่างมากกว่า การใช้พลังงานขึ้นอยู่กับแรงดันไฟฟ้าและเทคโนโลยีการผลิต กระแสเซ็กเมนต์ของตัวบ่งชี้สมัยใหม่สามารถน้อยกว่า 1 mA


รูปที่ 2 การเชื่อมต่อตัวบ่งชี้สำหรับการบ่งชี้แบบไดนามิก

ในการเน้นสัญลักษณ์ที่ต้องการบนตัวบ่งชี้ คุณจะต้องใช้พิน 8 พินบนไมโครคอนโทรลเลอร์ สามารถบันทึกบรรทัดเดียวได้โดยตัดส่วน H เมื่อไม่จำเป็นต้องแสดงจุด (ลูกน้ำ) เมื่อใช้ตัวบ่งชี้จำนวนมากขึ้น จำนวนบรรทัด I/O จะเพิ่มขึ้นอย่างมาก ตัวบ่งชี้สองตัวจะต้องมี 16 เส้น, ตัวบ่งชี้ 3 ตัวจะต้องมี 24 เส้น เป็นต้น เห็นได้ชัดว่าสำหรับการใช้งานส่วนใหญ่ การใช้พินอย่างสิ้นเปลืองนั้นเป็นสิ่งที่ยอมรับไม่ได้โดยสิ้นเชิง ปัญหานี้สามารถแก้ไขได้โดยใช้การแสดงผลแบบไดนามิก ในการทำเช่นนี้แทนที่จะเชื่อมต่อส่วนต่างๆ กับไมโครคอนโทรลเลอร์โดยตรง พวกมันจะรวมกันเป็นกลุ่มทั่วไป ดังแสดงในรูปที่ 2 วงจรใช้ตัวบ่งชี้ TOT-3361AH-LN สำหรับ 3 ตำแหน่งที่คุ้นเคยพร้อมแคโทดทั่วไป พอร์ต D ใช้เพื่อควบคุมไฟ LED ของเซ็กเมนต์ A...H แคโทด K0...K2 เชื่อมต่อโดยตรงกับสาย 0...2 ของพอร์ต B ตามลำดับ (สำหรับตัวบ่งชี้ประเภทอื่นที่มีกระแสรวม ≥20 mA จะจำเป็นต้องมีองค์ประกอบบัฟเฟอร์เพิ่มเติม) ที่จุดเริ่มต้น สัญลักษณ์ที่สอดคล้องกับความคุ้นเคยเป็นศูนย์จะแสดงบนตัวบ่งชี้ ในกรณีนี้ ระดับแรงดันไฟฟ้าจะถูกตั้งไว้ที่ต่ำบนเส้น PB0 และสูงบนเส้น PB1 และ PB2 (ไม่เช่นนั้น สัญลักษณ์จะแสดงทั้งสามตำแหน่ง) หลังจากช่วงระยะเวลาหนึ่ง สัญลักษณ์ถัดไปตามลำดับจะถูกส่งออก และตอนนี้แคโทด K1 เชื่อมต่อกับกราวด์แล้ว (มีระดับต่ำบนเส้น PB1, ระดับสูงบน PB0 และ PB2) ถัดไป ข้อมูลจะแสดงในตำแหน่งสูงสุดของตัวบ่งชี้ (ที่ PB2 log.0, ที่ PB0, PB1 log.1) จากนั้นอีกครั้งที่ศูนย์ ฯลฯ ที่อัตราการรีเฟรชอักขระ ≥ 50 Hz ความเฉื่อยในการมองเห็นของมนุษย์จะเริ่มปรากฏขึ้น การกะพริบ (เอฟเฟกต์การเปลี่ยน) หายไป ภาพจะถูกรับรู้อย่างต่อเนื่องราวกับว่าสัญลักษณ์ทั้งหมดสว่างอยู่ตลอดเวลา ตัวอย่างของรูทีนย่อยการแสดงผลแบบไดนามิกมีดังต่อไปนี้ ใช้พารามิเตอร์สองตัว: รหัสอักขระและหมายเลขตำแหน่งที่ควรแสดงอักขระนี้

- เนื่องจากตัวบ่งชี้ประกอบด้วย 3 ตำแหน่งที่คุ้นเคย รูทีนย่อย ต้องเรียกเอาต์พุตอักขระด้วยความถี่ ≥ 150 Hz (3 ; ความคุ้นเคย x 50 Hz = 150 Hz) ระยะเวลาการเปลี่ยนควร; เป็น 1/150 Hz = 6667 μs ซึ่งอยู่ที่ความถี่ 1 MHz สำหรับ AVR จะเป็น 6,667 รอบของความถี่สัญญาณนาฬิกาของเครื่องกำเนิดไฟฟ้า ถาวร; สะดวกที่สุดในการวัดช่วงเวลาด้วยตัวจับเวลาที่ทำงานอยู่ ในโหมดรีเซ็ตโดยบังเอิญ (โหมด CTC) ATmega8 มีสิ่งนี้; มีโหมดสำหรับตัวจับเวลา 16 บิต 1 และ 8-; bit timer-counter 2 เพื่อจุดประสงค์นี้ (ในกรณีใช้ timer-counter 1) จะมีรีจิสเตอร์สองตัว ช่องว่าง RVV: OCR1AH ​​(ไบต์สูง), OCR1AL (ไบต์ต่ำ) - เมื่อเปิดใช้งานวงจรเปรียบเทียบ การลงทะเบียนการนับ TCNT1H:TCNT1L เริ่มทำงานหลังจากแต่ละพัลส์ขาเข้าเปิด; หน่วยเพิ่มเนื้อหาจนกระทั่ง; ค่าไม่เท่ากับค่าที่เขียน OCR1AH:OCR1AL ในขณะนี้เนื้อหาของ TCNT1H:TCNT1L ; ถูกรีเซ็ตและตั้งค่าสถานะ OCF1A ใน TIMSK RV ถ้า; ตั้งค่าบิต OCIE1A ล่วงหน้าใน TIMSK และบิต I ใน SREG, ; จากนั้นจะมีการเปลี่ยนไปใช้ตัวจัดการการขัดจังหวะโดยบังเอิญ จากโมดูลเปรียบเทียบ A มีตัวนับเวลา 1 อยู่ด้วย ยังเป็นโมดูลที่สองที่คล้ายกันสำหรับการเปรียบเทียบ B กับรีจิสเตอร์ การเปรียบเทียบ OCR1BH:OCR1BL ซึ่งมีการทำงานคล้ายกัน อธิบายไว้ข้างต้น<< WGM12)|(1<< CS10) out TCCR1B,temp ldi temp,high(6667) out OCR1AH,temp ldi temp,low(6667) out OCR1AL,temp ldi temp,1<< OCIE1A out TIMSK,temp sei . service_T1COMPA: ;обработчик прерывания по совпадению OCR1A in temp,SREG ;при входе сохраняем в стеке push temp ;регистры temp, SREG clr temp ldi YH,high(buffer) ;заносим в указатель Y адрес ldi YL,low(buffer) ;буфера индикации buffer add YL,pos ;добавляем к Y смещение, что соответствует adc YH,temp ;ячейке с текущей позицией pos индикатора ld data,Y ;заносим в data кодом символа текущей позиции rcall din_ind ;вызов подпрограммы индикации inc pos ;циклически изменяем номер позиции cpi pos,3 ;индикатора 0->1->2->0 ฯลฯ

เส้นพอร์ต I/O ของ AVR มีลักษณะโหลดแบบสมมาตร อนุญาตให้กระแสไหลเข้าและไหลออกเท่ากันสูงสุด 20 mA ดังนั้นตัวบ่งชี้ที่มีทั้งขั้วบวกทั่วไปและขั้วลบทั่วไปจึงสามารถใช้งานได้อย่างเท่าเทียมกัน นอกจากนี้หมุดสำหรับเชื่อมต่อส่วนต่าง ๆ มักจะทำหน้าที่เพิ่มเติมของปุ่มโพล ตัวอย่างเช่น ในรูปที่ 2 ปุ่ม SBN เชื่อมต่อกับเส้นของเซ็กเมนต์ A ผ่านตัวต้านทาน RN ที่จำกัดกระแส PD0 จะได้รับการกำหนดค่าเป็นอินพุตเป็นระยะๆ เพื่ออ่านสถานะของปุ่ม ในกรณีนี้ ตัวต้านทานแบบดึงขึ้นภายในจะทำหน้าที่เป็นความต้านทานโหลด


รูปที่ 3 การลดจำนวนพินของไมโครคอนโทรลเลอร์
ก - การใช้ shift register
b - การใช้ตัวบ่งชี้ที่มีรูปแบบการเชื่อมต่อ LED ที่แตกต่างกัน

จำนวนพินสามารถลดลงได้อย่างมากหากใช้วงจรไมโครเสริมร่วมกับไมโครคอนโทรลเลอร์ ตัวอย่างเช่น รูปที่ 3a แสดงวิธีการใช้รีจิสเตอร์กะ 74HC164 หรือที่คล้ายกันเพื่อจุดประสงค์นี้ การเชื่อมต่อนี้ทำให้มีสาย I/O เพิ่มขึ้น 6 เส้น ในบางกรณี การใช้ตัวถอดรหัสและตัวนับโค้ดเจ็ดส่วนประเภทต่างๆ อาจสมเหตุสมผล นอกจากนี้ยังมีโอกาสในการประหยัดอีกประการหนึ่งโดยอิงจากการใช้บรรทัดพอร์ต z-state วงจรในรูปที่ 3b คล้ายกับวงจรในรูปที่ 2 โดยมีข้อยกเว้นเพียงอย่างเดียวว่าตัวบ่งชี้สามหลักที่มีขั้วบวก HG2 ทั่วไปเชื่อมต่อเพิ่มเติมแบบขนานกับตัวบ่งชี้ที่มีแคโทดทั่วไป HG1 เส้น PB0...PB2 ทำการสลับขั้วบวก A0...A2 ของตัวบ่งชี้ HG2 และแคโทด K0...K2 ของ HG1 พร้อมกันตามลำดับ เมื่อข้อมูลแสดงที่ตำแหน่งศูนย์ของ HG2 (ขั้วบวก A0) ระดับแรงดันไฟฟ้าสูงจะถูกสร้างขึ้นบนบรรทัด PB0 บนบรรทัดของพอร์ต D นั้น log.0 จะถูกตั้งค่าในส่วนที่ต้องส่องสว่างและสถานะ z ในส่วนที่ต้องดับลง เมื่อสัญญาณต่ำสุด HG1 (แคโทด K0) ทำงานอยู่ จะต้องมีระดับแรงดันไฟฟ้าต่ำบนบรรทัด PB0 และค่าลอจิคัลจะถูกส่งออกไปยังพอร์ต D ซึ่งลอจิก 1 ระดับบนเส้นสอดคล้องกับเซกเมนต์ที่ส่องสว่างและสถานะ z ที่จะดับลง หากอักขระถูกส่งออกไปยังตำแหน่งตัวบ่งชี้อื่นที่ไม่ใช่ A0 และ K0 จะต้องเปลี่ยน PB0 เป็นสถานะอิมพีแดนซ์สูง โดยปกติแล้วโปรแกรมเอาต์พุตสำหรับรูปแบบการสลับดังกล่าวจะซับซ้อนกว่าที่แสดงในรูปที่ 1 อย่างเห็นได้ชัด ตารางสัญลักษณ์จะมีขนาดใหญ่ขึ้นมากเนื่องจากประการแรกจำเป็นสำหรับแต่ละรายการนอกเหนือจากค่า PORTD แล้วยังจำเป็นต้องจัดเก็บเนื้อหาของการลงทะเบียน DDRD ซึ่งจะต้องมีบรรทัดที่เกี่ยวข้อง ถ่ายโอนไปยังสถานะ z (ตั้งค่าสำหรับอินพุต) และประการที่สองสัญลักษณ์ของ HG1 จะสอดคล้องกับค่า PORTD อื่น ๆ ที่ผกผันซึ่งสัมพันธ์กับตัวบ่งชี้ที่มีแคโทดทั่วไป HG2

ไม่อนุญาตให้คุณเปิด/ปิดไฟ LED หรือแฟลชกล้องโดยตรง โทรศัพท์บางรุ่นมีตัวเลือกนี้

วิธีกระพริบไฟหลากสีโดยทางโปรแกรมวิธีเขียน "ไฟฉาย" ของคุณเองหรืออุปกรณ์ LED อื่น ๆ ที่สามารถควบคุมได้ - คุณจะได้เรียนรู้เกี่ยวกับสิ่งนี้ด้านล่าง

ทุกอย่างเริ่มต้นขึ้นเมื่อขณะสำรวจระบบไฟล์ของ HTC Desire ของฉันโดยใช้ ES Explorer ฉันบังเอิญไปเจอไดเร็กทอรีที่น่าสนใจ: /sys/class/leds/blue, /sys/class/leds/flashlight ฯลฯ
สีฟ้าอะไรอีก! ฉันเห็นเพียงตัวบ่งชี้สีส้มและสีเขียว แต่สิ่งที่น่าสนใจที่สุดคือภายในไดเร็กทอรีเหล่านี้มีไฟล์ความสว่างที่มีสิทธิ์เขียน! ซึ่งฉันก็ใช้ประโยชน์ได้ทันที

อันที่จริงนี่ไม่ใช่ไฟล์ธรรมดา แต่เป็นอินเทอร์เฟซสำหรับการทำงานกับไดรเวอร์ LED ดังนั้น โดยการเขียนจำนวนบวกลงในไฟล์ /sys/class/leds/blue/brightness เราจะเปิดตัวบ่งชี้สีน้ำเงินบนตัวเครื่อง โดยการเขียน 0 จะเป็นการปิดเครื่อง เช่นเดียวกับตัวบ่งชี้สีเหลืองและสีเขียว เมื่อเปิดไฟ LED สองดวงพร้อมกัน เราจะได้สีใหม่: อำพัน + น้ำเงิน = ม่วง; เขียว + น้ำเงิน = น้ำ

ตอนนี้มันโปรแกรมทั้งหมดยังไงบ้าง?
โมฆะสาธารณะ ledControl (ชื่อสตริง, ความสว่าง int) (

พยายาม (

FileWriter fw = FileWriter ใหม่ ("/sys/class/leds/" + ชื่อ + "/ ความสว่าง" );

fw.write(จำนวนเต็มtoString(ความสว่าง));

fw.ปิด();

) จับ (ข้อยกเว้น e) (

// ไม่สามารถใช้การควบคุม LED ได้

}

}


// เปิดไฟสัญญาณสีม่วง

ledControl("สีเหลืองอำพัน" , 255 );

ledControl("สีน้ำเงิน" , ​​255 );


// ทำให้หน้าจอมืดลง

ledControl("แสงไฟหลังจอ LCD" , 30 );


// ปิดไฟแบ็คไลท์ของปุ่ม

ledControl("ปุ่มแบ็คไลท์" , 0 );


// จัดไฟฉายให้ความสว่างปานกลาง

ledControl("ไฟฉาย" , 128 );

สามารถดาวน์โหลดตัวอย่างแอปพลิเคชันพร้อมซอร์สโค้ดได้

บทสรุป
ทั้งหมด! ตอนนี้โทรศัพท์สว่างขึ้นเหมือนต้นคริสต์มาส รหัสนี้ได้รับการทดสอบบน HTC Desire ที่ใช้ Android 2.2 เท่านั้น แต่น่าจะใช้ได้กับอุปกรณ์อื่นๆ เขียนถึงฉันว่าโฟกัสจะทำงานหรือไม่บนโทรศัพท์ของคุณ