|
|
程序见下方,借用的工坊里面大神的12864的方法
现在出现的主要问题是每次在arduinoIDE自带的串口监视器(模拟蓝牙输入,因为蓝牙坏了还没来得及买T T)里面输入例如“+0=”以后,12864就会一直重复清屏——显示“+0=”代表的数据——清屏,这样的循环
如果我再输入类似“+2=”的数据的时候则会直接不显示任何东西T T
求各位大大看一下程序结构有没有错误
程序:
#include <SPI.h>
#include "LCD12864RSPI.h"
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
String comdata=""; //用于存放蓝牙传输过来的命令,初始为""
byte mark=0; //用于确认是否有命令输入
unsigned char show0[]={0xCF,0xDF,0xC2,0xB7,0xA3,0xBA,0x32,0x31,0xC2,0xB7};//线路:21路
unsigned char show1[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x32,0xB9,0xAB,0xC0,0xEF};//距离:02公里
unsigned char show2[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x32,0xB7,0xD6,0xD6,0xD3};//预计时间:02分钟
unsigned char show3[]={0xCF,0xDF,0xC2,0xB7,0xA3,0xBA,0x35,0x39,0xC2,0xB7};//线路:59路
unsigned char show4[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x20,0x30,0x25};//载客率0%
unsigned char show5[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x32,0x30,0x25};//载客率20%
unsigned char show6[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x34,0x30,0x25};//载客率40%
unsigned char show7[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x36,0x30,0x25};//载客率60%
unsigned char show8[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x31,0xB9,0xAB,0xC0,0xEF};//距离:01公里
unsigned char show9[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x31,0xB7,0xD6,0xD6,0xD3};//预计时间:01分钟
unsigned char show10[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x33,0xB9,0xAB,0xC0,0xEF};//距离:03公里
unsigned char show11[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x33,0xB7,0xD6,0xD6,0xD3};//预计时间:03分钟
void setup()
{
digitalWrite(10, HIGH); //
LCDA.Initialise(); // 屏幕初始化
delay(100);
Serial.begin(9600);
SPI.begin();
}
void loop()
{
while(Serial.available()>0) // 检测是否有内容发送过来,有则进入循环
{
char t=char(Serial.read()); //读取一个字符(串口读取只能一个个字符读取,这里的方法也是用论坛精华帖的)
comdata+=t; //将读取的字符存为字符串
delay(2); //延迟否则读取会出错
if(t=='=') break; //如果读到终止符号则停止,跳出循环
mark=1; //标记有命令输入
}
if(comdata[0]!='+' || comdata[comdata.length()-1]!='=') mark=0; //判断命令合法性
if(mark==1) //如果命令合法则让1602液晶输出
{
// HX711:
if(comdata=="+0=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟
LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
delay(5000);
}
else if(comdata=="+1=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟
LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
delay(5000);
}
else if(comdata=="+2=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
delay(5000);
}
else if(comdata=="+3=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟
LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
delay(5000);
}
else if(comdata=="+4=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟
LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
delay(5000);
}
else if(comdata=="+5=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
delay(5000);
}
else if(comdata=="+6=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟
LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
delay(5000);
}
else if(comdata=="+7=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟
LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
delay(5000);
}
else if(comdata=="+8=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
delay(5000);
}
else if(comdata=="+9=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟
LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
delay(5000);
}
else if(comdata=="+10=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟
LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
delay(5000);
}
else if(comdata=="+11=")
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
delay(5000);
}
LCDA.CLEAR();//清屏
delay(100);
}
LCDA.CLEAR();//清屏
delay(100);
}
|
|