关于Arduino 关于串口通信
我想编一个程序-------->1、我用串口向arduino发送6个数字2、arduino把前3个数字存在数组a中把后3个数字存在数组b中3、最后向我输出这2个数组里的内...
我想编一个程序-------->1、我用串口向arduino发送6个数字
2、arduino把前3个数字存在数组a中 把后3个数字存在数组b中
3、最后向我输出这2个数组里的内容
----------------------------------------------------------------------------------------------------
我写的程序
int a[3],b[3]; 两个数组
int insum; 输入的数字
int sum=0; 用来计数的
int j; for循环中用来计数的
void setup()
{ Serial.begin(9600);
Serial.println("power up!");}
void loop()
{
if (sum=5) 到第六次的时候 计数归零
{sum=0;}
while(Serial.available()>0)
{
if (sum<3) sum小于3时存入a
{insum=Serial.read(); a[sum]=insum; sum=sum+1; }
if (sum>2) sum大于2时存入b
{insum=Serial.read(); b[3-sum]=insum; sum=sum+1;}
while(sum=5)
{
for(j=0; j<6;j=j+1;) 输出的循环
{
Serial.print("a["); Serial.print(j.DEC);Serial.print("]=");Serial.println(a[j]);
Serial.print("b["); Serial.print(j.DEC);Serial.print("]=");Serial.println(b[j]);
}
}
}
---------------------------------------------------------------------------
然后问题是 不管我输入什么 它总是输出 a【0】=1
是我程序敲错了吗 ??
求指导啊啊啊啊!! 展开
2、arduino把前3个数字存在数组a中 把后3个数字存在数组b中
3、最后向我输出这2个数组里的内容
----------------------------------------------------------------------------------------------------
我写的程序
int a[3],b[3]; 两个数组
int insum; 输入的数字
int sum=0; 用来计数的
int j; for循环中用来计数的
void setup()
{ Serial.begin(9600);
Serial.println("power up!");}
void loop()
{
if (sum=5) 到第六次的时候 计数归零
{sum=0;}
while(Serial.available()>0)
{
if (sum<3) sum小于3时存入a
{insum=Serial.read(); a[sum]=insum; sum=sum+1; }
if (sum>2) sum大于2时存入b
{insum=Serial.read(); b[3-sum]=insum; sum=sum+1;}
while(sum=5)
{
for(j=0; j<6;j=j+1;) 输出的循环
{
Serial.print("a["); Serial.print(j.DEC);Serial.print("]=");Serial.println(a[j]);
Serial.print("b["); Serial.print(j.DEC);Serial.print("]=");Serial.println(b[j]);
}
}
}
---------------------------------------------------------------------------
然后问题是 不管我输入什么 它总是输出 a【0】=1
是我程序敲错了吗 ??
求指导啊啊啊啊!! 展开
1个回答
2014-07-31
展开全部
首先你写的逻辑有问题
while(Serial.available()>0)比如,这里我输入了1
{
if (sum<3) sum小于3时存入a
{insum=Serial.read(); a[sum]=insum; sum=sum+1; } //insum读取出来是1了
if (sum>2) sum大于2时存入b
{insum=Serial.read(); b[3-sum]=insum; sum=sum+1;}//这里又读了一次?
就是说 Serial.available() 一次只能读一个出来的,另外的要留到下次判断
这个虽然回答不了你的问题,但是是一个明显的错误
while(Serial.available()>0)比如,这里我输入了1
{
if (sum<3) sum小于3时存入a
{insum=Serial.read(); a[sum]=insum; sum=sum+1; } //insum读取出来是1了
if (sum>2) sum大于2时存入b
{insum=Serial.read(); b[3-sum]=insum; sum=sum+1;}//这里又读了一次?
就是说 Serial.available() 一次只能读一个出来的,另外的要留到下次判断
这个虽然回答不了你的问题,但是是一个明显的错误
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询