codice:
#include <Servo.h>
#define pinServoLeft 6
#define pinServoRight 5
#define pinServoIRLeft 9
#define pinServoIRRight 10
#define pinIRLeft 0
#define pinIRRight 1
#define IRFrom 10
#define IRTo 120
#define IRMax 112640
Servo ServoIRLeft, ServoIRRight;
Servo ServoLeft, ServoRight;
double readLeft, readRight;
void setup() {
ServoIRLeft.attach(pinServoIRLeft);
ServoIRRight.attach(pinServoIRRight);
ServoLeft.attach(pinServoLeft);
ServoRight.attach(pinServoRight);
}
void readIR() {
readLeft += analogRead(pinIRLeft);
readRight += analogRead(pinIRRight);
}
void loop() {
int k = 1;
for(int i = IRFrom; true; i += k) {
ServoIRLeft.write(180 - i);
ServoIRRight.write(i);
readIR();
if(i < IRFrom || i > IRTo) {
k = -k;
ServoLeft.write(180 - round(90 * readLeft / IRMax));
ServoRight.write(round(90 * readRight / IRMax));
readLeft = readRight = 0;
}
delay(10);
}
}
Questo è il codice del mio robot:
E' un robot mosso da due servi e ha la capacità di sentire se ci sono oggetti davanti a lui grazie a due sensori ir mossi in un raggio di tot gradi da due microservi, ottenendo cosi' una sorta di visione stereoscopica ir vera e non come i doppi sensori montati insieme che vendono nei negozi di robotica online.
un grande amico ingegnere informatico mi ha scritto questo codice da lui definito "una stupidata" per fare in modo che il robot vada di base avanti abbastanza piano e se sente un oggetto da un lato modifica la velocità del motore del lato interessato in base al valore ottenuto (o chiaramente entrambi). I sensori ir non sono la precisione fatta a sensore MA riconoscono oggetti nel raggio di 10 15 cm se non troppo piccoli o sottili, calcolando che li ho costruiti io è una vittoria.
Sto studiando C perchè voglio scrivere un codice che mi dia la possibilità di riconoscere se c'è o no un oggetto e dove rispetto al robot, calcolando l'angolo dei singoli servi e l'imput ottenuto dai sensori. Mi dareste una mano?