|
差点忘了分享程序
#include <Servo.h>
Servo myservo;
const int echo = 2;
const int trig = 13;
const int sw = 3;
const int th = 4;
void setup()
{
Serial.begin(9600);
pinMode(echo,INPUT);
pinMode(trig,OUTPUT);
int sensorValue = digitalRead(echo);
int swValue = digitalRead(sw);
int thValue = digitalRead(th);
myservo.attach(9);
}
void loop()
{
long duration, inches, cm ,hold ,power;
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(12);
digitalWrite(trig,LOW);
duration = pulseIn(echo,HIGH);
hold = pulseIn(sw,HIGH);
power = pulseIn(th,HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.print(duration);
Serial.print("-");
Serial.print(hold);
Serial.print("th=");
Serial.print(power);
Serial.println();
if (hold>1500)
{
duration = map(duration, 0, 10000, 135, 45);
myservo.write(duration);
}
else
{map(power, 1090, 1900, 135, 45);
myservo.write(power);
}
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
} |
|