Rileva ostacoli con Ultrasonic HC-SR04 e con aggiunta di servo motori – Parte 6bis

Rileva ostacoli con Ultrasonic HC-SR04 e con aggiunta di servo motori – Parte 6bis

Impariamo ora a programmare il nostro robot in modo tale da farlo navigare autonomamente, evitando gli ostacoli e “guardandosi” intorno decidendo dove girarsi.

Per questo sketch usiamo il sensore Ultrasonic HC-SR04 come nella lezione precedente:

hc-sr04_ultrasonic_sensor_distance_measuring_module_1_

con aggiunta di 2 servomotori.

Inizialmente il robot orienta l’Ultrasonic HC-SR04 di fronte a sè da qualsiasi posizione esso si trovi.

SAMSUNG

Ora ecco il codice. Cliccare qui sotto per il download.

Una piccola dimostrazione delle funzioni principali del robot è visibile nel video sottostante.


N.B. E’ necessaria la libreria da me modificata per le funzioni di base del motore. Si può scaricare da qui.

Librerie AFMotor di Motor Shield Adafruit + RobotMotorFunction per le funzioni principali dei motori
13.2 KiB
1978 Downloads
Dettagli

Acquista il sensore

Share This:

5 responses to “Rileva ostacoli con Ultrasonic HC-SR04 e con aggiunta di servo motori – Parte 6bis”

  1. feicle ha detto:

    ciao simone cortesemente si potrebbe avere lo sketch dei led con servo grazie

    • Simone ha detto:

      Ciao, intendi uno sketch che permetta al robot di usare il pan tilt ma che, in aggiunta al cambio di direzione, faccia illuminare i led rosso-giallo-verde a seconda della distanza?
      Se è questo che intendi allora ti posso dare una mano.. Purtroppo non ho il robot fisicamente da provare in questa configurazione ma ti posso dare qualche dritta.

      Prendi spunto dallo schema e dallo sketch senza servo (qui puoi vedere lo schema per i led).
      link

      Poi nello sketch aggiungi quanto segue:

      NELLE VARIABILI GLOBALI:
      int rosso = A2, giallo = A3, verde = A4;

      NEL SETUP:
      pinMode(rosso, OUTPUT);
      pinMode(giallo, OUTPUT);
      pinMode(verde, OUTPUT);

      NEL LOOP va fatto invece un pochino di lavoro in più…

      Dove c’è scritto:
      if(front_cm < 30) { ..... digitalWrite(giallo, LOW); digitalWrite(rosso, HIGH); digitalWrite(verde, LOW); ...... }

      In questo modo sotto i 30 cm oltre a cambiare direzione accende la luce rossa..

      Dopo questo if, prima della chiusura del loop potresti poi inserire:

      else if (front_cm >= 30 and front_cm < 40) { digitalWrite(giallo, HIGH); digitalWrite(rosso, LOW); digitalWrite(verde, LOW); } else { digitalWrite(giallo, LOW); digitalWrite(rosso, LOW); digitalWrite(verde, HIGH); }

      In questo modo tra i 30 e i 40 è accesa la luce gialla ma non fa nulla, altrimenti è verde...
      Potresti poi integrare anche la diminuzione di velocità così come è fatto nello sketch dell'articolo che ti ho linkato.

      Purtroppo ripeto, non posso provare il codice perchè non ho più il robot in quella configurazione ma penso proprio che così funzionerà 🙂

  2. feicle ha detto:

    ok grazie domani ci provo e vediamo se ci riesco, ti faccio sapere

  3. feicle ha detto:

    ciao simone grazie ci sono riuscito va alla grande per perfezionarlo secondo me ci vorrebbe un altro sensore nel posteriore e vorrei aggiungere un hc06 modulo bluthoot da comandare con android appena hai un po di tempo mi dai qualche suggerimento per provarci ti ringazio tantissimo e complimenti per tutto

    • Simone ha detto:

      Ciao. Perfetto. Per il sensore posteriore puoi farlo esattamente come quello anteriore (senza pan tilt), magari glielo fai controllare solo nelle manovre.
      Per il bluetooth prova a vedere il progetto completo: link

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.