极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14851|回复: 9

arduino串口输入速度值 电机不转

[复制链接]
发表于 2014-2-14 21:24:14 | 显示全部楼层 |阅读模式
arduino串口输入速度值,如输入“20”,电机不转。但是输入“-20”就转,这是咋回事啊???这咋还有负的呢??????
程序如下:
int in1=6;
int in2=5;
String comdata = "";
int speed = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
}

void loop()
{
  while (Serial.available() > 0)  
  {
    comdata += char(Serial.read());
    delay(2);
  }
  if (comdata.length() > 0)
  {   
    speed = comdata.toInt();
    //speed = speed - 255;
    digitalWrite(in1,LOW);
    analogWrite(in2,speed);
    Serial.println(comdata);
    comdata = "";
  }
}
请各位高手指点!!!!!!!!!!!!!!!
回复

使用道具 举报

发表于 2014-2-14 22:44:50 | 显示全部楼层
  if (comdata.length() > 0) 應改為
  if (comdata.length() > 2)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 10:02:52 | 显示全部楼层
eddiewwm 发表于 2014-2-14 22:44
if (comdata.length() > 0) 應改為
  if (comdata.length() > 2)

为什么大于2呢?这和我输入负数有影响吗??
回复 支持 反对

使用道具 举报

发表于 2014-2-15 16:08:07 | 显示全部楼层
按理,用 2 是要容許三位的數字輸入,若用 0 就祇能容許一位數字的輸入。
為何原程序使用 0呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 20:47:16 | 显示全部楼层
eddiewwm 发表于 2014-2-15 16:08
按理,用 2 是要容許三位的數字輸入,若用 0 就祇能容許一位數字的輸入。
為何原程序使用 0呢?

我试了下,改为2还是不行。输入“20”还是不转,输入“-20”可以转  还是原来的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 20:47:35 | 显示全部楼层
本帖最后由 ab0298 于 2014-2-15 20:51 编辑

高手请指教!!!{:soso_e135:}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-16 11:05:14 | 显示全部楼层
{:soso_e118:}
回复 支持 反对

使用道具 举报

发表于 2014-2-16 16:45:20 | 显示全部楼层
應輸入三位數字,由 000 到 255,即有 256步,小數值時能否起動,就要看電機本身的性能了。若有興趣,也可試試超過255的數值,就會有進一步的發現,努力!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-17 08:59:19 | 显示全部楼层
eddiewwm 发表于 2014-2-16 16:45
應輸入三位數字,由 000 到 255,即有 256步,小數值時能否起動,就要看電機本身的性能了。若有興趣,也可試 ...

好的 我试试去 多谢您的指点
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 09:42 , Processed in 0.034924 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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