Controllo di un servo con un sensore a ultrasuoni

Buongiorno a tutti! Premetto che sono una ‘novellina’ sia della programmazione che dell’elettronica; Sto cercando di realizzare un carillon con un sensore a ultrasuoni, la ballerina è mossa da un servo che ho modificato affinché non si fermi a centottanta gradi; la mia intenzione è quella di attivare il servo quando il sensore rileva un ostacolo a meno di dieci centimetri; lo skech funziona correttamente fino a questo punto; quello che vorrei fare ora è stoppare il servo al secondo ‘tocco’;
ho cercato e sperimentato varie soluzioni, tra le quali l’uso di un contatore; ma pare che il sensore non continui la lettura dopo aver rilevato il primo passaggio a meno di 10cm.
Spero che possiate aiutarmi, copio il codice che vale sempre più di mille parole! Grazie!

#include<Servo.h>
const int triggerPort = 9;
const int echoPort = 10;
Servo myservo;
int pos=0;
int contatore=0;

void setup() {

pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
 myservo.attach(7);
Serial.begin(9600);
Serial.print( "Sensore Ultrasuoni: ");
}

void loop() {

digitalWrite( triggerPort, LOW );
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );

long durata = pulseIn( echoPort, HIGH );

long distanza = 0.034 * durata / 2;
Serial.println(distanza);



if(distanza <=10) {
 contatore=contatore+1;
   float resto= contatore/2;
while (resto !=0) {
 for (pos = 0; pos <= 360;pos += 1) 
 { 
   myservo.write(pos);              
   delay(5000);                       
} 
for (pos = 360; pos >= 0;pos -= 1) 
 { 
   myservo.write(pos);              
   delay(5000);                       
   } }  
} 
      
delay(2000);
}

Buongiorno e benvenuta sul forum,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

… dopo di che, fatto quanto sopra, sempre in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Grazie :slight_smile:

Guglielmo

Grazie e scusatemi!

Maria7:
Grazie e scusatemi!

... nessun problema, ma ... fai quanto ti ho detto al post #2 :wink:

Guglielmo