我是全新的C++和工作与Arduino微控制器。我一直在为我的大学工作的项目要求我编写代码来完成以下工作:
我正在寻找任何技巧来创建一个数组来平均与传感器的距离,然后使用一个for
循环来测试它是在间隔中还是输出高还是低。
任何帮助和指导都将不胜感激!
const int TriggerPin = 8; //sensor trigger pin
const int EchoPin = 9; //sensor echo pin
const int MotorPin = 7; //motor out pin
long Duration = 0;
void setup(){
pinMode(TriggerPin,OUTPUT); //sets trigger as output
pinMode(EchoPin,INPUT); //sets echo as input
pinMode(MotorPin,OUTPUT); //sets motor as output
Serial.begin(9600); //displays to serial monitor
}
void loop(){
digitalWrite(TriggerPin,LOW); //trigger pin to 0V
delayMicroseconds(2); //waits 2 us
digitalWrite(TriggerPin,HIGH); //trigger pin to 5V
delayMicroseconds(10); //10 us delay to recieve ping
digitalWrite(TriggerPin,LOW);
Duration = pulseIn(EchoPin,HIGH); //waits for echo pin to get high
//pulseIn returns the Duration in microseconds
long Distance_mm = Distance(Duration); //uses function to calc. distance
delay(100); //delay half second, do next measurement
}
long Distance(long time);
{
long DistanceCalc; //calculation variable
DistanceCalc = ((time /2.9) / 2);
//want to average this DistanceCalc reading over 10 readings, then use this value to compare to the desired range
void loop(){
if (dist_avg < 600 && dist_avg > 400);
digitalWrite(MotorPin,HIGH);
else
digitalWrite(MotorPin,LOW);
}
//if average distance is within .4-.6 meter range, output HIGH; turns motor on
//if avergae distance is outside .4-.6 meter range, outut LOW; turns motor off
发布于 2014-02-08 20:19:04
enum
:enum { Motor=7,触发器,Echo };如果第一个设置为7,下面的参数将分别设置为8和9。这也有助于代码维护。如果需要添加另一个Pin
,只需适当地将其插入enum
,而不是创建另一个常量。Duration
只在loop()
中使用,所以只需在那里初始化并使用它。将其作为全局变量可能会引发bug,否则是一种糟糕的做法。这通常适用于全局变量,因为它们在整个程序中都是可访问的,这意味着它们可以在任何地方更改。if
条件之后不应该有分号,否则下面的语句将无法处理它。第二行和第四行也应缩进。https://codereview.stackexchange.com/questions/41160
复制相似问题