LCD1602能显示汉字吗
piaozhiling 发表于 2011-11-24 23:58 static/image/common/back.gif
用我的小车的上位机控制程序吧!不过的事先装上个vb6才能用的
好的。但是我下不了
程序很简洁哦
没有usb转串口板,直接用arduino。。。。
很好的帖子,学习了:)
不错很好的方法,比用数组方便多了。
我要用上位机给arduino板子传四个字节的数据 也就是一个数组 有四个元素 怎么办?
这个很好玩,虽说构件最简单
谢谢楼主的详细教程和代码
万马奔腾 发表于 2013-3-30 12:47 static/image/common/back.gif
//逐个显示不正确啊 ,每次显示的是第一个字符,求高手解决
String comdata = "";//comdata是一个字符串类 ...
Serial.println(comdata);
这句错了,所以每次都是传第一个字符.应该是:
Serial.println(comdata);
本帖最后由 s1213 于 2013-8-20 14:37 编辑
如果要是采用arduino自带的SoftSerial 软件模拟的串口,输入多个字符出现乱码,或者每次显示的是第一个字符,求高手解决
经试验加入 mySerial.println(comdata.length());后输出为1 ,也就是说comdata只读到了一个字符。求解???
// send 0x01 , 0x02 ,0x03 then see the LED on P1
#include <TinyPinChange.h>
#include <SoftSerial.h>
#define RxD 2
#define TxD 3
#define cardread 4
#define led 13
SoftSerial mySerial(RxD, TxD);
uint8_t VirtualPortNb;
volatile byte swith = 0;
String comdata = "";
void setup()
{
TinyPinChange_Init();
mySerial.begin(9600);
VirtualPortNb=TinyPinChange_RegisterIsr(RxD, softSerialEvent);
TinyPinChange_EnablePin(RxD);
pinMode(1, OUTPUT); //LED on Model A for debugging
}
/* Function called in interruption in case of change on pins */
void softSerialEvent(void)
{
int inByte;
uint8_t PortChange;
PortChange = TinyPinChange_GetPinEvent(VirtualPortNb);
if(PortChange & TinyPinChange_PinToMsk(RxD)) /* Check if we have received something */
{
while (mySerial.available() > 0)
{
comdata += char(mySerial.read());
delay(1000);
}
if (comdata.length() > 0)
{
mySerial.println(comdata.length());
mySerial.print(comdata);
if(comdata=="3C00B60D0A8D"||comdata=="560003A727D5")
{swith=1;}
comdata = "";
}
}
}
void loop()
{
program(swith);
}
void program(byte seq)
{
switch(seq)
{
case 1:
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
break;
case 2:
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
break;
case 3:
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
break;
default:
digitalWrite(led, HIGH);
delay(2000);
digitalWrite(led, LOW);
delay(2000);
break;
}
}
学习了,谢谢:D
有没有人知道String最大定义的长度是多少呢
这个方法如果一次接收太多会不会溢出呀:lol
还有就是打印字符时无法接收吧:Q
Mark一下 Arduino串口接收字符串
万马奔腾 发表于 2013-3-30 12:47 static/image/common/back.gif
//逐个显示不正确啊 ,每次显示的是第一个字符,求高手解决
String comdata = "";//comdata是一个字符串类 ...
for (int i=0; i <L; i++)//逐个显示comdata,comdata。。。comdata
{
Serial.println(comdata);
}
把Serial.println(comdata[0]);改为Serial.println(comdata[i]);