麻烦大家看看
小弟写了一个程序想实现的功能是当读取模拟口A0,A4的电压为大于等于3.3v时,A0对应的数字7口和A4对应的数字8点亮,现在的情况是我把3.3v接在A0,或A4中任一一个两个灯都亮,麻烦大家看看啥问题void setup()
{
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
}
void loop()
{
int val0,val1;
val0=analogRead(A4);
val1=analogRead(A0);
if(val0>600&&val1>600)
{
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}
else if(val0<600&&val1<600)
{
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
}
if(val1>600&&val0<600)
{
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
else if(val1<600&&val0>600)
{
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
else
{
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
}
} 补充一下,我这边使用的是数字led灯模块,低电平点亮 本帖最后由 贱客 于 2013-4-28 16:55 编辑
A0对应的数字7口和A4对应的数字8
分开控制代码和逻辑更简单#define THRESHOLD 600; //阀值
void loop()
{
int val0,val1;
val0=analogRead(A4);
val1=analogRead(A0);
if (val0 > THRESHOLD) {
digitalWrite(8,LOW);
} else {
digitalWrite(8,HIGH);
}
if (val1 > THRESHOLD) {
digitalWrite(7,LOW);
} else {
digitalWrite(7,HIGH);
}
delay(500);//最好 delay 一下,等信号或动作执行
}至于3.3v接在A0,或A4中任一一个两个灯都亮,可能A0,A4要接下拉电阻,电子我是小白,等大牛回答 lz可以用example-》01basics -》AnalogReadSerial 这个例子观察 A0,A4不接任何东西的情况下读到的数值。
A0, A4 设为模拟输入,不接任何东西的情况是浮动的,理论上是在0~1024不断变化的。 贱客 发表于 2013-4-28 16:53 static/image/common/back.gif
A0对应的数字7口和A4对应的数字8
分开控制代码和逻辑更简单至于3.3v接在A0,或A4中任一一个两个灯都亮,可 ...
你这个程序实际用过没有,我下载后一点反应都没有,而且宏定义后面的分号应该去掉,不然无法编译通过 luhuaneda 发表于 2013-4-28 17:22 static/image/common/back.gif
lz可以用example-》01basics -》AnalogReadSerial 这个例子观察 A0,A4不接任何东西的情况下读到的数值。
...
这个我已经试过了,不接任何东西是在300-400之间浮动,接3.3v的时候在678左右浮动 thinkrobot 发表于 2013-4-28 17:56 static/image/common/back.gif
你这个程序实际用过没有,我下载后一点反应都没有,而且宏定义后面的分号应该去掉,不然无法编译通过
没用过,这段只是根据你的需求和代码简化来的。
加宏只是为了方便修改阀值,C++不是我主语言,习惯写错了在所难免,呵呵,你改一下即可。
setup() 部分因为不需要改,我就没写,你抄回你代码里的即可 本帖最后由 luhuaneda 于 2013-4-28 20:44 编辑
/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
This example code is in the public domain.
*/
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.print(sensorValue);
Serial.print("");
sensorValue = analogRead(A4);
Serial.println(sensorValue);
delay(100); // delay in between reads for stability
}
lz 你试一下上面的程序,其中一个端口不接,一个接3.3v,再交换,看一下串口数据就知道为什么了。 luhuaneda 发表于 2013-4-28 20:42 static/image/common/back.gif
/*
AnalogReadSerial
Reads an analog input on pin 0, prints the result to the serial monitor.
试了一下,出来的值还是一样的,接的A0的 时候A0在698左右,A4在675左右。接A4的时候,A0:657,A4:674,两个都不接的时候两个的值大致在260
页:
[1]