微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我知道代码或电路中有一个小错误,但我找不到

如何解决我知道代码或电路中有一个小错误,但我找不到

/* 该程序控制可伸缩的扰流板。 */

int brightness = 0;
int rainSensor;
int speedSensor;
int currentState;


#define INITIAL_STATE  0
#define ST_SPOILER_DOWN   1
#define ST_SPOILER_UP     2
#define IO_I_RAINSENSOR     3
#define IO_PWM_SPEEDSENSOR  0
#define IO_PWM_LIGHT 7 

#define YES  0
#define NO  1


void setup(){
  currentState = INITIAL_STATE;
  pinMode(IO_I_RAINSENSOR,INPUT);
  pinMode(IO_PWM_SPEEDSENSOR,INPUT);
  pinMode(IO_I_RAINSENSOR,OUTPUT);
  pinMode(IO_PWM_LIGHT,OUTPUT);
  Serial.begin(9600);
  currentState = ST_SPOILER_DOWN;
  brightness = 0;
}

void loop()
{

/* 在这种状态下,扰流板缩回 因此电路灯熄灭。下面的代码 规定,如果速度传感器或下雨
传感器检测到它们的事件,电路切换 到下一个状态。 */

if(currentState == ST_SPOILER_DOWN){
  rainSensor = digitalRead(IO_I_RAINSENSOR);
  speedSensor = analogRead(IO_PWM_SPEEDSENSOR);
  if ((speedSensor > 100)||(rainSensor == YES)){
  brightness = 255;  
  analogWrite(IO_PWM_LIGHT,brightness);
  currentState = ST_SPOILER_UP;
  Serial.println("- Spoiler Down event detected. \n" );
  }
}

/* 在这种状态下,扰流板伸出。 电路灯亮起代表这一点。 下面的代码规定,如果 速度传感器或雨量传感器检测到它们的事件, 电路切换到下一个状态。 */

if(currentState == ST_SPOILER_UP){
  rainSensor = digitalRead(IO_I_RAINSENSOR);
  speedSensor = analogRead(IO_PWM_SPEEDSENSOR);
  if ((speedSensor <95) && (rainSensor == NO)){
  brightness = 0;
  analogWrite(IO_PWM_LIGHT,brightness);
  currentState = ST_SPOILER_DOWN;
  Serial.println("- Spoiler Up event detected. \n" );
        }
    }
}

这是代码在 tinkerCAD 中使用的电路。开关代表雨量传感器,而电位器代表速度传感器。扰流板本身由灯光代表。

当我运行电路时,无论我用开关和电位器做什么,灯都会熄灭,但代码没有显示任何错误

这是电路:

circuit

这是系统应该如何工作的一般图:

diagram

解决方法

首先我建议删除 pinMode(IO_I_RAINSENSOR,OUTPUT);

然后将 #define IO_PWM_SPEEDSENSOR 0 更改为 #define IO_PWM_SPEEDSENSOR A0

我对 Arduino 的工作不多,但如果我没记错的话,模拟输入是在引脚编号前用“A”定义的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。