为了让用户更方便的使用我们的触摸屏扩展板,我们专门定制了一个带各种显示和触摸函数的库,只需要简单设置使用的扩展板型号,就能直接使用各类画点画线和填充函数了,不需要再去做更多的配置和对屏幕时序做详细研究。这个库是基于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/ |