Ciao a tutti!
Sto ultimando un'installazione artistica in cui in base alla distanza rilevata da un sensore a ultrasuoni un servomotore a 360 giri ad un certa velocità per azionare la manovella di un carillon.
Per ora sono riuscito solo a far sì che vada a una certa velocità e poi si fermi. È possibile fare in modo che se la distanza rilevata è compresa tra due numeri vada a una velocità diversa? ( tipo if (30 < distanza < 40) myservo.write(110))
Qui di seguito lo sketch da cui sono partito
#include <Servo.h>
Servo myservo;
const int trigPin = 6; const int echoPin = 7; long timeFront; int distanceFront = 0; // Ultra Sensor on pins D6 & D7
void setup() {
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
Serial.begin(57600);
myservo.attach(8); // attaches the servo on pin 8 to the servo object
}
void loop() {
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
timeFront = pulseIn(echoPin, HIGH, 2940); distanceFront = timeFront * 0.034 / 2; // 50 cm maximum distance
if (distanceFront > 0) {
distanceFront = Serial.read();
Serial.print (distanceFront);
if (distanceFront < 20); {
Serial.println(" sent 180 Rotaing CCW ");
myservo.write(180);
}
} else {
Serial.println(" sent Stopped ");
myservo.write(90);
}
}
Grazie in anticipo a chi avrà voglia di rispondere