การเปลี่ยนความสว่างบนหน้าจอ LCD Hitachi HD44780


11

ฉันกำลังทำโครงงาน - นาฬิกาปลุกเกม LED เมื่อเห็นว่านี่เป็นนาฬิกาฉันต้องมีวิธีการอนุรักษ์พลังงานซึ่งตอนนี้ Uno R3 + ของฉันกำลังกินข้าวเหมือนนักการเมือง คำถามของฉันคือฉันจะปิดหน้าจอหรือปิดไฟแบ็คไลท์โดยใช้ซอฟต์แวร์บนหน้าจอ LCD Hitachi HD44780 16x2 เท่านั้นได้อย่างไร หรือฉันจะตั้งค่าโหมดสลีปในองค์ประกอบเดียวได้อย่างไร วิธีที่ฉันวางแผนในการปิดเครื่องคือใช้ตัวค้นหาช่วงอัลตราโซนิกถ้าฉันเข้าใกล้มันจะเปิดหน้าจอ หากสิ่งที่ฉันพูดไม่สมเหตุสมผลขอให้ฉันชี้แจงฉันรีบเร่งหน่อย


ไม่ว่าจะยังสามารถทำคือทั้งหมดขึ้นอยู่กับว่าคุณมีหน้าจอ LCD ที่เชื่อมต่อ ชุดคำสั่ง HD44780 ไม่มีข้อกำหนดสำหรับการควบคุมแบ็คไลท์ คุณจะต้องเพิ่มกลไกภายนอกของคุณเองเพื่อควบคุมแสงไฟ
Connor Wolf

คำตอบ:


8

วางทรานซิสเตอร์เป็นอนุกรมด้วยตัวต้านทาน 33R ระหว่างขาจอ LCD 16 (กราวด์แบ็คไลท์) และ GND และสลับทรานซิสเตอร์เปิดและปิดด้วยขาดิจิตอล ด้วยวิธีนี้คุณจะสามารถเปิดและปิดแบ็คไลท์

คุณสามารถควบคุมความสว่างได้ดีขึ้นหากคุณใส่พัลส์ PWM บนพินดังกล่าว โทรเพียงแค่analogWrite(D3, value)ที่valueอยู่ในความสว่างที่ต้องการ

แผนงานอยู่ด้านล่าง มันมาจากFreetronics 16x2 จอแอลซีดีโล่

การควบคุมความสว่างของจอแอลซีดี


+1 สำหรับแผนผังแม้ว่าฉันไม่แน่ใจว่าทำไมมีตัวต้านทานสองตัว (R7 & R8)
Madivad

1
@Madivad - ฉันคาดเดาว่ามันจะเพิ่มพลังกระจายสูงสุดที่ตัวต้านทานสามารถทำได้ ตัวต้านทาน 68R สองตัวในแบบขนานส่งผลให้มีความต้านทาน 34R ที่เท่ากัน แต่เพิ่มกำลังสูงสุดเป็นสองเท่าที่สามารถกระจายได้ผ่านตัวต้านทานเดียว ฉันจำไม่ได้ว่าตัวต้านทานตัวใดที่ Freetronics แนะนำ แต่ในกรณีของฉันฉันใช้ตัวต้านทาน 68R 1 / 4W สองตัวและบอร์ดก็ใช้งานได้ นอกจากนี้ฉันคิดว่าตัวต้านทาน 68R นั้นเป็นเรื่องธรรมดา นั่นเป็นเรื่องจริงสำหรับฉันเพราะฉันมีตัวต้านทาน 68R มากมายในถังขยะและไม่มี 33R ตัวต้านทาน
Ricardo

ฉันรู้ว่านี่คือ "เก่า" แต่หวังว่าใครบางคนจะสังเกตเห็นว่า ... ฉันมีปัญหาในการทำความเข้าใจว่าทรานซิสเตอร์เชื่อมต่อกันอย่างไร (เพราะฉันไม่คุ้นเคยกับไอคอนด้านบนสำหรับทรานซิสเตอร์) ที่ E, B C เชื่อมต่อกับ?
warath-coder

@wara - นั่นคือ Field Effect Transistor (FET) ไม่ใช่ BJT ดังนั้นคุณจะมองหาการเชื่อมต่อท่อระบายน้ำแหล่งที่มาและประตู ไม่ว่าในกรณีใดคุณจะได้รับความช่วยเหลือที่ดีขึ้นโดยถามคำถามแยกต่างหากเชื่อมโยงกับคำถามนี้
Ricardo

5

แทนที่จะเชื่อมแบ็คไลท์กับ V + และ GND โดยตรงให้เชื่อมต่อกับเข็ม PWM (คุณอาจต้องใช้ไดรเวอร์แยกต่างหากหากพินไม่สามารถรับกระแสได้ / มีกระแสไฟเพียงพอ) analogWrite()นี้จะช่วยให้คุณสามารถควบคุมความสว่างผ่าน

ปิดจอ LCD ( LiquidCrystal::noDisplay()) เมื่อไม่ได้ใช้งาน เนื้อหาจะยังคงอยู่ในหน่วยความจำ แต่ส่วนของ LCD จะไม่ถูกขับเคลื่อน

ตั้งค่าบิตต่าง ๆ ในการPRRลงทะเบียนเพื่อปิดใช้งานอุปกรณ์ต่อพ่วงใด ๆ ที่ไม่ได้ใช้

และไม่ลืมที่จะนอนหลับ CPU เมื่อมันไม่จำเป็นต้องวิ่ง ดูหัวข้อ "การจัดการพลังงานและโหมดสลีป" ของแผ่นข้อมูลสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้และการPRRลงทะเบียนรวมถึง<avr/sleep.h>เอกสารสำหรับ AVR Libc


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

2
จริง ๆ ถ้าคุณต้องการให้ aarduino ใช้พลังงานต่ำจริงๆคุณต้องใช้ arduino pro (หรือบอร์ดอื่น ๆ ที่ไม่มีออนบอร์ด usb-serial) แล้วคุณจะต้องวางเครื่องปรับลมด้วยการดึงกระแสไฟฟ้าต่ำอย่างต่อเนื่อง บนมัน มันเกี่ยวข้องกับเล็กน้อย
Connor Wolf

อย่างแน่นอน คนที่ต้องการอนุรักษ์พลังงานทุกบิตสุดท้ายจะออกแบบบอร์ดของตัวเองและระบุองค์ประกอบของพวกเขาออกมาตามลำดับ
Ignacio Vazquez-Abrams

ใช่ แต่ประเด็นของฉันคือคุณไม่สามารถได้รับการอนุรักษ์พลังงานที่เกี่ยวข้องอย่างมีความหมายในบอร์ด Arduino ส่วนใหญ่เนื่องจากแม้แต่ vregs ของพวกเขาก็มีกระแสที่น่ากลัวอย่างน่ากลัว (2 ma +, IIRC) แล้วมี FTDI / ATmega16U2 ซึ่งคุณไม่สามารถปิด ฯลฯ ....
คอนเนอร์หมาป่า

@ Mr.Floppy: IOW เลือกอย่างอื่น บางอย่างมีจำนวนน้อยกว่า
Ignacio Vazquez-Abrams
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.