Salve a tutti, devo configurare la lettura di 1 sensore Ultrasuoni (cosa assai banale) però avendo terminato i pin da 0 a 13 su arduino mega, pensavo di collegarlo tipo ai pin 15-16.....ma non funziona.... cosa devo cambiare nel seguente codice?
#include <Servo.h>
Servo myservo; // create servo object to control a servo
#define servoPin 2 //~
const int pinTrigger = 15;
const int pinEcho = 14;
int angle =100; // initial angle for servo
int angleStep =50;
const int minAngle = 100;
const int maxAngle = 170;
void setup() {
Serial.begin(9600);
myservo.attach(servoPin); // attaches the servo on pin 3 to the servo object
myservo.write(angle);
pinMode(pinTrigger, OUTPUT);
pinMode(pinEcho, INPUT);
Serial.print( "Setto l'angolo: ");
Serial.print(angle);
}
void loop() {
// imposta l'uscita del trigger LOW
digitalWrite(pinTrigger, LOW);
// imposta l'uscita del trigger HIGH per 10 microsecondi
digitalWrite(pinTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);
// calcolo del tempo attraverso il pin di echo
long durata = pulseIn(pinEcho, HIGH);
long distanza = durata/58.31;
Serial.print("Distanza: ");
Serial.print(distanza);
if(distanza <= 30){
// change the angle for next time through the loop:
angle = 170;
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(1); // waits for the servo to get there
} else {
// change the angle for next time through the loop:
angle = 100;
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
delay(1);
}
// Aspetta 1000 microsecondi prima di generare l'impulso successivo
delay(1000);
}
Fai riferimento a questo pdf: mega.pdf (1.9 MB) quelli che sono indicati come 14 e 15 sono riconosciuti con una differente numerazione (in viola la numerazione riconosciura dal IDE) ...
In pratica con un sensore ultrasuoni al centro e due IR ai lati, però gli IR non sono molto precisi, e per lo più devi avvicinarti molto.... cosa potreu utilizzare?
... degli IR con maggiore portata e precisione, come quelli per i piccoli LIDAR, QUESTO è uno (arriva a 10mt), QUESTO è un'altro (arriva a 40mt) ... certo, costano una discreta somma, ma magari, cercando in giro, ne trovi anche di più economici.
A me non serve che dia la distanza: i sensori IR ai lati indicano se la persona sta a destra o a sinistra del braccio robot, in base a quello fanno ruotare verso la persona il braccio. Quando si è ruotato verso l persona il sensore ultrasuoni dice che è vicino e quindi interrompe il movimento. I sensori IR per rilevano oggeti a breve distanza (troppo breve)!