极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10408|回复: 4

请求各位大神帮我看看哪里错了

[复制链接]
发表于 2013-12-16 20:33:27 | 显示全部楼层 |阅读模式
int lightPin=12;
int voicePin=A1;
int ledPin=13;
int lightValue=0;
int voiceValue=0;
int a =800;     //此处需是环境基础亮度变量,请查看自己的亮度数值,填写到此处数值要略大于所测得的数据但小于灯光下的数据
int  b=55; //此处需是环境基础变量,请查看自己的数值,填写到此处数值要略大于所测得的数据但小于数据
void setup ()
{
  Serial.begin(9600);
  pinMode(13,OUTPUT);
}
void loop()
{
  int lightValue=digitalRead(lightPin);//读取模拟口A0数值
  Serial.println(lightValue);
  int voiceValue=analogRead(voicePin);//读取模拟口A1数值
  Serial.println(voiceValue);
  if (lightValue>=a)      //对光线和声音强度进行判断,如果比我们的预设值大 就点亮LED否则就关闭
  {
    digitalWrite(13,HIGH);
  }
  else
  {
    digitalWrite(13,LOW);
  }
  delay(1000);

if (voiceValue>=b)   
  {
    digitalWrite(13,HIGH);
  }
  else
  {
    digitalWrite(13,LOW);
  }
  delay(1000);
}

主要是用光照强度传感器和声音传感器控制LED的开关,只有当这两个传感器返回的值大于一定的值的时候,LED灯才会亮起来,但是把程序下载到arduino上的时候,只有光照强度传感器能控制LED的开关,并不能同时共同作用控制,还有这个错误:avrdude: stk500_getsync(): not in sync: resp=0x00  请问各位大神,这是为什么呢??
回复

使用道具 举报

发表于 2013-12-16 21:32:20 | 显示全部楼层
试一试这个增加一个布尔型变量作为想要控制的开关。
boolean b;

当亮度和声音大于规定的时候,b值为真,控制LED的打开。
if ((lightValue>=a and voiceValue>=b)
{b=true;}

在循环程序段中加入

if  (b==true)
digitalWrite(13,HIGH);
else
digitalWrite(13,LOW);
回复 支持 反对

使用道具 举报

发表于 2013-12-16 21:33:42 | 显示全部楼层
用什么测的光线,怎么接线的,接在哪个脚了,12脚没初始化,读数字引脚只有两个结果,0或1
回复 支持 反对

使用道具 举报

发表于 2013-12-16 22:14:07 | 显示全部楼层
int lightValue=digitalRead(lightPin);//读取模拟口A0数值

需要改成analog,并且接到A0脚或其他模拟输入脚。

setup里要把所有用到的脚都明确指明是INPUT还是OUTPUT
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-16 23:21:14 | 显示全部楼层
tom 发表于 2013-12-16 21:32
试一试这个增加一个布尔型变量作为想要控制的开关。
boolean b;

好的!谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-10 14:45 , Processed in 0.038561 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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