主要问题就是板子写的程序稍多一些后(控制一个舵机,一个超声波测距器,一个蜂鸣器后),板子的反应感觉明显慢了了很多,想请一下这个问题是应该是出在哪里呢?是因为一块板子承载能力有限需要用第二块板子分担一下还是因为程序写的有问题?
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
void setup()
{
Serial.begin(9600);
pinMode(12,OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
}
void loop()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
if(distance<20.00){
digitalWrite(12,HIGH);
delay(1000);
}
else{
digitalWrite(12,LOW);
}
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(100);
}
具体程序如上,这个程序是我控制超声波测距模块和一个蜂鸣器,这个板子反应速度还是挺快的。
const int TrigPin = 2;
const int EchoPin = 3;
float distance;
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
Serial.begin(9600);
pinMode(12,OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
myservo.attach(9);
}
void loop() {
voice();
duoji();
}
void voice()
{
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
distance = pulseIn(EchoPin, HIGH) / 58.00;
if(distance<20.00){
digitalWrite(12,HIGH);
delay(1000);
}
else{
digitalWrite(12,LOW);
}
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(100);
}
void duoji(){
for(pos = 0; pos < 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
for(pos = 180; pos>=1; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
如上,是再多加上了一个舵机后板子反应速就很慢了。这个问题不知道是自己这个程序写的有问题还是一块板子承载能力有限,烦指教。
|