极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18789|回复: 13

ITEAD触摸屏扩展板专用UI库

[复制链接]
发表于 2013-5-11 11:00:26 | 显示全部楼层 |阅读模式
为了让用户更方便的使用我们的触摸屏扩展板,我们专门定制了一个带各种显示和触摸函数的库,只需要简单设置使用的扩展板型号,就能直接使用各类画点画线和填充函数了,不需要再去做更多的配置和对屏幕时序做详细研究。这个库是基于Henning的UTFT库进行删减的,并新增了触摸功能的函数。现在支持2.4寸,2.8寸和3.2寸的触摸屏扩展板,支持的Arduino主板类型:Arduino Duemilanove, Arduino UNO, Arduino MEGA, Arduino Leonardo。


库里提供了3个DEMO,针对使用的扩展板型号不同,修改初始化函数就可以直接使用看到效果了。

为了防小白,已DEMO为例简单说下如何使用库

首先是当然下载后放到对应的文件夹位置,然后你的代码里#include <LCDTouch.h>, 将我们的库包文件头包含到你的代码里,这样后面才能继续使用我们的库函数。

接着是LCDTouch TouchPPP;  在3个DEMO里面都出现了,其实只是定义了LCDTouch类的名字,你也可以改为LCDTouch YOUNAME; 只是后面对应的调用库函数时,就变成了YOURNAME.function();了。

然后就是初始化了,这个库因为是专用库,所以我们简化了对引脚配置的操作,只需要在setup里面执行几个函数即可完成初始化:

.LCDUTFT(LCD2_4);  根据手上使用的触摸屏扩展板来配置引脚和初始化信息,LCD2_4 LCD2_8 LCD3_2参数分别对应2.4,2.8和3.2的触摸屏扩展板。

.Lcd_Init (); 不用做任何修改,根据上个函数选择的扩展板型号,以及你编译时选的主板类型,会做自适应的初始化。

.setColor(0xFF00);   这个函数用于设置前景色,设置的颜色会被用于所有Draw和fill的函数里,当然,初始化后将来也可以在代码里需要的地方在修改前景色。

.setBackColor(0x00FF);这个函数用于设置背景色,设置的颜色会被用于所有print的命令。后续也可以再修改。

.setFont(X,Y,offset);          这函数用于设置字体。X,Y是要填的数字,是字体大小,比如16,16,。OFFSET一般填32即可。

到此初始化就完成了,可以到loop函数里去执行我们的各种现实和触摸操作了。后面是整个库的函数简介:

getDisplayXSize();

得到屏幕的宽度。

参数: 无

返回值: 屏幕宽度(像素点数)

实例: Xsize = TouchPPP.getDisplayXSize(); //获取屏幕宽度

getDisplayYSize();

获取屏幕的高度

参数: 无

返回值: 屏幕高度(像素点数)

实例: Ysize = TouchPPP.getDisplayYSize(); //获取屏幕高度

clrScr();

清屏函数

参数: 无

实例: TouchPPP.clrScr(); //清屏

fillScr(r, g, b);

将屏幕填充为单一颜色

参数:      r: RGB的红色分量值(0-255)

g: RGB的绿色分量值 (0-255)

b: RGB的蓝色分量值(0-255)

实例: TouchPPP.fillScr(255,127,0); // 将屏幕填充为橙色

fillScr(color);

将屏幕按照RGB565值填充为单一颜色

参数: RGB565颜色值

实例: TouchPPP.fillScr(0x0000); //填充屏幕为黑色

setColor(r, g, b);

设置颜色提供给draw*, fill* 和输出命令使用

参数:      r: RGB的红色分量值(0-255);

g: RGB的绿色分量值 (0-255);

b: RGB的蓝色分量值(0-255);

实例: TouchPPP.setColor(0,255,255); // 设置颜色为青色.

setColor(color);

参数:RGB565颜色值

实例: TouchPPP.setColor(0x0000); // 设置为黑色

getColor();

获取当前使用的颜色。

参数: 无

返回值: 当前使用的颜色以RGB565颜色值返回(word型)

实例:Color = TouchPPP.getColor(); // 获得当前颜色

setBackColor(r, g, b);

设置背景颜色提供给所有的输出命令。

参数:      r: RGB的红色分量值(0-255)

g: RGB的绿色分量值 (0-255)

b: RGB的蓝色分量值(0-255)

实例: TouchPPP.setBackColor(255,255,255); //设置背景颜色为白色

setBackColor(color);

根据RGB565颜色值设置背景色提供给所有的输出命令使用。

参数: RGB565 color value

实例: TouchPPP.setBackColor(0xffff); //设置背景颜色为白色

getBackColor();

获取当前使用的背景色

参数: 无

返回值:但前使用的背景色以RGB565颜色值的形式返回(word型)

实例: BackColor = TouchPPP.getBackColor(); // 获取当前使用的背景色

drawPixel(x, y);

画一个点

参数:     x: 像素点的x轴坐标值

y: 像素点的y轴坐标值

实例: TouchPPP.drawPixel(119,159); //画一个点

drawLine(x1, y1, x2, y2);

在两点之间画一条线

参数:     x1: 开始点的X轴坐标

y1: 开始点的Y轴坐标

x2: 结束点的X轴坐标

y2: 结束点的Y轴坐标

实例: TouchPPP.drawLine(0,0,239,319); //画一条对角线

drawRect(x1, y1, x2, y2);

在两个点之间画一个矩形

参数:      x1: 开始点的X轴坐标

y1: 开始点的Y轴坐标

x2: 结束点的X轴坐标

y2: 结束点的Y轴坐标

实例: TouchPPP.drawRect(119,159,239,319); // 画一个矩形

drawRoundRect(x1, y1, x2, y2);

在两点之间绘制一个圆角矩形,两点之间最小是两个方向上的5个像素点。如果更小尺寸的圆角矩形将不能成功绘制。

参数:      x1: 开始点的X轴坐标

y1: 开始点的Y轴坐标

x2: 结束点的X轴坐标

y2: 结束点的Y轴坐标

实例: TouchPPP.drawRoundRect(0,0,119,159); // 绘制一个圆角矩形

fillRect(x1, y1, x2, y2);

在两点之间绘制一个填充矩形

参数:      x1: 开始点的X轴坐标

y1: 开始点的Y轴坐标

x2: 结束点的X轴坐标

y2: 结束点的Y轴坐标

实例: TouchPPP.fillRect(119,0,239,159); //绘制一个填充矩形

fillRoundRect(x1, y1, x2, y2);

在两点之间绘制一个填充圆角矩形,两点之间最小是两个方向上的5个像素点。如果更小尺寸的圆角矩形将不能成功绘制。

参数:      x1: 开始点的X轴坐标

y1: 开始点的Y轴坐标

x2: 结束点的X轴坐标

y2: 结束点的Y轴坐标

实例: TouchPPP.fillRoundRect(0,159,119,319); // 绘制一个填充的圆角矩形

drawCircle(x, y, radius);

以一定的半径画一个圆

参数:      x:圆中点的X轴坐标

y:圆中点的Y轴坐标

radius:以像素点表示的圆的半径

实例: TouchPPP.drawCircle(119,159,20); // 以20像素点为半径画一个圆

fillCircle(x, y, radius);

以一定的半径画一个填充的圆

参数:      x:圆中点的X轴坐标

y:圆中点的Y轴坐标

radius: 圆的半径(像素点数)

实例: TouchPPP.fillCircle(119,159,10); // 以10像素点为单位画一个填充圆

print(st, x, y, [deg]);

在坐标上输出一个字符串,可以指定背景颜色,默认背景颜色为黑色

参数:      st: 输出的字符串

x: 第一个字符左上角的X轴坐标

y: 第一个字符左上角的Y轴坐标

deg: <可选项>旋转角度(0-359).

实例: TouchPPP.print(“Hello, World!”,CENTER,0); // 输出 “Hello, World!”

printNumI(num, x, y[, length[, filler]]);

在坐标上输出一个整数,可以指定背景颜色,默认背景颜色为黑色。

参数:num:输出的整数(-2,147,483,648到2,147,483,647);

x:第一个整数左上角X轴坐标

y:第一个整数左上角Y轴坐标

length: <可选项>显示最少数据的长度(包括标点)

filler: <可选项>填充字符以达到最小长度,该字符插入到数字前面,默认为空格

实例: TouchPPP.printNumI(num,CENTER,0,0); // 输出“num”里面的数据

printNumF(num, dec, x, y[, divider[, length[, filler]]]);

在指定的坐标打印一个浮点数,可以指定背景颜色,默认的为黑色,

警告:浮点数是不准确的,会产生奇怪的效果,是否使用用户自己决定

参数:num: 输出值 (参考备注)

dec: 数据的小数部分 (1-5) ,不支持0,如果使用printNumI() 代替。

x: 第一个数据左上角X轴坐标

y: 第一个数据左上角Y轴坐标

divider: <可选项>用作小数点的单字符。默认的是'.'

length:<可选项>显示数据的最小长度

filler:<可选项>填充字符以达到最小长度,该字符插入到数字前面,默认为空格

实例: TouchPPP.printNumF(num, 3, CENTER,0,0,0);

备注:支持的范围取决于小数的位数。大约的范围 +/- 2*(10^(9-dec)).

setFont(x,y,offset);

选择字体大小。

参数:X: 字体的宽度

       Y: 字体的高度

       Offset:偏移量32

实例: TouchPPP.setFont(16,16,32); //设置字体为BigFont

getFont();

获取当前使用的字体

参数: 无

返回值: 当前使用的字体

实例: CurrentFont = TouchPPP.getFont(); //获取当前字体

getFontXsize();

获取当前使用字体的宽度

参数: 无

返回值: 当前使用字体宽度的像素点数

实例: Xsize = TouchPPP.getFontXsize (); //获取字体的宽度

getFontYsize();

获取当前使用字体的高度

参数: 无

返回值: 当前使用字体高度的像素点数

实例: Ysize = TouchPPP.getFontYsize (); //获得字体的高度

drawBitmap (x, y, sx, sy, data[scale]);

在显示器上画一个位图

参数:x: 位图左上角的X轴坐标

y: 位图左上角的Y轴坐标

sx: 位图的宽度(像素点数)

sy: 位图的高度(像素点数)

data:位图数据数组

scale: 比例因子

实例: TouchPPP.drawBitmap(0, 0, 32, 32, bitmap); // 画一个 32x32 像素点的位图

drawBitmap (x, y, sx, sy, data, deg, rox, roy);

在屏幕上绘制一个旋转的位图

参数:x: 位图左上角的X轴坐标

y: 位图左上角的Y轴坐标

sx: 位图的宽度(像素点数)

sy: 位图的高度(像素点数)

data: 位图数据数组

deg:位图旋转角度 (0-359)

rox:和位图左上角相对应的旋转中心的X轴坐标

roy:和位图左上角相对应的旋转中心的Y轴坐标

实例: TouchPPP.drawBitmap(50, 50, 32, 32, bitmap, 45, 16, 16); // 画一个旋转45度的位图


Touch_Init ();

初始化触摸屏

参数:无

返回值: 无

实例: myTouch.Touch_Init ();//初始化触摸屏

Touch_DataAvailable();

检查触摸屏中是否有数据等待

参数: 无

返回值:真意味着有数据等待,其他的为无数据等待

实例: check = myTouch.Touch_DataAvailable() // 查看是否有数据等待

Touch_Read();

从触摸屏读数据,此功能函数只能在dataAvailable() 函数为真的时候才能使用,使用Touch_GetX() 和 Touch_GetY() 来获取坐标。

参数: 无

返回值: 触摸部分读取的数据

实例: myTouch.Touch_Read(); //从触摸部分读取数据

备注: 在使用完此函数后,原始数据存储在TP_X和TP_Y。如果你不知道如何操作这原始数据请使用Touch_GetX()和Touch_GetY()代替。

Touch_GetX();

获取最新的从触摸屏内读取的X轴坐标

参数: 无

返回值: X轴坐标

实例: x = myTouch.Touch_GetX(); // 获取X轴坐标

Touch_GetY();

获取最新的从触摸屏内读取的Y轴坐标

参数: 无

返回值: Y轴坐标

实例: y = myTouch.Touch_GetY(); // 获取Y轴坐标

Touch_SetPrecision(precision);

设置触摸精度

参数:PREC_LOW, PREC_MEDIUM, PREC_HI, PREC_EXTREME

返回值: 无

实例: myTouch.Touch_SetPrecision(PREC_MEDIUM); // 设置中等精度

我们后续后持续维护和更新这个库,所以为了保持它一直是最新的版本,我们提供了一个google code的下载地址,我们会把最新版本更新到这个项目的下载里面,你现在就可以在这里下载到这个库:

https://code.google.com/p/tfttouchshield/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-5-11 12:09:32 | 显示全部楼层
哈哈哈这个教程写得好!
回复 支持 反对

使用道具 举报

发表于 2013-5-11 16:10:56 | 显示全部楼层
那屏貌似不错??哪里买的???多少钱??打算买个做遥控
回复 支持 反对

使用道具 举报

发表于 2013-5-11 17:06:14 | 显示全部楼层
赞~~

问几个问题:
* 屏幕的颜色是多少?16位? 24位?
* 驱动屏幕,需要几根线? (因为我要接一些传感器,不知道是否有足够的端口留给触摸屏)
* 有没有taobao购买的链接?
* 耗电如何???有这方面的数据吗?因为我是带出去用,所以对耗电也比较在意。



多谢。
回复 支持 反对

使用道具 举报

发表于 2013-5-11 21:43:29 | 显示全部楼层
同问,还有想知道怎么可以显示中文?
回复 支持 反对

使用道具 举报

发表于 2013-5-12 12:28:58 | 显示全部楼层
楼主您这个屏看上去很不错,能不能提供淘宝地址?
回复 支持 反对

使用道具 举报

发表于 2013-5-12 12:31:15 | 显示全部楼层
无法下载啊!{:soso_e100:}
回复 支持 反对

使用道具 举报

发表于 2013-5-12 12:31:59 | 显示全部楼层
楼主辛苦!还有您这个屏看上去很不错,可否提供淘宝地址?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-12 12:33:52 | 显示全部楼层
本帖最后由 Alexie 于 2013-5-12 12:37 编辑
fangtaonj 发表于 2013-5-12 12:31
无法下载啊!


可以啊 在Download标签里就可以下载了...  我上传到这里吧 不过就无法保证是最新的了 只有google code那里会一直保持更新最新的

淘宝地址:http://item.taobao.com/item.htm? ... &id=19849904171

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-12 12:38:28 | 显示全部楼层
烟鬼 发表于 2013-5-11 21:43
同问,还有想知道怎么可以显示中文?

要显示中文就得自己去建字库了...这个是个体力活
回复 支持 反对

使用道具 举报

发表于 2013-5-12 14:06:54 | 显示全部楼层
哦,没那能力了
回复 支持 反对

使用道具 举报

发表于 2013-5-12 15:17:51 | 显示全部楼层
这个是个体力活
回复 支持 反对

使用道具 举报

发表于 2014-3-17 22:26:08 | 显示全部楼层
請問這有辦法以圖片當底圖顯示嗎?
回复 支持 反对

使用道具 举报

发表于 2014-6-30 10:01:03 | 显示全部楼层
很好,屏有了,但玩不转
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 05:43 , Processed in 0.044409 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表