Arduino LiquidCrystal Library Bug Report #174181

Arduino LiquidCrystal Character LCD Driver Library BUG Report #174181
by Conmajia
Effected Devices
Hitachi HD44780 series LCD drivers
SEIKO EPSON SED1278
SAMSUNG KS0066
NER Japan Radio NJU6408
Issue
LiquidCrystal.createChar function can only create custom characters ONCE. Further call of this function will not effect the CGRAM content. Thus dynamic custom character animation is unable to achieve.
Sample Code
// binary custom characters, contents are omitted
byte heart[8] = {...} // a heart icon ♥
byte smiley[8] = {...} // a smiley icon ☺
// initialize an LCD, parameters are omitted
LiquidCrystal lcd(...);
lcd.begin(16, 2);
// create a new character
lcd.createChar(0, heart);
// print custom character #1
lcd.write(byte(0));
// create/modify another character
lcd.createChar(0, smiley);
// print modified character #1 (BUG)
lcd.write(byte(0));
Expected output is:
♥☺
Actual output is:
♥♥
Character #1 was not modified.
Possible Reason
[To be confirmed]
Timing issue suspected. The LiquidCrystal library does not considered the BUSY status of LCDs. It is not able to read anything from the LCD controllers but to write into them. Write operation was unstable with HD44780 series drivers by only some delays. Fig.1 shows the timing diagram of write operations.

Fig.1 Timing Diagram of Write Operation
Timing parameters in Table 1 should be carefully considered.
Table 1 Timing Parameters
| Item | Symbol | Min | Max | Unit |
| Enable cycle | $t_\mathrm{cycE}$ | $1000$ | $-$ | $\mathrm{ns}$ |
| Enable pulse width | $P_\mathrm{weh}$ | $450$ | $-$ | $\mathrm{ns}$ |
| Enable rise, fall time | $t_\mathrm{er}$, $T_\mathrm{ef} | $-$ | $25$ | $\mathrm{ns}$ |
| Address setup time | $t_\mathrm{as}$ | $140$ | $-$ | $\mathrm{ns}$ |
| Address hold time | $t_\mathrm{ah}$ | $10$ | $-$ | $\mathrm{ns}$ |
| Data setup time | $t_\mathrm{dsw}$ | $195$ | $-$ | $\mathrm{ns}$ |
| Data hold time | $t_\mathrm{h}$ | $10$ | $-$ | $\mathrm{ns}$ |
Fix
- Manually fix the
LiquidCrystal.handLiquidCrystal.cppsource files. (N/A) - Use an alternative driver library like
lcdfxor so.
*I'll publish my lcdfx library later.
The End

Arduino LiquidCrystal Library Bug Report #174181的更多相关文章
- 给MySQL官方提交的bug report备忘
1. Bug #72215 When LOCK_plugin conflicts very much, one uninstall-audit-plugin operation crash htt ...
- 做一名开源社区的扫地僧——从Bug report到Google Summer of Code(GSoC):从200个bug到5000美金
今年的软件自由日(SFD),我在广州Linux用户组的线下活动上做了一个分享,主题叫做<做一名开源社区的扫地僧(上)>.我把演讲的内容重新整理扩充, 写出了文字版, 希望可以跟更多朋友分享 ...
- Arduino PID Library
Arduino PID Library by Brett Beauregard,contact: br3ttb@gmail.com What Is PID? PID是什么 From Wikipe ...
- Approach for Unsupervised Bug Report Summarization 无监督bug报告汇总方法
AUSUM: approach for unsupervised bug report summarization 1. Abstract 解决的bug被归类以便未来参考 缺点是还是需要手动的去细读很 ...
- CVE-2014-0160 Heartbleed Vul Analysis && OpenSSL Cryptographic Software Library Bug
目录 . Heartbleed漏洞简介 . 漏洞造成的风险和影响 . 漏洞的测试.POC . OpenSSL漏洞源代码分析 . 防御.修复方案 . 从漏洞中得到的攻防思考 1. Heartbleed漏 ...
- 使用Arduino Wire Library读取温湿度传感器AM2321
AM2321是采用I2C总线或单总线通讯的国产温湿度传感器.在AM2321手册中,当采用I2C通讯时,手册指定了多处需要主机等待的时间间隔,包括: (1)唤醒传感器时,从机不回复ACK,但主机主要等待 ...
- Arduino LiquidCrystal库函数中文对照
我之所以会试试看LCD+Shield,一是因为我本来就有这块板,但一直不会用,第二个原因则是Arduino+Cookbook这本书.O’Reilly的这本手册对你在Arduino实践中的各种问题(几乎 ...
- 第三周作业3——Bug Report
作业要求来自:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/957 要求1: 准备工作:利用老师提供的git 命令,批量pull所有 ...
- bug report
ubuntu 11.10添加eth0:1后重启网卡不显示 eth0:1 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=324306
随机推荐
- 关于JavaScript简单描述
1.什么是JavaScript? JavaScript 是一种专门用于与网页交互而设计的脚本语言,它有三部分组成,那是哪三部分呢?分别是ECMAScript(提供核心语言功能),DOM(提供访问和操作 ...
- 为什么每个浏览器User-Agent都是Mozilla?真相原来是这样!
转载自简明现代魔法http://www.nowamagic.net/librarys/veda/detail/2576 故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克) ...
- 从零开始学习Vue(三)
我们从一个例子来学习组件,vuejs2.0实战:仿豆瓣app项目,创建自定义组件tabbar 这个例子用到其他组件,对于初学者来说,一下子要了解那么多组件的使用,会变得一头雾水.所以我把这个例子改写了 ...
- (八)javaScript对象简介
脚本对象(JavaScript对象) <script type="text/javascript"> var time=new Date(); time ...
- Servlet中表单的重复提交
1.用户登录页面: ->设置一个UUID到session中 ->将UUID添加到隐藏域中,提交到服务器 <% //进入页面,设置一个UUID,将UUID添加到session中 Str ...
- 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化
作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...
- ansj 2.0.7 错误例子分析
我在做一个solr的项目,分词选定了ansj分词. 选择ansj的原因: 1)身边若干朋友的念叨,说是效果不错 2)网上看了若干评论,说是不错 3)自己尝试了一些case,觉得确实不错. 好了,项目中 ...
- Cannot use ImageField because Pillow is not installed.
现象描述: 使用 ImageField ,创建数据库表时,提示如下: Cannot use ImageField because Pillow is not installed. HINT: Get ...
- Hibernate注解之@Enumerated
Hibernate注解之@Enumerated 转:http://www.cnblogs.com/minideas/archive/2011/11/04/2235262.html @Enumerate ...
- python中的列表list
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...