braccio robot sketch finale – quarta parte

In questo ultimo articolo dedicato al braccio robot leggerai come realizzare la versione finale del progetto di Enrico.

braccio robot sketch

Ho voluto dedicare spazio alla fase progettuale del braccio robot per chiarire che un progetto come questo non lo si realizza in pochi giorni, occorre una accurata fase progettuale e dei test di funzionamento che a volte possono risultare anche molto simili al risultato finale ma che solo attraverso i quali puoi avere un’idea precisa della fattibilità del tuo progetto.

Di tutti i miei progetti pubblico solo il risultato finale senza annoiarti con gli studi e le fasi di test che mi portano a realizzare il progetto stesso.

Tornando al braccio robot di Enrico puoi leggere i precedenti articoli introduttivi:

E sei quindi giunto all’ultimo articolo dedicato al progetto.

Il video del progetto arduino

Solitamente il video lo lascio per ultima chicca in ogni articolo, ma in questo caso preferisco mostrarti il video prima di descrivere lo sketch perché così ti sarà più chiaro il funzionamento dello sketch:

Braccio robot sketch

Questo lo sketch realizzato da Enrico:

#include <Servo.h>

Servo mioservo1;
Servo mioservo2;
Servo mioservo3;
Servo mioservo4;
Servo mioservo;
int angolo =0;

void setup() {
  mioservo.attach(8);
  mioservo1.attach(9); 
  mioservo2.attach(10);
  mioservo3.attach(11);
  mioservo4.attach(12);
}

void loop() {
   //Posizione iniziale//
   mioservo.write(155);
   mioservo1.write(85);
   mioservo2.write(77);
   mioservo3.write(75);
   mioservo4.write(5);
   delay(2000);

   // inizio presentazione movimenti//
   mioservo1.write(85);
   delay(2000);
   mioservo3.write(155);
   delay(2000);
   mioservo3.write(0);
   delay(2000);
   mioservo3.write(75);
   delay(2000);
   mioservo4.write(150);
   delay(1000);
   mioservo4.write(5);
   delay(1000);

   for(angolo = 77; angolo < 150; angolo += 1)  { 
    mioservo2.write(angolo);
    delay(20);
   }
   delay(2000);
   for(angolo = 150; angolo > 77; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(20);
   }
   delay(2000);
   mioservo3.write(30);
   delay(2000);
   mioservo2.write(26);
   delay(2000);
   mioservo4.write(150);
   delay(1000);
   mioservo4.write(5);
   delay(3000);
   
   // dimostrazione di rotazione//
   for(angolo = 150; angolo > 120; angolo -= 1) { 
    mioservo.write(angolo);
    delay(20);
   } 
   delay(500);
 
   for(angolo = 120; angolo > 90; angolo -= 1) { 
    mioservo.write(angolo);
    delay(20);
   } 
   delay(500);
 
   for(angolo = 90; angolo > 60; angolo -= 1) { 
    mioservo.write(angolo);
    delay(20);
   }
   delay(500);
 
   for(angolo = 60; angolo > 30; angolo -= 1) { 
    mioservo.write(angolo);
    delay(20);
   }
   delay(500);
 
   for(angolo = 30; angolo > 1; angolo -= 1) { 
    mioservo.write(angolo);
    delay(20);
   }
   delay(2000);
  
   for(angolo = 155; angolo > 35; angolo -= 1) { 
    mioservo.write(angolo);
    delay(40);
   }
   delay(2000);
   
   for(angolo = 30; angolo < 75; angolo += 1) { 
    mioservo3.write(angolo);
    delay(50);
   }

   for(angolo = 26; angolo < 150; angolo += 1) { 
    mioservo2.write(angolo);
    delay(10);
   }
   delay(1000);

   for(angolo = 85; angolo < 145; angolo += 1) { 
    mioservo1.write(angolo);
    delay(50);
   }

   for(angolo = 35; angolo < 155; angolo += 1) { 
    mioservo.write(angolo);
    delay(30);
   }
   delay(1000);

   mioservo4.write(150);
   delay(1000);
   mioservo4.write(5);
   delay(1000);

   // giro con alzamento braccio//
   for(angolo = 145; angolo > 125; angolo -= 1) { 
    mioservo1.write(angolo);
    delay(40);
  }
  for(angolo = 155; angolo > 125; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 150; angolo > 100; angolo -= 1) { 
    mioservo.write(angolo);
    delay(60);
  }
  for(angolo = 125; angolo > 105; angolo -= 1) { 
    mioservo1.write(angolo);
    delay(40);
  }
    
  for(angolo = 125; angolo > 100; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 100; angolo > 50; angolo -= 1) { 
    mioservo.write(angolo);
    delay(25);
  }
  for(angolo = 105; angolo > 85; angolo -= 1) { 
    mioservo1.write(angolo);
    delay(40);
  }
  for(angolo = 100; angolo > 75; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 50; angolo > 5; angolo -= 1) { 
    mioservo.write(angolo);
    delay(10);
  }
  delay(500);
  
  for(angolo = 5; angolo < 150; angolo += 1) { 
    mioservo.write(angolo);
    delay(30);
  }
  delay(2000);

  // riposizionamento //

  mioservo.write(150);
  mioservo1.write(85);
  mioservo2.write(35);
  mioservo3.write(35);
  mioservo4.write(5);
  
  // recupero pezzo //
  // angolo di presa pezzo //
  
  for(angolo = 150; angolo > 30; angolo -= 1)  { 
    mioservo.write(angolo);
    delay(25);
  }
  delay(500);
  for(angolo = 35; angolo < 75; angolo += 1) { 
    mioservo3.write(angolo);
    delay(25);
  }
  delay(500);
  for(angolo = 35; angolo < 150; angolo += 1) { 
    mioservo2.write(angolo);
    delay(25);
  }
  
  // abassamento braccio //
  for(angolo = 85; angolo < 149; angolo += 1) { // angolo abbassa// 
    mioservo1.write(angolo);
    delay(40);
  }
  delay(500);
  
  mioservo4.write(150);
  delay(1000);
  for(angolo = 75; angolo < 95; angolo += 1) { 
    mioservo3.write(angolo);
    delay(30);
  }
  delay(500);
  mioservo4.write(16);   // gradi presa  //
  delay(500);

  // rialzamento braccio //
  for(angolo = 149; angolo > 105 ; angolo -= 1) { 
    mioservo1.write(angolo);
    delay(30);
  }
  for(angolo = 150; angolo > 120; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(30);
  }
  for(angolo = 95; angolo > 80; angolo -= 1) { 
    mioservo3.write(angolo);
    delay(30);
  }
  for(angolo = 120; angolo > 100; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 80; angolo > 50; angolo -= 1) { 
    mioservo3.write(angolo);
    delay(30);
  }
  for(angolo = 100; angolo > 70; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 50; angolo > 35; angolo -= 1) { 
    mioservo3.write(angolo);
    delay(30);
  }
  
  // rotazione //
  for(angolo = 30; angolo < 128; angolo += 1) { 
    mioservo.write(angolo);
    delay(30);
  }
  // abbassamento pezzo //
  
  delay(1000);
  for(angolo = 70; angolo < 100; angolo += 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 35; angolo < 100; angolo += 1) { 
    mioservo3.write(angolo);
    delay(30);
  }
  for(angolo = 100; angolo < 130; angolo += 1) { 
    mioservo2.write(angolo);
    delay(40);
  }
  for(angolo = 105; angolo < 130; angolo += 1) { 
    mioservo1.write(angolo);
    delay(40);
  }
  delay(1000);
  mioservo4.write(150);
  delay(1000);

  for(angolo = 100; angolo > 35; angolo -= 1) { 
    mioservo3.write(angolo);
    delay(2);
  }
  for(angolo = 130; angolo > 85; angolo -= 1) { 
    mioservo1.write(angolo);
    delay(25);
  }
  for(angolo = 130; angolo > 33; angolo -= 1) { 
    mioservo2.write(angolo);
    delay(25);
  }
  delay(1000);
  mioservo4.write(5);
  delay(20000);
}

commentiamolo insieme per capire bene come si muove ogni singolo servo:

linea 001: includi la classe Servo.h;

linee 003-007: definisci i 5 oggetti Servo a cui colleghi ciascun movimento del braccio robot, io ti suggerisco di chiamare ciascun oggetto con il nome dell’articolazione ad es.: mano, polso, gomito, ecc.. ti sarà più semplice programmare i movimenti del braccio;

linea 004: definisci una variabile angolo che userai per definire gli angoli da far realizzare al braccio;

linee 011-015: definisci i pin a cui sono collegati i singoli servo;

linee 020-025: imposta la posizione iniziale del braccio dando ad ogni servo la posizione da assumere ed attendi 2 secondi che tutti abbiano raggiunto la posizione indicata;

linee 028-039: impartisci a ciascun servo la posizione da raggiungere aggiungendo dopo ogni movimento un tempo necessario al raggiungimento della posizione desiderata;

linee 041-044: partendo da un angolo di 77 gradi incrementi di un grado alla volta fino ai 155 gradi del servo2, attendendo 20 millisecondi per ciascun grado da raggiungere;

linee 046-049: esegui il medesimo movimento delle linee 041-044 ma al contrario, tornando alla posizione iniziale;

linee 051-058: posiziona i servo 2,3 e 4 alle posizioni indicate;

linee 061-064: partendo dal grado 150 fino al grado 120 posiziona myservo al grado desiderato, attendendo per ciascun grado 20 millisecondi per consentire al servo di raggiungerlo;

linee 067-116: esegui altri spostamenti per gli altri servo con uguale metodo variando solo gradi e servo da spostare;

linee 119-122: posiziona il servo4 prima al grado 150 e dopo un secondo al grado 5;

linee 124-168: usando i metodi che hai appreso sopra, nella parte di dimostrazione del movimento puoi adesso impartire al braccio robot il movimento necessario a ruotare il braccio e contemporaneamente a sollevarlo;

linee 170-177: imposta i gradi dei servo per riposizionare il servo;

linee 178-211: prepara il braccio ed esegui la presa dell’oggetto;

linee 213-241: solleva il braccio con il pezzo preso;

linee 243-247: fai ruotare il braccio da 30 gradi a 128 gradi in modo da posizionare il pezzo nella sede di destinazione;

linee 248-285: posiziona il braccio per lasciare il pezzo raccolto nella posizione ideale e lascia la presa riportando il braccio lontano dall’oggetto appena posizionato.

Compreso il funzionamento del braccio e dello sketch che lo controlla potrai facilmente gestire il software per realizzare tutti i percorsi che ti vengono in mente e per far fare al tuo braccio tutti i movimenti che vuoi o che ti servono nel tuo progetto.

Grazie Enrico per aver condiviso con tutti noi questo progetto !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/braccio-robot-sketch-finale-quarta-parte.html

51 comments

Skip to comment form

    • pietro on 14 Giugno 2015 at 19:14
    • Reply

    abbiamo costruito il braccio robot ma abbiamo seri problemi a farlo muovere.

    IMPLORIAMO IL VOSTRO AIUTO ( lo stiamo portando come progetto per la maturità)

    1. Ciao Pietro,
      se non specifichi che tipo di problemi incontri non posso aiutarvi.
      Considera che non correggo sketch e non è possibile inserirli nei commenti, io posso solo aiutarti chiarendoti i dubbi se li poni in modo chiaro.

    • Jacopo on 21 Agosto 2015 at 12:44
    • Reply

    Ciao Mauro,
    Come potrei fare se volessi inserire la cinematica inversa in maniera tale da controllare il movimento del robot?

    1. Ciao Jacopo,
      scusami ma non sono molto ferrato in meccanica, cosa intendi per cinematica inversa ?
      Lascio comunque il commento on-line per l’autore del progetto in modo che possa risponderti direttamente.

    • Jacopo on 21 Agosto 2015 at 13:16
    • Reply

    Vorrei controllare i motori in modo tale da girare il proprio asse fino a raggiungere un angolo preciso

    1. Ciao Jacopo,
      non sono certo di aver compreso fino in fondo.
      Questo robot è costruito con servocomandi per cui dare il comando che desideri da arduino ed ottenere il movimento che ti occorre.

    • Angelo on 24 Febbraio 2016 at 15:11
    • Reply

    Ciao Mauro,
    vorrei provare anche io a cimentarmi in un progetto del genere.
    Ho un paio di domande, volendo dare al robot un braccio fisso che tiene “in mano” una saldatrice a filo continuo, c’è un modo per far riconoscere ad arduino la distanza (che varia) tra la lamiera e la punta della saldatrice?
    E Volendo, è possibile gestire il tutto utilizzando il meno cavi possibili ed avere un radiocomando per fare il tutto a distanza di sicurezza?
    Per quanto riguarda la distanza che varia, per farti capire meglio.
    Considera la stessa base del robot (Piatta), che deve saldare un pezzetto di ferro su un dosso, anch’esso a base piatta, c’è un modo per far riconoscere ad arduino il dislivello di dove è posizionato il pezzetto di ferrò e dove la punta della saldatrice deve intervenire?
    Un ultima domanda, ho visto che accogli anche le richieste di realizzazione progetti, potrebbero interessarti la realizzazione di due progetti? questo ed un altro simile?

    Grazie per la pazienza
    Ciao
    Angelo

    1. Ciao Angelo,
      il progetto riguarda un braccio giocattolo o per sperimentazione didattica.
      Per quello che desideri fare tu dovrai usare almeno un braccio robot tipo KUKA o similia

    • Davide on 24 Aprile 2016 at 13:38
    • Reply

    Buongiorno, non sono molto pratico di arduino, perchè quando copio ed incollo lo sketch mi da un errore relativo al comando delay?

    1. Ciao Davide,
      verifica che non vi siano caratteri sporchi interno a ciascuna linea, poi indicami l’errore o cercalo nel blog, spesso sono errori noti.

        • davide on 1 Maggio 2016 at 13:25
        • Reply

        Grazie mille,ho risolto, adesso mi chiedevo come faccio a comandarlo attraverso due joystick…Sa per caso come vanno modificati i parametri? Grazie in anticipo.

        1. Ciao Davide,
          dipende da come intendi usare i 2 joystick e che pipo di controllo desideri impostare.
          Considera ciascun joystick come due potenziometri e trattali come tali.

      • Andrea on 22 Luglio 2016 at 10:50
      • Reply

      Dico io… Ma ti costa tanto segnalare il problema e dare un’aiuto a chi invece non ha trovato l’errore, invece che fregartene?

      1. Ciao Andrea,
        se mi scrivi il problema ?
        Penso che tutti i lettori del blog, tranne te, sarebbero in disaccordo con la tua affermazione con tutto l’aiuto che do a tutti gratuitamente.

  1. Ciao Mauro,dopo aver compilato mi esce l’errore expected constructor,distructor or type conversione before'(? token ; all’ultimo delay(20000).Cosa devo fare?.Grazie e complimenti per il tuo sito.

    1. Ciao,
      controlla che tutte le parentesi siano aperte e chiuse correttamente.
      Controlla di avere tutte le librerie installate e che non vi siano “;” messi in posti errati.

  2. Ciao Mauro trovato al rigo 197 :for(angolo = 85; angolo < 149; angolo += 1) // angolo abbassa// { , ////si nota la parenresi graffa posta dopo il commento.Deve essere :for(angolo = 85; angolo < 149; angolo += 1) {, /// angolo abbassa.Ciao

    1. Ciao Federico,
      perfetto, grazie per la segnalazione, sarà di certo utile a tanti altri che riprodurranno il progetto.
      Io ho corretto lo sketch 🙂

    • Luca on 12 Aprile 2018 at 13:01
    • Reply

    Ho acquistato un braccio a 5 gradi di lberta + pinza potrebbe mica inviarmi lo schema elettrico con il relativo programma.Ringrazio e saluto cordialmente

    1. Ciao Luca,
      forse volevi scrivere al venditore, hai scritto sul blog sbagliato.

    • Loris on 5 Marzo 2019 at 18:44
    • Reply

    Buonasera esiste uno sketch che mostri un braccio a 6 servo che prelevi un oggetto e lo sposta?..se si se potete fornirmi informazioni in merito. Grazie

    1. Ciao Loris,
      sul blog ricordo di aver pubblicato un progetto che sfrutta un servo per ciascuna articolazione.
      Lo hai già letto e non è adatto al tuo scopo?

    • Loris on 5 Marzo 2019 at 18:54
    • Reply

    Continuo il messaggio precedente,mi chiamo Loris e ho acquistato un braccio meccanico a 6 servo con scheda ARDUINO UNO e SHIELD OCTOPUS compatibile al 100% con ARDUINO. Sono molto in difficolta’ e avrei bisogno di consigli poichè sono nuovo della materia. Mi occupo di Informatica ma di altro genere e ho 49 anni e mi sto appassionando alla robotica.Sto imparando la programmazione wiring e ho scaricato uno sketch di esempio, OCTOPUS TEST, ma il braccio esegue movimenti repentini e non apre e chiude la pinza pur funzionando il servo ad essa collegato. Avrei bisogno di sapere se esite un programma che mi mostri come il braccio sposti un oggetto. Inoltre ho visto dei KIT ARDUINO per principianti dove ci sono diversi oggetti su cui sviluppare i primi progetti. E consigliabile acquistarne uno?…Grazie mille in ogni caso e spero in un suo valido aiuto . Saluti

    1. Ciao Loris,
      il servo della pinza lo hai verificato con un esempio semplice simile a Knob ( esempi già presenti nell’IDE Arduino ) ?
      La robotica è una materia complessa e la branca che si occupa dei bracci antropomorfi implica molte conoscenze che anche io sto studiando da qualche anno.
      Sul Web esistono certamente dei progetti da cui puoi prendere spunto, tuttavia il lato stimolante di Arcuino è che stimola, a qualsiasi età, la curiosità personale.

      Sicuramente nei prossimi mesi pubblicherò altri studi eseguiti su tale argomento e spero possano essere per te utili.

    • Loris on 6 Marzo 2019 at 21:35
    • Reply

    Ciao Mauro grazie mille perchè ti seguiro’ molto volentieri, sai iniziavo a sentirmi un povero’ cretino che non riesce a far funzionare uno strumento apparentemente semplice. Ho una bimba di 7 anni che a scuola va benissimo in modo particolare in matematica. Quando posso gli sto facendo fare dei test su un sito americano code.org, molto carini e fatti benissimo sulle basi dell’informatica e robotica al fine sia di creare stimoli per la programmazione sia per abituarsi ad affrontare un problema scomponendolo in problemi piu’piccoli e quindi di semplice soluzione. La bimba risponde bene e mi chiede quando mettero’ in funzione il braccio. Cio’ per dirti che lei unitamente alle tue parole e dagli articoli che sto iniziando a leggere che ti appartengono , mi sento motivato ad andare avanti in questa mia passione. Grazie ancora

    1. Ciao Loris, raccontami i progressi che farai.

        • Loris Rumolo on 24 Marzo 2019 at 11:46
        • Reply

        Salve Mauro solo in questi giorni sto avendo un po’ di tempo da dedicare al braccio. Ho comprato una base in legno di faggio e l’ho fissato li. L’assistenza di Futura Elettronica , mi ha fornito un software di test per il movimento dei servo e della pinza. Ora sto cercando di modificarlo per fargli prendere un oggetto . Mi sto aiutando con la ricerca delle istruzioni e il loro significato come per esempio analogwite ecc..Faccio un po fatica , poichè no ci sono commenti dettagliati nello sketch, a capire per esempio un ciclo di questo tipo innestato nella void loop:
        for (i=50; i<150; i++){
        Octopus.analogWrite(shoulderPin, to(i));
        delay(durata);
        }. Immagino che scriva sul relativo pin della scheda octopus i valori del ciclo ma, perchè da 50 a 150?.. La costante durata è fissata a 50. Come potrai immaginare sono alle primissime armi e sto cercando di approfondire. Il braccio funziona devo'pero' saperlo programmare per spostare un oggetto. Spero anche con qualche tuo consiglio di riuscire nel raggiungimento di questo obbiettivo. Nel futuro, quando saro' piu' pratico, mi piacerebbe affiancargli un sensore per rilevamento ostacoli ma, un passo alla volta. Grazie mille

        1. Ciao Loris,
          se hai questo tipo di dubbi ti consiglio di prendere confidenza prima con i servo e con arduino seguendo un corso, puoi partecipare a qualcuno di quelli organizzati da Futura sull’argomento o leggere il mio corso arduino gratuito on-line.
          Dopo aver preso confidenza con il controllo dei servo vedrai che programmare il braccio è davvero semplice e riuscirai a comprendere e modificare anche i miei esercizi.

            • Loris Rumolo on 27 Marzo 2019 at 19:29

            Ciao Mauro non ti nascondo che avere un riferimento valido come il tuo mi sprona ad andare vanti. In questo momento sto iniziando la lettura del corso base tuo su Arduino . Grazie mille ancora. Se ti fa piacere ti aggiornero’ e ti faro ‘ alcune domande se avro’ dei dubbi su qualcosa che non mi sara’ chiaro.

          1. Certo Loris,
            pieno sostegno a chi si impegna e fino a che posso ti darò supporto e risposte ai commenti che mi invierai.

    • Rumolo Loris on 10 Maggio 2019 at 21:53
    • Reply

    Ciao Mauro volevo comunicarti che ho iniziato il tuo corso sulla piattaforma Arduino e ho gia’ compreso alcuni semplici esempi che hai fatto . Mi sono pero’ fermato un po’ per poter avere la possibilita’ di acquistare un Kit arduino per effettuare i test con i componenti . Trovo il tutto molto interessante. Inoltre mi faceva piacere dirti che il programma di esempio che mi è stato fornito per il funzionamento dei servo relativi al braccio che ho acquistato, sono riuscito a modificarlo , i miei primi passi, per poter non solo comprenderne il flusso ma, anche per farlo prendere un oggetto e spostarlo e poi rilasciarlo. Non è molto ma mi sento soddisfatto e motivato ad andare avanti. Non appena potro’ acquistare il kit, a breve, credo mi serva qualche tuo consiglio. Grazie

    1. Ottimo Rumolo,
      organizzeremo, probabilmente, un corso sulla costruzione e programmazione di un braccio robot come questo.

    • Loris Rumolo on 19 Maggio 2019 at 17:34
    • Reply

    Grazie Mauro , ti chiedo la cortesia di aggiornarmi o indicarmi il link a cui collegarmi per verificare se ci sono novita’ in merito.Nel frattempo cerco di andare avanti e continuo ad effettuare variazioni al codice affinchè il braccio, esegua movimenti diversi. Spero di riuscirci. Un saluto e a presto

    1. Ciao Loris,
      ogni nuovo articolo che scrivo lo pubblico su questo blog.

    • Loris Rumolo on 29 Giugno 2019 at 11:48
    • Reply

    Buongiorno Mauro ti chiedo un aiuto. Questa mattina non riesco piu’ a caricare il software sulla scheda. Mi da il seguente errore :Lo sketch usa 6014 byte (18%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
    Le variabili globali usano 242 byte (11%) di memoria dinamica, lasciando altri 1806 byte liberi per le variabili locali. Il massimo è 2048 byte.
    avrdude: ser_open(): can’t open device “\\.\COM3”: Impossibile trovare il file specificato.
    Ha sempre funzionato. L’unica cosa e che Arduino mi ha chiesto di aggiornare le librerie e l’ho fatto.Ho provato a riavviare il pc e reinserire il cavo nella porta del pc ma, l’errore è lo stesso. Anche cambiando la porta non va. Da dove posso eventualmente scaricare il file che manca?..Grazie

    • Loris Rumolo on 29 Giugno 2019 at 12:16
    • Reply

    Ciao Mauro ho risolto . Dal PC ho effettuato il rimuovi del dispositivo connesso e ricollegandolo lo ha creato correttamente. Grazie mille comunque..L’avventura continua, anche se a rilento ,per motivi di tempo. Saluti

    1. Ottimo Loris.

    • Loris Rumolo on 4 Ottobre 2019 at 21:34
    • Reply

    Buonasera Mauro ti chiedo un aiuto . Il braccio ha i servo collegati alla scheda Shield OCTOPUS che a sua volta è collegata alla scheda arduino. Non riesco ad intercettare la posizione 0 dei servo o come fare per intercettare l’asse x e l’asse y per poter agevolmente costruire dei cicli per il movimento . Nel software di test c’è un passaggio che è:

    [[ codice rimosso in automatico ]]

    Mi aiuti a capire cosa vuol dire questa routine e se posso utilizzare come posizione 0 il valore 120 per tutti e 6 i servo?….Grazie mille

    1. Ciao Loris,
      come hai letto nel regolamento del sito non è consentito incollare codice nei commenti.
      In merito alla tua richiesta ti consiglio di scrivere, o usare un semplice esempio, che ponga a 0° gradi i servo ed utilizzarlo per l’impostazione iniziale.
      Io ho eseguito così il setting del mio braccio prima di montarlo.

    • Loris Rumolo on 7 Ottobre 2019 at 22:32
    • Reply

    Buonasera Mauro chiedo scusa per l’errore commesso. Provero’ a ripartire settando i servo. Grazie mille

    • Loris Rumolo on 10 Ottobre 2019 at 21:41
    • Reply

    Buonasera Mauro se hai novita’ sul corso di programmazione di un braccio robot , mi piacerebbe averne notizia. Grazie.

    1. Ciao Loris,
      purtroppo no, in questo periodo dell’anno sono impegnato con molti corsi Base/Intermedio/Avanzato e Robotica ( non braccio ) e non riesco a preparare un altro corso a breve.
      Scriverò comunque sul blog quando questo corso sarà pronto 🙂

    • Loris Rumolo on 13 Ottobre 2019 at 10:36
    • Reply

    Ciao Mauro mi faceva piacere comunicarti che sono riuscito a sviluppare uno sketch che muov eil braccio prendendo un oggetto e spostandolo in un punto diverso e rilasciarlo. Ho faticato moto sia perchè sono un principiante sia perchè i servo, sono agganciati alla scheda Octopus e non direttamente sulla scheda Arduino . Ho dovuto sfruttare il software di test ,stravolgendolo del tutto , che mi hanno fornito di cui la parte superiore pubblicata erroneamente. Quella parte li trasforma in gradi il segnale PWM inviato alla scheda pertanto , dandogli delle posizioni iniziali , sono riuscito a fornirgli le istruzioni per fargli eseguire il flusso che avevo in mente. Per me una piccola grande vittoria e questo lo devo anche a te che e cio’ che hai detto poichè mi hanno incoraggiato a non mollare. Ho fatto ore ed ore di tentativi ragionati e alla fine ci sono riuscito. Inoltre sto eseguendo anche i progetti decritti nel KIT Arduino in mio possesso e dal tuo link. A tal proposito volevo chiederti una informazione ovvero, come fare per concretizzare con un attestato riconosciuto di un corso su Arduino. Grazie mille ancora

    1. Ciao Loris,
      bene sono contento per i tuoi risultati e sono certo che la soddisfazione sia immensa.
      In merito all’attestato a che fini ti occorrerebbe ?

    • Loris Rumolo on 14 Ottobre 2019 at 20:20
    • Reply

    Buonasera Mauro mi farebbe piacere ottenerne un attestato riconosciuto sia per me personalmente sia per aggiornare il mio curriculum e quindi per avere competenze maggiori , magari , possibilita’ diverse. Ti aggiornero’ sui miei progressi e grazie ancora.

    • Loris Rumolo on 14 Ottobre 2019 at 20:57
    • Reply

    …Anche se parlare di nuove possibilita’ alla mia eta’ per come sono le cose nel nostro paese e una vera e propria Utopia. Saluti

    • Loris Rumolo on 24 Ottobre 2019 at 20:18
    • Reply

    Buonasera Mauro se ti è possibile fornirmi qualche indicazione per avere un attestato / corso riconosciuto. Mi faceva piace comunicarti che sono riuscito a sviluppare uno sketch che contempla la gestione del braccio unitamente ad un sensore ultrasuoni HC-SR04 per il rilevamento di un ostacolo presente ad una distanza inferiore ad un certo numero di centimetri. Lo sketch sembra funzionare infatti, se pongo un oggetto vicino al sensore, il braccio si ferma e se lo rimuovo , continua il suo percorso nel prelevare /depositare un oggetto . Spero di andare ancora avanti . Grazie

    1. Ciao Loris,
      ottimo lavoro, se vorrai pubblicare il tuo progetto sono a disposizione con il blog, segui le istruzioni presenti nella sezione “collabora al blog”
      In merito all’attestato so che i corsi di Futura Elettronica rilasciano un attestato di partecipazione ma dovresti chiedere loro che valenza ha ai fini per i quali a te occorre.

    • Loris Rumolo on 25 Ottobre 2019 at 18:41
    • Reply

    Buonasera Mauro grazie per il consiglio. Per lo sketch voglio prima affinarlo e poi, se posso ,lo pubblico. Ti faro’ sapere presto.

    • Loris Rumolo on 19 Gennaio 2020 at 17:06
    • Reply

    Buonasera Mauro volevo comunicarti che ho completato anche un altro sketch che preleva un oggetto e lo deposita , svuotandone il contenuto , in un barattolo e ritorna indietro per posare lo stesso nel punto in cui è stato prelevato. Mi sto organizzando per ripetere , vedi e-mail inviate precedentemente, il video del primo progetto con il sensore ad ultrasuoni. Saluti

    1. Ottimo Loris.

Lascia un commento

Your email address will not be published.

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