questo è il listato che non mi si avvia:
Scusate l'ignoranza ma è da poco che uso il linguaggio C , fin ora ho usato l'assembler della microchip quindi i pic.
#include <Servo.h>
Servo Testa;
int angle2;
int triggerPort = 7; //uscita segnale trigger
int echoPort = 8;//ingresso echo
int servopin = 2;
int servopin2 = 3;
int angle;
int pulsewidth;
int conta = 0;
void letturadistanza (int triggerPort){
digitalWrite( triggerPort, LOW ); //setta al livello logico 0 la porta trigger
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );//setta al livello logico 1 (5V) la porta trigger
delayMicroseconds( 10 ); //ritardo di 10 microsecondi
digitalWrite( triggerPort, LOW ); //setta al livello logico 0 la porta trigger
long duration = pulseIn( echoPort, HIGH ); //long variabili a 32bit, duration nome della variabile
// mette dentro duration il tempo che trascorre prima che echoPort diventa allo stato logico1
long r = 0.034 * duration / 2; //long variabili a 32bit, r nome della variabile
//mette dentro r
Serial.print( "durata: " ); //scrive sul monitor la scritta tra ""
Serial.print( duration ); //scrive sul monitor la la variabile tra()
Serial.print( " , " ); //scrive sul monitor la scritta tra ""
Serial.print( "distanza: " ); //scrive sul monitor la scritta tra ""
//dopo 38ms è fuori dalla portata del sensore, adesso fino a 50ms
if( duration > 50000 ) Serial.println( "fuori portata");
else { Serial.print( r ); Serial.println( "cm" );}
//aspetta 1.5 secondi
delay( 500 );
}
void servopulse(int servopin,int angle){
pulsewidth=(angle*11)+500;
digitalWrite (servopin,HIGH);
delayMicroseconds (pulsewidth);
digitalWrite (servopin,LOW);
delay (15);
}
void servopulse2(int servopin2,int angle){
pulsewidth=(angle*11)+500;
digitalWrite (servopin2,HIGH);
delayMicroseconds (pulsewidth);
digitalWrite (servopin2,LOW);
delay (15);
}
void setup()
{
Testa.attach(4);
pinMode (servopin,OUTPUT);
pinMode (servopin2,OUTPUT);
pinMode( triggerPort, OUTPUT );// triggerPort è una porta in uscita
pinMode( echoPort, INPUT ); // echoPort è una porta in ingresso
Serial.begin( 9600 ); //imposta la porta seriale del monitor a 9600
Serial.println( "Sensore ultrasuoni: "); //scrive sul monitor la scritta tra ""
}
void loop()
{
inizio:
conta=5;
cammina:
letturadistanza
if (duration < 500) {goto cammina;}
conta--;
for (angle=72; angle<=90; angle++){
servopulse (servopin, angle);
}
for (angle=105; angle>=90; angle--){
servopulse2 (servopin2, angle);
}
delay(200);
for (angle=90; angle<=108; angle++){
servopulse (servopin, angle);
}
for (angle=90; angle>=75; angle--){
servopulse2 (servopin2, angle);
}
delay(200);
for (angle=108; angle>=90; angle--){
servopulse (servopin, angle);
}
for (angle=75; angle<=90; angle++){
servopulse2 (servopin2, angle);
}
delay(200);
for (angle=90; angle>=72; angle--){
servopulse (servopin, angle);
}
for (angle=90; angle<=105; angle++){
servopulse2 (servopin2, angle);
}
delay(200);
if (conta==0) {goto testaa;}
else {goto cammina;}
// per far riallineare l'insetto---------------------------------------
testaa:
for (angle=72; angle<=90; angle++){
servopulse (servopin, angle);
}
for (angle=105; angle>=90; angle--){
servopulse2 (servopin2, angle);
}
delay(200);
//-----------------------------------qui sotto gira la testa------------------------------
for (angle2=90; angle2>=0; angle2--){ //ciclo for che sposta l'angolo del servo
//Posizione = analogRead (Pot);
//Gradi=map(90);
Testa.write(angle2);
delay(30);}
delay(2000);
//------------------------------
//for (angle2=45; angle2>=0; angle2--){ //ciclo for che sposta l'angolo del servo
//Testa.write(angle2);
//delay(30);}
//delay(2000);
//------------------------------------------
for (angle2=0; angle2<=45; angle2++){ //ciclo for che sposta l'angolo del servo
//Posizione = analogRead (Pot);
//Gradi=map(90);
Testa.write(angle2);
delay(30);}
delay(2000);
//-----------------------------
for (angle2=45; angle2<=90; angle2++){ //ciclo for che sposta l'angolo del servo
Testa.write(angle2);
delay(30);}
delay(2000);
//-----------------------------
for (angle2=90; angle2<=135; angle2++){ //ciclo for che sposta l'angolo del servo
Testa.write(angle2);
delay(30);}
delay(2000);
//-----------------------------
for (angle2=135; angle2<=180; angle2++){ //ciclo for che sposta l'angolo del servo
//Posizione = analogRead (Pot);
//Gradi=map(90);
Testa.write(angle2);
delay(30);}
delay(2000);
//-----------------------------
for (angle2=180; angle2>=90; angle2--){ //ciclo for che sposta l'angolo del servo
Testa.write(angle2);
delay(30);}
delay(2000);
//------------------------------
//for (angle2=135; angle2>=90; angle2--){ //ciclo for che sposta l'angolo del servo
// Testa.write(angle2);
//delay(30);}
//delay(2000);
//------------------------------
}