关于arduino的控制问题。大神哥哥求帮助~~
本帖最后由 血阳 于 2015-4-22 00:19 编辑我想实现的是,当手动输入一个数字,然后灯会根据这个数字来调整自己的亮度。当不输入的时候,灯一直保持前一时刻的亮度。
我先给个简单代码,然后通过这个简单代码来问一些问题。
void setup()
{
pinMode(5,OUTPUT);
Serial.begin(9800);
}
int i;
void loop()
{
i=Serial.read();
if(i<0) i=0;
Serial.println(i);
analogWrite(5,i);
delay(2000);
}
问题1:关于语句:Serial.begin(9800);
这个我知道是设置波特率的,但是我想问问,波特率有什么作用,为什么当我把这一句删掉之后,实验就不能够工作了?
问题2:关于语句:i=Serial.read();
当i没有赋初值的时候,这个语句可以让i等于多少?
问题3:要如何实现功能,当我停止赋值的时候,灯就保持前一个状态的亮度,而不是回到i=Serial.read()所得的值的亮度?
问题4:这个程序从“输入数据→灯做出反应”的时间很慢,有没有快一点的解决方案?
求大神解答啊T T.不胜感激~~{:soso_e109:} {:soso_e154:} 1.Serial.begin(9800); 应该是 Serial.begin(9600);主要是初始化串口参数,如果不初始化,当然工作不了‘
2.i=Serial.read(); 你好像缺了一句判断当前串口是否有数据的语句 参考 http://wiki.geek-workshop.com/doku.php?id=arduino:arduino_language_reference:serial_available
3.参考2
4.现在应该已经够快了,你能察觉出来变化很慢? 本帖最后由 i7456 于 2014-11-7 17:29 编辑
int i;
void setup()
{
pinMode(5,OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(Serial.available())
{
i=Serial.read();
Serial.println(i);
}
//analogWrite(5,i/4);//错误
analogWrite(5, i); //修改为
} zoologist 发表于 2014-11-6 08:03 static/image/common/back.gif
1.Serial.begin(9800); 应该是 Serial.begin(9600);主要是初始化串口参数,如果不初始化,当然工作不了‘ ...
应该是他延时了个两秒,而他没意识到,以为是反应慢 i7456 发表于 2014-11-6 09:40 static/image/common/back.gif
int i;
void setup()
i为什么要除以4??
无名小子 发表于 2014-11-7 14:55 static/image/common/back.gif
i为什么要除以4??
笔误,不需要除以4 zoologist 发表于 2014-11-6 08:03 static/image/common/back.gif
1.Serial.begin(9800); 应该是 Serial.begin(9600);主要是初始化串口参数,如果不初始化,当然工作不了‘ ...
谢谢您的耐心回答:lol,关于第四点,我在做的时候,改变i的值的时候,灯反应好像有点慢,我再看看,看看是不是我调错哪里了。 -Echo 发表于 2014-11-6 09:42 static/image/common/back.gif
应该是他延时了个两秒,而他没意识到,以为是反应慢
{:3_41:}o(╯□╰)o我看看是不是这个样子的~ 无名小子 发表于 2014-11-7 14:55 static/image/common/back.gif
i为什么要除以4??
因为模拟端口接收数据最多到255,[占空比:0(完全关闭)]到255(完全打开)之间而i可以达到1024,所以得除以4,才能按照相应的规则来让灯亮暗,否则的话,当i超过255了以后,灯的亮度在后面的话会有其他变化的,你可以自己试试。
页:
[1]