Costruisci la tua maschera di Ironman e dagli vita con Arduino!

Diventa anche tu un supereroe!
per salvare il mondo ti basterà seguire le istruzioni scritte qui sotto e sarai in grado di costruirti la tua maschera di ironman!


L'idea di questo progetto mi è stata data da Emanuele, che mi ha chiesto una mano per la parte elettronica nella sezione domanda e rispondi
Dato che mi sembra un progetto molto bello e simpatico abbiamo deciso di metterlo a disposizione di tutti.


Per prima cosa affrontiamo la costruzione fisica della maschera,
richiederà una bella dose di pazienza, ma il risultato sarà stupendo! 
il materiale di consumo occorrente per la realizzazione dell'elmo è il seguente:

- un kit per vetroresina
- stucco metallico
- carta vetrata
- vernici spray (o meglio ancora vernice per pistola a spruzzo se l'avete)

per prima cosa dovete realizzare il modello in carta,
per fare questo useremo il programma pepakura viewer.
Dopo aver installato il software scaricate il modello 3d della maschera e stampatelo (è consigliata una carta un po' spessa, qui sono stati usati fogli da 200 grammi).
Realizzate il modello in carta incollando le varie parti.




Fatto ciò dovete indurire la mascherà.
Spennellate un po' di resina sia all'esterno che all'interno.
All'interno della mascherà posizionate anche i foglietti di fibra di vetro e spennellateci sopra altra resina.



Stuccate e scartavetrate la maschera per renderne la superficie liscia ed uniforme.




Inserite i giunti e i componenti per il movimento.



Ora si può passare alla verniciatura con bomboletta, o meglio a compressore.







Ora montate i servomotori e i led, nelle foto potete vedere anche i dettagli sui giunti per il movimento.
La striscia bianca che si illumina all'accensione dei led, è stata realizzata tagliando un contenitore di plastica che poi è stato opacizzato per una migliore diffusione della luce. 
I led sono stati collocati subito sopra.





Passiamo ora alla parte elettronica.
Qui di seguito potete vedere lo schema di montaggio da effettuare,
nello schema vedete un Arduino uno, ma per questioni di spazio vi consiglio un micro od un nano.
Anche la breadboard è da evitare, usate morsetti da elettricista o saldate direttamente i fili tra loro.

Il funzionamento è lo stesso visto nel video che trovate alla fine della pagina, alla pressione del pulsante si chiuderà la visiera e si accenderanno gli occhi bianchi.
Ho realizzato due versioni dello sketch, uno per il pulsante ed uno per l'interruttore a levetta, scegliete voi quello che preferite.



Quando hai finito il montaggio ti basterà caricare nel tuo Arduino il seguente sketch, e finalmente diventerai invincibile!


sketch se utilizzate un pulsante:

  1. #include <Servo.h>
  2. int led1 = 2;
  3. int led2 = 3;
  4. int led3 = 4;
  5. int led4 = 5;
  6. int led5 = 6;
  7. int led6 = 7;
  8. int bottone = 12;
  9. int statobottone;
  10. int statobottoneprecedente;
  11. int contatore;
  12. Servo dtesta;
  13. Servo stesta;
  14. void setup()
  15. {
  16.   pinMode(led1, OUTPUT);
  17.   pinMode(led2, OUTPUT);
  18.   pinMode(led3, OUTPUT);
  19.   pinMode(led4, OUTPUT);
  20.   pinMode(led5, OUTPUT);
  21.   pinMode(led6, OUTPUT);
  22.   pinMode(bottone, INPUT);
  23.   digitalWrite(12, HIGH);
  24.   dtesta.attach(9);
  25.   stesta.attach(10);
  26. }
  27. void loop()
  28. {
  29.   statobottoneprecedente = statobottone;
  30.   statobottone = digitalRead(bottone);
  31.   if (statobottone != statobottoneprecedente)
  32.   {
  33.     if (statobottone == LOW)
  34.     {
  35.       contatore++;
  36.     }
  37.   }
  38.   if (contatore % 2 == 0)
  39.   {
  40.     digitalWrite (led1, HIGH);
  41.     digitalWrite (led2, HIGH);
  42.     digitalWrite (led3, HIGH);
  43.     digitalWrite (led4, HIGH);
  44.     digitalWrite (led5, HIGH);
  45.     digitalWrite (led6, HIGH);
  46.     dtesta.write (180);
  47.     stesta.write (0);
  48.   }
  49.   else
  50.   {
  51.     digitalWrite (led1, LOW);
  52.     digitalWrite (led2, LOW);
  53.     digitalWrite (led3, LOW);
  54.     digitalWrite (led4, LOW);
  55.     digitalWrite (led5, LOW);
  56.     digitalWrite (led6, LOW);
  57.     dtesta.write (0);
  58.     stesta.write (180);
  59.   }
  60. }



Sketch da caricare se invece preferite un interruttore a levetta.

  1. #include <Servo.h>
  2. int led1 = 2;
  3. int led2 = 3;
  4. int led3 = 4;
  5. int led4 = 5;
  6. int led5 = 6;
  7. int led6 = 7;
  8. int bottone = 12;
  9. int statobottone;
  10. int statobottoneprecedente;
  11. int flag = 0;
  12. Servo dtesta;
  13. Servo stesta;
  14. void setup()
  15. {
  16.   pinMode(led1, OUTPUT);
  17.   pinMode(led2, OUTPUT);
  18.   pinMode(led3, OUTPUT);
  19.   pinMode(led4, OUTPUT);
  20.   pinMode(led5, OUTPUT);
  21.   pinMode(led6, OUTPUT);
  22.   pinMode(bottone, INPUT);
  23.   digitalWrite(12, HIGH);
  24.   dtesta.attach(9);
  25.   stesta.attach(10);
  26. }
  27. void loop()
  28. {
  29.   statobottoneprecedente = statobottone;
  30.   statobottone = digitalRead(bottone);
  31.   if (statobottone != statobottoneprecedente)
  32.   {
  33.     if (statobottone == LOW)
  34.     {
  35.       flag = 1;
  36.     }
  37.     else
  38.     {
  39.       flag = 0;
  40.     }
  41.   }
  42.   if (flag == 0)
  43.   {
  44.     digitalWrite (led1, HIGH);
  45.     digitalWrite (led2, HIGH);
  46.     digitalWrite (led3, HIGH);
  47.     digitalWrite (led4, HIGH);
  48.     digitalWrite (led5, HIGH);
  49.     digitalWrite (led6, HIGH);
  50.     dtesta.write (180);
  51.     stesta.write (0);
  52.   }
  53.   if (flag == 1)
  54.   {
  55.     digitalWrite (led1, LOW);
  56.     digitalWrite (led2, LOW);
  57.     digitalWrite (led3, LOW);
  58.     digitalWrite (led4, LOW);
  59.     digitalWrite (led5, LOW);
  60.     digitalWrite (led6, LOW);
  61.     dtesta.write (0);
  62.     stesta.write (180);
  63.   }
  64. }

Questo è il video della maschera finita!



Grazie mille a Emanuele per la splendida realizzazione della maschera e per l'idea di realizzare e condividere questo progetto!
Mandatemi le foto delle vostre realizzazioni, ciao!!!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

184 commenti:

  1. ciao il link del modello 3d della maschera è mancante ovvero mi fa scaricare nuovamente il programma... se riesci a risolvere provo la costruzione poi ti posto la realizzazione grazie....

    RispondiElimina
    Risposte
    1. Ciao Marco,
      scusa dell'inconveniente e grazie mille della segnalazione, ho corretto il link, ora è quello giusto,
      Ciao!

      Elimina
    2. Ciao marco,ho seguito con cura il tuo progetto! Funziona tutto ma l'unica cosa che vorrei fare è che quando si chiude la maschera si accendessero dopo i led cn ritardo non che si chiude la maschera con i led già accesi come posso fare col programma??Cioè voglio che appena si chiude la maschera i led si accendono dp 1 secondo dalla chiusura :)

      Elimina
    3. Ciao, mi chiamo Daniele ;)
      Quale sketch stai usando?
      Se usi il primo devi inserire prima del rigo 43 questo:
      delay (1000);
      Se usi il secondo devi inserirlo prima del rigo 47.
      Ciao!

      Elimina
    4. ciao Danile :) mi chiamo umberto cmq il primo ...ho inserito il delay ma non risponde bene mentre premo il pulsante come mai?e il lavoro delle luci è uguale non ritarda

      Elimina
    5. ah cmq che tipo di servo consiglieresti?io ho un hitec hs-81mg

      Elimina
    6. Hai ragione, prova con questo

      #include
      int led1 = 2;
      int led2 = 3;
      int led3 = 4;
      int led4 = 5;
      int led5 = 6;
      int led6 = 7;
      int bottone = 12;
      int statobottone;
      int statobottoneprecedente;
      int contatore;
      Servo dtesta;
      Servo stesta;
      void setup()
      {
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(led5, OUTPUT);
      pinMode(led6, OUTPUT);
      pinMode(bottone, INPUT);
      digitalWrite(12, HIGH);
      dtesta.attach(9);
      stesta.attach(10);
      }
      void loop()
      {
      statobottoneprecedente = statobottone;
      statobottone = digitalRead(bottone);
      if (statobottone != statobottoneprecedente)
      {
      if (statobottone == LOW)
      {
      contatore++;
      }
      }
      if (contatore % 2 == 0)
      {
      dtesta.write (180);
      stesta.write (0);
      delay(1000);
      digitalWrite (led1, HIGH);
      digitalWrite (led2, HIGH);
      digitalWrite (led3, HIGH);
      digitalWrite (led4, HIGH);
      digitalWrite (led5, HIGH);
      digitalWrite (led6, HIGH);
      }
      else
      {
      digitalWrite (led1, LOW);
      digitalWrite (led2, LOW);
      digitalWrite (led3, LOW);
      digitalWrite (led4, LOW);
      digitalWrite (led5, LOW);
      digitalWrite (led6, LOW);
      dtesta.write (0);
      stesta.write (180);
      }
      }

      Elimina
    7. Per il servo non saprei, dipende principalmenti dalle dimensioni..
      Se comunque ne hai uno prova con quello e vedi come va.

      Elimina
    8. grazie daniele di cuore ci provo subito :3

      Elimina
    9. mi da errore nel "servo dtesta"

      Elimina
    10. alla prima riga sostituisci #include con #include "servo.h"
      ciao!

      Elimina
    11. Ciao Daniele ho provato anche io ma mi da sempre quest errore del servo.. che faccio?

      Elimina
    12. Ciao! Hai incluso la libreria Servo vero?

      Elimina
    13. ciao!! scusa il disturbo....
      il led vanno ma i servo no....come é possibile??grazie

      Elimina
  2. Ciao, scusa il disturbo, a me i led non interessano, puoi mica segnarmi i collegamenti per eliminare quel supporto bucherellato?? grazie mille

    RispondiElimina
    Risposte
    1. OK, i fili rossi dei servo li devi collegare al rosso (+) del pacco batterie, il nero dei servo al nero (-), il pulsante o interruttore tra il pin 12 di arduino e il nero.
      Infine il nero delle pile a gnd di arduino e il rosso a vin.
      Dimmi se è tutto ok oppure se ci sono problemi, Ciao!

      Elimina
    2. perfetto, funziona salvo per il fatto che ogni volta che premo il pulsante il servo passa da una posizione estrema all'altra, forse ha caricato male il programmma?? che devo fare?? poi altro piccolo quesito, i fili dentro i buchi per esempio del 12 di arduino tu come ce li fai stare?? grazie mille per l'aiuto

      Elimina
    3. In che senso? Passano da una posizione all'altra per aprire e chiudere la maschera.
      Come puoi leggere dal post la maschera non l'ho realizzata io, ma ho aiutato il ragazzo che l'ha fatta a fare la parte elettrica e lo sketch. Comunque dalle foto si vede abbastanza bene, poi sta a te essere bravo da far passare bene i fili nel posto migliore! Ciao! :)

      Elimina
    4. ok scusa ci sono riuscito, andavano modificati invece che 180 andava regolato il dtesta e stesta a seconda della chiusura, ora funziona perfettamente, solo un altra info poi non ti disturbo più, è possibile aggiungere delle note accanto alle voci tanto per ricordarsi a cosa servono??
      che so una cosa per esempio cosi

      stesta.write (180); * (questa voce serve per la posizione bassa del servo sinistro)

      Elimina
    5. Per mettere una nota metti due slash e poi scrivi quello che vuoi. La scritta diventerà grigia.
      \\esempio

      Elimina
  3. ciao..un info... ma le resistenze d quanto sono?servono una x ogni led? e se metto più potenza invece di 4 batterie non e che mi si fulmina tutto? grazie per l attenzione

    RispondiElimina
    Risposte
    1. Ciao, si devi mettere una resistenza da 220 Ohm per ogni led.
      Si l'alimentazione più corretta è quella mostrata nello schema, se metti più di 6 volt ( 4 pile da 1.5V) rischi di bruciare i motori.

      Elimina
    2. :) t faccio un po di domande perché trovo solo qua risposte e disponibilità!spero non t dispiaccia !ho il casco pronto e vorrei ultimarlo ! se uno tiene su il casco tutto il giorno.... e l arduino comunque rimane cn i led di funzionamento accesi... le pile quanto pensi durino all incirca? grazie

      Elimina
    3. Vai tranquillo ;)
      Coi led accesi direi circa 10 ore.
      Buon lavoro :)

      Elimina
    4. Allora ho provato il tutto...senza led ,perché faro una cosa a parte.quindi senza led ho seguito il procedimento descritto in un messaggio poco sopra!mi da tanti error caricando lo SKETCH ! il pulsante raffigurato sopra nello schema alla fin fine non serve se ho il mio pulsante giusto?? siccome non capisco niente di elettr. :D sto sudando per capire certe cose :D se ho il mio pulsante normale... un cavo entra e uno esce e dove vanno inseriti?? se puoi gentilmente ricapitolarmi il tutto in maniera "asilo" :) su come far i collegamenti passo per passo te ne sarei grato ! parto dalla scatola batterie, cavo rosso e nero vanno.... poi? grazie mille

      Elimina
    5. poi dopo aver fatto il collegamento del tutto carico lo sketch... copio cosi com e' con i numeri a inizio riga o non centrano? poi collego l arduino al pc e carico la dicitura ed e fatta? grazie ancora

      Elimina
    6. Si i numeri non devi copiarli, i collegamenti sbagliati non influiscono sul caricamento dello sketch.
      Ho notato un errore nello sketch del commento, infatti all'inizio, dove c'è scritto:
      #include
      Va sostituito con:
      #include
      Fai questa modifica poi carica lo sketch.
      Fammi sapere, ciao!

      Elimina
    7. ciao daniele forse intendevi #include cmq è tt ok funziona posso di una cosa?!FAI PAURA!!!GRAZIE :) sei veramente ingamba!! ti posso aggiunge su face? XD

      Elimina
    8. L'unico problema che ho è che un servo mi trema io uso dei tp MG996R ho provato pure ha mettere 4 pile separate per servo pensando che era poca potenza per due servo ma fa lo spesso...dove spaglio?!

      Elimina
    9. Intendevo include servo.h ma non me lo fa scrivere! XD
      Comunque non ho facebook!
      Aggiungimi su Google+ :)
      Per i motori le pile non c'entrano, da datasheet quel motore funziona da 4.8 a 7.2 volt. Con 4 pile sei a 6.0 volt, quindi sei perfettamente in mezzo.
      Ma hai un pulsante o un deviatore a levetta?

      Elimina
    10. ti aggiungo subito :) cmq no pulsante è strano chiuso i servo sono ok appena è aperto il servo di sinistra trema.. mmm potrebbe essere che è analogico centra qualcosa?!

      Elimina
    11. Alcuni servo hanno sotto un foro nel quale c'è un trimmer per tarare il servo.
      Altrimenti prova a scambiare i motori e prova se lo fa lo stesso.

      Elimina
    12. grazie daniele intanto monto tutto in questo momento :) l'unico problema sn i led nn capisco bene come posizionarli per non fare i "puntini di luce"?

      Elimina
    13. Non è una questione di montaggio, devi mettergli davanti qualcosa che ne diffonda la luce, prova con un pezzo di plastica bianco / semitrasparente (tipo il fustini del detersivo) e rendilo un po satinato con della carta vetrata. Ciao!

      Elimina
  4. ciao Daniele....da premettere che sei un grande!!!!!!!!!!!!!!
    complimenti davvero....
    stavi impazzendo per capire come programmare il tutto....
    ma avrei da chiederti due cose,visto che la conoscenza in materia informatica per me e meno di zero.
    Potresti gentilmente scrivermi passo passo la programmazione con interruttore,pero senza il discorso dei led?
    ......cioe' cosi come lo hai fatto in questo blog,ma senza il discorso led...
    grazie.
    E poi volevo chidereti.....se ho capito bene,durante la programmazione,l'imput di comando da interruttore a servomotori,tu lo hai fatto tramite il pin 12 giusto?.....ma se io volessi collegare all'arduino altri servo motori con altri interruttori,che faccino la stessa funzione che hai impostato per il casco,lo potrei fare?...basterebb e ricopiare la dicitura,e cambiare solo il pin,e ovviamente collegare i fili al pin che gli ho dato...garzie

    RispondiElimina
    Risposte
    1. Per fare tutto senza collegare i led è sufficiente non collegarli e lasciare il codice così.
      Se invece ti servono quei pin per collegarci altri motori fai così:
      Cancella dal codice tutte le righe che contengono la parola "led" e come dici tu copia e cambia i pin. Devi cambiare anche i nomi delle nuove variabili (ad esempio nello sketch hai la variabile "statobottone", quella nuova potresti chiamarla "statobottone2"

      Elimina
  5. Potresti cortesemente scrivermi tutta la procedura? Per favore sto impazzendo.... Allora i primi due servo, aprono il casco tramite interruttore, mentre invece gli altri due fanno lo stesso funzionamento , ma con un'altro interruttore.....grazie mille

    RispondiElimina
    Risposte
    1. Va bene, oggi appena ho un momento ti scrivo lo sketch

      Elimina
  6. Risposte
    1. Ciao, prova così!

      #include
      int bottone = 12;
      int statobottone;
      int statobottoneprecedente;
      int flag = 0;
      Servo dtesta;
      Servo stesta;

      int bottone2=11;
      int statobottone2;
      int statobottoneprecedente2;
      int flag2 = 0;
      int Servo dtesta2;
      int Servo stesta2;

      void setup()
      {
      pinMode(bottone, INPUT);
      digitalWrite(12, HIGH);
      dtesta.attach(9);
      stesta.attach(10);

      pinMode(bottone2, INPUT);
      digitalWrite(11, HIGH);
      dtesta2.attach(7);
      stesta2.attach(8);
      }
      void loop()
      {
      statobottoneprecedente = statobottone;
      statobottone = digitalRead(bottone);
      if (statobottone != statobottoneprecedente)
      {
      if (statobottone == LOW)
      {
      flag = 1;
      }
      else
      {
      flag = 0;
      }
      }
      if (flag == 0)
      {
      dtesta.write (180);
      stesta.write (0);
      }
      if (flag == 1)
      {
      dtesta.write (0);
      stesta.write (180);
      }

      statobottoneprecedente2 = statobottone2;
      statobottone2 = digitalRead(bottone2);
      if (statobottone2 != statobottoneprecedente2)
      {
      if (statobottone2 == LOW)
      {
      flag2 = 1;
      }
      else
      {
      flag2 = 0;
      }
      }
      if (flag2 == 0)
      {
      dtesta2.write (180);
      stesta2.write (0);
      }
      if (flag2 == 1)
      {
      dtesta2.write (0);
      stesta2.write (180);
      }
      }

      Elimina
    2. Ciao fai caso che la prima riga è sbagliata, purtroppo da cell non riesco a correggerla, devi scriverla come quella del post, con servo.h

      Elimina
  7. quindi devo scrivere include #include servo.h?

    RispondiElimina
  8. cmq grazie sei davvero un grande....ti aggiornero' sul lavoro,la prossima settimana perche sto ultimando i lavori sul casco di iron ma!.....appena e turtto pronto se riesco publico il video del lavoro fatto......ma mica per ogni coppia di servo,mi occore un pacco batterie di 4 stilo?....o ne basta solo uno?....grazie

    RispondiElimina
    Risposte
    1. Si la prima riga è quella che hai scritto tu, ricordati anche la punteggiatura.
      Si basta un solo pacco batterie.

      Elimina
    2. Grazie mille Daniele sei troppo forte....ho ancora due domande però.... Allora
      Prima domanda:
      Non ho l'alimentatore per Arduino, posso collegare il pacco batterie direttamente su l' Arduino? Rosso sul vin e il nero su gnd? Non si brucia tutto?poi con la stessa elettricità riesco ad alimentare sia l' Arduino che i servo? Ho letto nel blog che la piastra volendo si può anche non usare , ma basta collegare i cavi tra di loro, ma tutto il collegamento, va fatto prima che lo programmo tramite il cavo del PC giusto?
      Seconda domanda:
      Quindi collego tutti i cavi rossi tra di loro, e tutti i neri tra di loro, e poi faccio partire dal gruppo di collegamento, un unico cavo per parte che vada il rosso in vin e il nero in gnd..ma gli interruttori come fanno a prendere elettricità?

      Elimina
  9. Risposte
    1. Ahaha scusa non avevo letto il commento :)
      Puoi usare lo stesso pacco batterie per i servo.
      Per alimentare Arduino tramite il pin vin devi mandargli una tensione di MASSIMO 5.5 Volt.
      Quindi con le 4 pile da 1.5volt arrivi a 6volt e non va bene.
      Le pile ricaricabili hanno una tensione leggermente più bassa (circa 1.2 volt) quindi dovresti starci.
      Misura comunque la tensione con un voltmetro.
      Negli interruttori passa la corrente che esce dal pin di arduino.
      Ciao!

      Elimina
  10. Grazie Daniele sei un drago!!!!
    Cmq se invece del pin vin, usassi una batterie da 9 volt...sai quelle rettangolari, e la collegassi con uno spinotto direttamente alla'ingresso elettrico di dove in teoria dovrei collegarci l'alimentatore ( che non ho :-( !!! ) che dici potrebbe funzionare tutto cmq?

    RispondiElimina
    Risposte
    1. Scusa nel commento prima ho commesso un'errore, nel pin 5V puoi mettere dentro i 5 volt (max 5.5) infatti da quel pin puoi sia dare che prendere l'alimentazione.
      Mentre nel pin Vin devi mettere una tensione da 7 a 12v, come nel jack.
      In pratica sono la stessa cosa.
      Io ti consiglio di prendere il pacco da 4 pile ricaricabili da mettere nel pin 5v.
      Se vuoi usare la batteria da 9v devi collegarla al pin vin, oppure al jack.
      Comunque non ti consiglio la batteria da 9v perché ha una capacità minore, e quindi ti durerà di meno.

      Elimina
  11. OK grazie...vabbe mi durerà di meno quanto?...mica dura 5 minuti?...tanto io i servo li alimento con il pacco batterie, invece l'Arduino con la pila 9 volt! Solo una domanda, visto che i collegamenti tra il jack e i bottoncini della batteria li faccio io, se in caso dovessi per errore collegare i fili al contrario, e poi lo vado ad inserire nel jeck dell' Arduino, mica si brucia?....male che vada non funziona, e mi basta ricambiare i collegamenti sulla pila

    RispondiElimina
    Risposte
    1. Col jack l'arduino non si brucia perché c'è un diodo di protezione, in ogni caso fai attenzione.
      Per la pila da 9volt OK!

      Elimina
  12. grazie mille....ti aggiorno prossimamente....sei il top

    RispondiElimina
  13. ciao Daniele
    grossissimo problema:
    ho fatto tutta la dicitura che mi hai mandato,ma i servo sembrano impazziti...non rispondono agli ordini che gli do,e fanno quello che vogliono!!!!!!!!!!!!!!!ora butto tutto dalla finestra...dammi un consiglio grazie...uno dei due addirittura newmmeno si muove,ma trema soltanto

    RispondiElimina
    Risposte
    1. Ciao, prova i servo con questo tutorial
      http://www.danielealberti.it/2013/05/arduino-servomotore-rotazione-continua.html?m=1

      Elimina
    2. Ho visto ma come faccio ad alimentarlo a pile?... Ma non esiste in modo magari che appena effettuano il primo giro da 180 gradi, in automatico si toglie la elettricità hai servo, e viceversa quando rifanno il giro, stessa cosa,? Magari si può inserire questo tipo di ordine durante la programmazione di Arduino...Se e si fammi sapere

      Elimina
    3. Per l'alimentazione può esseri utile l'ultimo post che ho pubblicato, in teoria funziona già come dici tu, quindi verifica i tuoi servo come ti avevo detto.
      Per alimentare i servo fai riferimento allo schema che c'è in questo post

      Elimina
    4. Niente non vanno! Sembrano come impazziti....appena li collego, vanno come matti....ne ho 8, e fanno tutti e 8 cosi...! Chiaramente ho provato a collegarli anche uno per volta,e fanno sempre uguale!!!!

      Elimina
  14. SI HO PROVATO....MA NIENTE!..HO PROVATO ANCHE A VEDERE IL VOLTAGGIO CON UN TESTER E HO NOTATO CHE SE NON COLLEGO IL PACCO BATTERIE,SUL PIU E MENO,HO QUASI 6 VOLT,MA COME LO COLLEGO ALLA BOARD SCENDE A 3 E MEZZO 4! COME MAI?

    RispondiElimina
  15. ANCHE PERCHE SUL TUO TUTORIAL,HAI USATO UN POTENZIOMETRO,CHE IO NON HO

    RispondiElimina
    Risposte
    1. Allora prova questo codice:

      #include
      Servo myservo;
      void setup()
      {
      myservo.attach(9);
      }
      void loop()
      {
      myservo.write (0);
      delay(1000);
      myservo.write (180);
      delay(1000);
      }

      Elimina
    2. ciao Danile, che dire.......grazie di cuore......sono alle prime armi con arduino. ho acquistato il kit base e volevo realizzare il casco con ironman proprio come tu spieghi ma con un piccolo particolare, quando il casco si chiude, oltre al ritardo dei led li volevo far lampeggiare una volta per poi rimanere accesi. non riesco proprio nel mio intendo, invece di rimanere accesi continuano a lampeggiare, potresti aiutarmi? grazie ancora per tutto.

      Elimina
    3. un altra cosa, ho preso un terzo servo per l'apertura della mascella ma non riesco ad abilitare un'altra uscita. grazie ancora! sei veramente grande Daniele

      Elimina
    4. http://youtu.be/T35eO31mM2A, se guardi questo link vedrai il terzo servo a cosa mi serve e l'altra modifica che vorrei fare e' far lampeggiare i led dopo la chiusura del casco per poi lasciarli accesi! grazie ancora. ps: aspetto con ansia una tua risposta.

      Elimina
  16. Daniele ci sei? ho bisogno del tuo aiuto, grazie!

    RispondiElimina
    Risposte
    1. Ciao, scusa il ritardo, postami lo sketch che non ti funziona (col terzo servo e il lampeggio)

      Elimina
  17. #include

    int led1 = 2;
    int led2 = 3;
    int led3 = 4;
    int led4 = 5;
    int led5 = 6;
    int led6 = 7;
    int bottone = 12;
    int statobottone;
    int statobottoneprecedente;
    int contatore;
    Servo dtesta;
    Servo stesta;
    Servo ctesta;
    void setup()
    {
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(bottone, INPUT);
    digitalWrite(12, HIGH);
    dtesta.attach(9);
    stesta.attach(10);
    ctesta.attach(11);
    }
    void loop()
    {
    statobottoneprecedente = statobottone;
    statobottone = digitalRead(bottone);
    if (statobottone != statobottoneprecedente)
    {
    if (statobottone == LOW)
    {
    contatore++;
    }
    }
    if (contatore % 2 == 0)
    {
    dtesta.write (180);
    stesta.write (0);
    ctesta.write (360);
    delay(1000);
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    digitalWrite (led3, HIGH);
    digitalWrite (led4, HIGH);
    digitalWrite (led5, HIGH);
    digitalWrite (led6, HIGH);
    delay(500);
    digitalWrite (led1, LOW);
    digitalWrite (led2, LOW);
    digitalWrite (led3, LOW);
    digitalWrite (led4, LOW);
    digitalWrite (led5, LOW);
    digitalWrite (led6, LOW);
    delay(500);
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    digitalWrite (led3, HIGH);
    digitalWrite (led4, HIGH);
    digitalWrite (led5, HIGH);
    digitalWrite (led6, HIGH);
    }
    else
    {
    digitalWrite (led1, LOW);
    digitalWrite (led2, LOW);
    digitalWrite (led3, LOW);
    digitalWrite (led4, LOW);
    digitalWrite (led5, LOW);
    digitalWrite (led6, LOW);
    dtesta.write (0);
    stesta.write (180);
    ctesta.write (360);
    }
    }

    RispondiElimina
  18. io ho provato cosi' ma ti ripeto per me e' un mondo nuovo. grazie ancora per la disponibilita'!

    RispondiElimina
    Risposte
    1. Intanto ti rispondo x il servo, non puoi scrivere 360, il valore deve essere tra 0 e 180, per i led ci devo pensare un po' vedo se domani riesco, ciao! :)

      Elimina
    2. #include

      int led1 = 2;
      int led2 = 3;
      int led3 = 4;
      int led4 = 5;
      int led5 = 6;
      int led6 = 7;
      int bottone = 12;
      int statobottone;
      int statobottoneprecedente;
      int contatore;
      Servo dtesta;
      Servo stesta;
      Servo ctesta;
      int flag=1;

      void setup()
      {
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(led5, OUTPUT);
      pinMode(led6, OUTPUT);
      pinMode(bottone, INPUT);
      digitalWrite(12, HIGH);
      dtesta.attach(9);
      stesta.attach(10);
      ctesta.attach(11);
      }
      void loop()
      {
      statobottoneprecedente = statobottone;
      statobottone = digitalRead(bottone);
      if (statobottone != statobottoneprecedente)
      {
      if (statobottone == LOW)
      {
      contatore++;
      }
      }
      if (contatore % 2 == 0)
      {
      dtesta.write (180);
      stesta.write (0);
      ctesta.write (180);
      delay(1000);
      if(flag==1)
      {
      digitalWrite (led1, HIGH);
      digitalWrite (led2, HIGH);
      digitalWrite (led3, HIGH);
      digitalWrite (led4, HIGH);
      digitalWrite (led5, HIGH);
      digitalWrite (led6, HIGH);
      delay(500);
      digitalWrite (led1, LOW);
      digitalWrite (led2, LOW);
      digitalWrite (led3, LOW);
      digitalWrite (led4, LOW);
      digitalWrite (led5, LOW);
      digitalWrite (led6, LOW);
      delay(500);
      flag=0;
      }
      digitalWrite (led1, HIGH);
      digitalWrite (led2, HIGH);
      digitalWrite (led3, HIGH);
      digitalWrite (led4, HIGH);
      digitalWrite (led5, HIGH);
      digitalWrite (led6, HIGH);
      }
      else
      {
      digitalWrite (led1, LOW);
      digitalWrite (led2, LOW);
      digitalWrite (led3, LOW);
      digitalWrite (led4, LOW);
      digitalWrite (led5, LOW);
      digitalWrite (led6, LOW);
      dtesta.write (0);
      stesta.write (180);
      ctesta.write (0);
      flag=1;
      }
      }


      Fammi sapere se va che non posso provarlo, ricordati di mettere servo all'inizio che non riesco a scriverlo qui.
      Fammi sapere!

      Elimina
  19. ok, grazie di cuore e buona serata!

    RispondiElimina
  20. Ciao Daniele, dopo questo post ho deciso...farò la maschera. Imperativo categorico.
    Ho alcuni dubbi perchè di Arduino conosco solo il nome ma a leggere te sembra tutto molto facile anche se ovviamente non sono proprio un dis-informatico...
    in particolare ti volevo chiedere se questo tipo di Arduino possa andare bene
    ARDUINO MICRO con microcontrollore ATmega32U4
    Se è possibile vorrei gentilmente maggiori indicazioni sul materiale (elettronico) che tu hai utilizzato nella seconda fase (nell'assemblaggio della parte elettronica) compresi i servo motori. Dove li trovo? Hanno un nome?

    RispondiElimina
    Risposte
    1. Ciao, come ho già scritto sopra da qualche parte (XD ci sono una cifra di commenti) la realizzazione non l'ho fatta io, ma ho realizzato il codice e lo schema elettrico.. Per questo non ti so dire il codice dei servomotori. Comunque vanno bene dei servomotori qualsiasi, basta che siano simili come dimensioni (non troppo piccoli) l'arduino micro va benissimo, il resto del materiale è quello che vedi nel fritzing sopra! Se vuoi alimentare anche Arduino col pacco batterie ti servirà un semplice diodo (tipo 1n4007) il materiale lo trovi tranquillamente su ebay

      Elimina
  21. Ciao Daniele, lo sketch che mi hai mandato funziona alla perfezione, grazie di cuore, mi hai salvato. non appena terminerò la maschera ti manderò qualche foto. grazie ancora. ps: Matteo io i servo li ho presi su http://www.robotstore.it/ ed esettamente HITEC HS-322HD. ciao ancora

    RispondiElimina
  22. anche io sto realizzando la maschera

    ho seguito la tua guida con l'ultimo sketch che ai postato quello con il lampeggio dei led

    volevo chiderti se dopo il lampeggio i led potevano accendersi con dissolvenza

    e se potevi scrivermi lo sketch

    grazie e scusa per il disturbo

    RispondiElimina
    Risposte
    1. Ciao Lugi, Questo effetto e` realizzabile con il PWM, ma non ci sono abbastanza pin con questa funzione per tutti e 6 i led, in ogni caso ti scrivo lo sketch, tieni conto che solo i led sui pin 3,5,6 faranno la dissolvenza.


      #include

      int led1 = 2;
      int led2 = 3;
      int led3 = 4;
      int led4 = 5;
      int led5 = 6;
      int led6 = 7;
      int bottone = 12;
      int statobottone;
      int statobottoneprecedente;
      int contatore;
      Servo dtesta;
      Servo stesta;
      Servo ctesta;
      int flag=1;

      void setup()
      {
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(led5, OUTPUT);
      pinMode(led6, OUTPUT);
      pinMode(bottone, INPUT);
      digitalWrite(12, HIGH);
      dtesta.attach(9);
      stesta.attach(10);
      ctesta.attach(11);
      }
      void loop()
      {
      statobottoneprecedente = statobottone;
      statobottone = digitalRead(bottone);
      if (statobottone != statobottoneprecedente)
      {
      if (statobottone == LOW)
      {
      contatore++;
      }
      }
      if (contatore % 2 == 0)
      {
      dtesta.write (180);
      stesta.write (0);
      ctesta.write (180);
      delay(1000);
      if(flag==1)
      {
      digitalWrite (led1, HIGH);
      digitalWrite (led2, HIGH);
      digitalWrite (led3, HIGH);
      digitalWrite (led4, HIGH);
      digitalWrite (led5, HIGH);
      digitalWrite (led6, HIGH);
      delay(500);
      digitalWrite (led1, LOW);
      digitalWrite (led2, LOW);
      digitalWrite (led3, LOW);
      digitalWrite (led4, LOW);
      digitalWrite (led5, LOW);
      digitalWrite (led6, LOW);
      delay(500);
      flag=0;
      }

      for (int i = 0; i < 255; i++ ) {
      analogWrite(led2, i);
      analogWrite(led4, i);
      analogWrite(led5, i);
      delay(10);
      }

      digitalWrite (led1, HIGH);
      digitalWrite (led3, HIGH);
      digitalWrite (led6, HIGH);
      }
      else
      {
      digitalWrite (led1, LOW);
      digitalWrite (led2, LOW);
      digitalWrite (led3, LOW);
      digitalWrite (led4, LOW);
      digitalWrite (led5, LOW);
      digitalWrite (led6, LOW);
      dtesta.write (0);
      stesta.write (180);
      ctesta.write (0);
      flag=1;
      }
      }


      ricordati di includere la libreria Servo all`inizio, fammi sapere come va!

      Elimina
  23. Risposte
    1. Hai provato lo sketch che ti ho scritto sopra?

      Elimina
    2. si...ma vanno sempre come matti......potrebbe essere che non gli arrivi abbastanza elettricita'?

      Elimina
  24. Ciao Daniele.... Ho messo una batteria da 6 volt 3 ah , ma cmq vibrano... Io credo che sia un problema di servo....dovrò comprare dei servo diversi

    RispondiElimina
  25. Salve, ciao Daniele... Possedendo l elmo ed essendo ignorante in materia gradirei qualche delucidazione su i componenti elettronici e meccanici da acquistare grazie per l attenzione

    RispondiElimina
  26. Ciao, io ho realizzato la parte elettrica, per questa ti serve:
    - 1 Arduino
    - 1 pacco batterie da 5 stilo
    - 2 servomotori
    - 1 pulsante
    - 6 led
    - 6 resistenze da 220 ohm
    - cavetti vari
    - stagno e saldatore
    - nastro isolante.

    Ciao!

    RispondiElimina
  27. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  28. Ciao Daniele, mi son messo a realizzare la maschera ma di elettronica ne so zero dunque scusa anticipatamente per le domande che ti staró per fare ma non me me intendo, vorrei non solo copiare ma anche imparare facendo dunque se per favore mi rispondi anche alle più sceme te ne sarei grato.
    1. Hai scritto che ci vogliono 5 batterie ( ricaricabili penso) potresti spiegarmi del perché 5 e magari non 4?
    2. Sono stato pure mell'articolo su come alimentare l'arduino e ho cercato su ebay questo http://www.ebay.it/itm/120978470888 va bene per questo progetto? anche se ne lascio 5 slot liberi? perché da 5 non ne trovo..
    3. Le resistenze da 220 perché proprio tale potenza?
    4. I cavi che passano dalle resistenze sono quelli dei led nello schema?

    ps: grazie anticipatamente per la pazienza :D

    RispondiElimina
    Risposte
    1. 1- Arduino accetta in ingresso una tensione compresa tra i 7 e i 12v circa, utilizzando 5 batterie da 1.5volt (quelle normali, non usa e getta) si ottengono 7.5 volt (1.5x5) e quindi va bene x alimentare Arduino.
      Qui il link di un porta batterie da 5
      http://pages.ebay.com/link/?nav=item.view&id=221490644340&alt=web

      3-le resistenze da 220 ohm è il valore che ho scelto x i led, non è obbligatorio usare quello, vanno bene anche 270, 330 ma se devi comprarle compra quelle da 220 e fidati ;)

      4- i cavi che vanno dall'arduino alle resistenze sono quelli blu e viola che si vedono nello schema, poi le resistenze sono collegate ai led. Nello schema io ho usato la breadboard, ma per risparmiare spazio ti conviene collegare tutto direttamente come ti ho detto.

      Ciao!

      Elimina
    2. Ah ok, ho chiesto delle batterie perché nel tuo commento del 3 maggio scrivesti che con un voltaggio superiore a 6v si rischiava di bruciare i motorini.. dunque per ricapitolare con stilo 5x1,5v alimento arduino uno, led, servo senza far danni?
      ps: grazie per il link, comprato e giá arrivato

      Elimina
    3. Ho letto in un commento precedente che "consigliavano" Hitec HS 322HD... più precisamente questi http://www.robotstore.it/product/158/Servo-standard-Hitec-HS-322HD.html

      Elimina
    4. Ciao Daniele scusa se insisto ma ho visto non hai più risposto, c'è un modo, magari via email dove posso farti domande senza "sporcarti" l'articolo con mille link di siti esterni che magari ti può dar fastidio?... sai.. da novellino in elettronica non ho molto le idee chiare dunque mi viene da chiederti se possa andar bene o no un pezzo..

      Elimina
    5. Ciao, scusa ma mi ero perso il commento, ho guardato il link del motore e mi sembra vada bene, però non l'ho provato di persona!

      Elimina
    6. Daniele mi sono arrivati tutti i pezzi, mi piaceva l'idea come il ragazzo sopra, di far accendere gli occhi dopo 1 massimo 2 secondi che si è chiusa la maschera, però io ho un interruttore a chiave (cioè giri la chiave e si accende giri dall'altra parte e si spegne) ti seccherebbe dirmi lo sketch pure a me? Grazie

      Elimina
    7. Ciao! Prova a caricare lo stesso sketch, funziona anche con l'interruttore a chiave, se poi c'è qualcosa che non va lo vediamo assieme!

      Elimina
    8. Ho provato a caricare lo sketch, non ti so dire se funziona o no (per il momento), perchè il mio dubbio è un altro ora... durante il caricamento dello sketch, sotto nella parte nera mi sono uscite delle stringhe scritte in bianche ma altre in rosso.. è normale?

      Elimina
    9. Non è normale, cosa c'è scritto?

      Elimina
    10. Allora innanzitutto parto col dire che ho solo attaccato tramite usb arduino al pc senza altri collegamenti tipo coi servi, led ecc.. magari sbaglio quello? devo caricare tutto con tutti i collegamenti fatti?
      I messaggi in rosso sono questi:

      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:98: warning: comparison between signed and unsigned integer expressions
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In function 'void __vector_18()':
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:127: warning: unused variable 'c'
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:368: warning: unused variable 'current_config'
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp:467: warning: comparison between signed and unsigned integer expressions
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Stream.cpp: In member function 'bool Stream::find(char*)':
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Stream.cpp:78: warning: deprecated conversion from string constant to 'char*'
      C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino\Tone.cpp:119: warning: only initialized variables can be placed into program memory area

      Tutte le altre invece sono in bianco

      Elimina
    11. Hai importato la libreria Servo?

      Elimina
    12. Se importare significa inserire nello sketch la stringa... include Servo.h ... scritta come ad inizio nei due esempi nella guida, si.
      Ho attivato in preferenze "mostra output verboso durante: compilazione" nel programma, per il resto ho fatto copia incolla e caricato.
      Come arduino ho questo "Arduino UNO R3 con microcontrollore ATmega328"
      Magari prova a attivarlo pure te in preferenze e caricare lo sketch... forse è normale che alcune righe le dia in rosso? non lo so..help :D

      Elimina
    13. Daniele hai novitá? perché io sono bloccato

      Elimina
    14. Si ho provato, anche con l'impostazione che metti tu, ma ho tutte le voci in bianco, questo sia con Arduino 1.0.5 che con 1.0.6

      Elimina
    15. Ciao Daniele caricando l'esempio semplice del blink e insistendo qualche volta sembra che il problema si sia risolto ora da tutto bianco...
      Una gentilezza se posso... dato che ho provato a attaccare tutto nella breadboard ma non si accende nulla, in testa mia la domanda che mi gira è " con 5 batterie riesco ad alimentare 6 led+arduino+due servo? o magari ho sbagliato ad attaccare i collegamenti visto che in arduino i fili sono molto sensibili e escono facilmente?" potresti dirmi i collegamenti senza breadboard da fare? e chiarirmi sta cosa che sto ancora nel dubbio del alimenta tutto o no? ahaha dopo i miei commenti penso ti faranno santo

      Elimina
    16. Hai alimentato Arduino? Lascia collegato il tutto e attacca Arduino al PC con il cavo USB.

      Elimina
    17. Teoricamente si, dovrebbe esser stato attaccato il tutto peró non ne sono sicuro per via dei fili, infatti ora mi sto procurando dei jumper almeno vado al 100%.
      Ma come nell'immagine nello schema TEORICAMENTE passando per gnd dovrebbe esser giá alimenato? attaccando anche l'usb non vorrei fulminare tutto...

      Elimina
    18. Il positivo non è collegato ad Arduino,
      Attacca anche l'usb al pc

      Elimina
    19. Daniele io ho provato ad alimentare l'arduino col computer, l'arduino si accende con la luce verde e una arancio (penso indica che all'interno c'è uno sketch) ma i motorini nonostante siano nuovi non emettono nessun rumore, ne nessun movimento quando vado a girare la chiave. Io questa volta non ho attaccato tutti i led perchè penso dovrebbe funuzionare ugualmente, massimo che vada non viene alimentati e quindi accesi i led. Percui guarda se ti avanza un po' di tempo io ho fatto una foto a ciò che ho collegato, è un po' incasinata ma se ingrandita un pelo si capisce i cavi dove vanno, se vuoi controllare se ho sbagliato qualcosa o se hai suggerimenti, anche su sketch nuovi dimmi pure. Ti lascio qua la foto: http://oi60.tinypic.com/2w6rjbk.jpg
      Nel frattempo aspetto di vedere i collegamenti che ti ha richiesto di nome Alex.
      Sinceramente non capisco, se lo schema è quello e lo sketch pure, perchè a me non partano i motorini boh

      Elimina
    20. I collegamenti mi sembrano giusti, prova a ricaricare lo sketch, e attacca anche uno dei led per capire come si comporta.

      Elimina
    21. Daniele ora funziona, alla fine era una batteria che non faceva contatto.
      Adesso però l'ultimo mio dubbio che mi viene è questo, e per alimentare il tutto senza computer? quindi compreso arduino? da uno slot da 5 mi conviene prendere una batteria da 12v? meglio uno slot da 6 o rischio di fulminare qualcosa e resto con i 5 (da 1,5v)? i collegamenti quali dovrebbero essere? visto che non sarà più come lo schema in alto. Ti secca aiutarmi pure su sta cosa?

      Elimina
  29. magari l'ho scritto due volte ma era tanto per essere sicuri ahah
    hai fatto davvero un bellissimo progetto e io ti ammiro tanto e sono finito su questa pagina perché stavo provando a farne uno simile però ho diversi problemi che vorrei esporti:
    -secondo te se ho un modello di maschera diverso devo cambiare molte cose?
    -non riesco ad attaccare la parte che compre la nuca perché le linguette si intrecciano mi puoi aiutare?
    è davvero importante per me perché vorrei che sia il mio progetto di quita superiore..
    spero tu mi possa aiutare... grazie :)
    se ti serve scrivere ti lascio la mia e-mail: musod96@gmail.com grazie! :)
    p.s. comunque è stupendaaaa

    RispondiElimina
    Risposte
    1. Ciao! grazie per i complimenti!
      Come ho già scritto sopra io ho fatto solamente la parte elettronica, la struttura l'ha fatta un altro ragazzo, quindi purtroppo sulla parte meccanica non ti posso aiutare, però se hai dei dubbi sulla parte elettronica/codice chiedi pure!

      Elimina
  30. Ciao Daniele, ho un arduino nano, vorrei fare i vari collegamenti senza utilizzare la breadboard che mi occupa troppo spazio.

    Mi sai guidare "passo passo" nei vari passaggi? E inoltre, è possibile farlo senza saldare? Ad esempio, se utilizzo dei Dupont femmina-femmina?

    L'idea era qualcosa tipo: Arduino(maschio)-Dupont femminafemmina-resistenza-dupontfemminafemmina-led

    O in alternativa se esistono altri cavetti da poter utilizzare senza fare le saldature. Qualora invece fosse necessario saldare, mi dici i passaggi passo passo?

    Grazie

    RispondiElimina
    Risposte
    1. Si l'uso dei cavetti nel modo che hai detto tu può sostituire le saldature, l'unica cosa è che magari si staccano facilmente, però può andare anche così..

      Elimina
  31. Ciao daniele ti volevo chiedere se puoi aiutarmi a far rallentare un po la corsa dei servo come faccio con lo skecth? X me vanno troppo veloci i servo grazie in anticipo

    RispondiElimina
    Risposte
    1. Ciao, purtroppo non c'è la possibilità di decidere la velocità, però puoi provare a dividere il comando di rotazione del motore inserendo in mezzo dei delay

      Elimina
    2. Grazie Daniele mo ci provo ;)

      Elimina
  32. Daniele ho un dubbio ancora sui led.. usi led 1 volt?

    RispondiElimina
    Risposte
    1. No sono led normali, generalmente sono sui 0.3 volt circa

      Elimina
  33. Ciao Daniele, ho sul tavolo tutto l'hardware (credo) ma non so proprio cosa fare senza la breadboard, non so come fare i collegamenti. Ho questo:

    Arduino nano (gia programmato) + cavo usb
    leds
    resistenze
    pushbutton
    2 microservo sg90
    pacco pile da 4
    Dupont maschio-femmina e femmina-femmina
    saldatore

    ora però non so davvero che fare, non so su quali pin attaccare i Dupont, o su quali vanno i servo e su quali i leds e come connettere tutto a tutto il resto. Mi serve praticamente una "guida senza breadboard". Abbi pazienza ma in rete non trovo niente.

    grazie

    RispondiElimina
    Risposte
    1. Ciao!
      La breadboard non è nulla di che, in pratica sono solo collegamenti, come se unissi i fili insieme.
      Guarda questa foto,
      https://cdn.tutsplus.com/mac/uploads/2013/10/horizontal-rows.png

      Elimina
  34. Uhm.. quindi per esempio, nella tua ultima immagine qua sopra, i cavetti viola e azzurro andrebbero saldati ognuno alla sua resistenza, che a sua volta va saldata ognuna al proprio led? Se si, quale gamba del led, lunga o corta? Credo di aver capito che sia il positivo.

    I servo vanno praticamente attaccati rosso/rosso e nero/nero direttamente al pacco pile, mentre il terzo filo va sull'arduino ma su quale pin? Inoltre, come riconosco i fili del servo? i miei sono arancione, rosso e marrone di fabbrica.

    Arrivati a questo punto, ammesso che abbia detto cose giuste, manca il collegamento del pacco pile all'arduino, e il collegamento del pushbutton (che avendo 4 gambette non so proprio come né dove attaccare).

    Ti ringrazio di nuovo per l'aiuto!

    RispondiElimina
    Risposte
    1. Bravo, è come hai detto tu, la resistenza va alla gamba lunga del led, quella corta va a gnd.
      Per il servo il marrone va a gnd, il rosso al positivo e il giallo all'Arduino.
      Il positivo del pacco batterie va al pin Vin di Arduino, il negativo a GND.
      Il pulsante devi orientarlo con i pin che escono dai lati (destra e sinistra) e poi lo colleghi come si vede nello schema (è uguale se lo giri di 180 gradi)

      Spero di essere stato abbastanza chiaro, ciao!

      Elimina
  35. Parto subito con un test, mi viene una domanda forse stupida. La resistenza ha un verso? o come la giro la giro?

    Grazie! comincio a capirci qualcosa!

    RispondiElimina
    Risposte
    1. No non ha verso, è lo stesso!
      Buon divertimento, ciao! :)

      Elimina
    2. per quanto riguarda il servo: il giallo va all'arduino, ma su quale pin?

      per quanto riguarda i leds: su quali pin vanno?

      Inoltre, prima di montare il pulsante, stavo pensando.. c'è modo di inserire un bottone senza fili?

      Elimina
    3. Si vedono dallo schema i pin,
      Il bottone senza fili è un problema, però puoi mettere un pulsante dall'interno della maschere che esca fuori così non si vedono i fili..

      Elimina
    4. Ciao Daniele! Incredibilmente sono riuscito a fare tutto e funziona!!

      Tuttavia ho un problema: se attacco tutto al pc tramite usb, funziona perfettamente. Mentre quando alimento dal solo pacco pile, alla pressione del bottone non succede nulla. Solo alla prima pressione fa una sorta di "test" dove ruota il servo poco per volta e i led lampeggiano.

      Come la risolvo?

      Elimina
    5. Ciao le batterie sono ricaricabili o standard? Il pacco batterie è da 4 stilo o altro? Hai un tester?

      Elimina
    6. Allora.. il pacco pile è da 4, sono ricaricabili (quindi 1,2 ciascuna).

      Quando parlo di "attaccato alla usb del pc" intendo che comunque c'è sia l'usb che il pacco pile collegato. Premo il tasto, si accendono i led e muove il servo, lo ripremo e si spengono e il servo torna in posizione. Se stacco la usb, e rimane solo il pacco pile, fa quel lavoro che ti ho detto.

      Non ho tester purtroppo

      Elimina
    7. Allora con le pile ricaricabili collega il positivo al pin 5v di Arduino, però attenzione se superi i 5.5 volt rischi di bruciare l'arduino.
      Comunque con 4 stilo ricaricabili non dovresti rischiare (1.2 x 4 = 4.8v)

      Elimina
    8. non mi sembra di vedere un pin con scritto 5v. Ora è connesso a VIN e fa quel lavoro che dico

      Elimina
    9. Evidentemente stanotte ero troppo stanco :D

      Il pin c'è, anche se nel nano la scritta non si nota benissimo effettivamente. Adesso funziona!

      Brevemente, mi spieghi perché su VIN non va bene mentre su 5v si? Credo di aver capito che sono entrambe porte di alimentazione ma.. perché in questo caso si sceglie (forzatamente) 5v anziché VIN?

      Sto cercando di capirci qualcosa :)

      Grazie 1000 non solo per l'aiuto, ma anche per la velocità delle risposte!

      Elimina
    10. Il pin Vin accetta tensioni tra i 6-7 e i 12 volt, poi c'è un circuito di regolazione che tira fuori i 5 volt che servono al microcontrollore.
      Il pin 5volt è collegato direttamente al microcontrollore, quindi va bene per una tensione tra i 4.5 e i 5.5 volt, ma se li superi rischi di bruciarlo.

      Se vuoi approfondire qui sul blog trovi un articolo che si chiama "tutti i modi per alimentare Arduino" ciao!

      Elimina
    11. Perfetto ora mi è tutto molto più chiaro! Chiudo con un'ultima domanda: qualora cambiassi le pile ricaricabili (1.2) con delle stilo normali (1.5) basta che attacco il pacco pile al VIN anziché al 5v?

      Elimina
  36. Ciao daniele ho solo il solito problema per la luce agli occhi.. ho il petto e mani con i g4 da 12v con un pacco batterie e questi fanno luce parecchio invece nell elmo è troppo spenta la luce a confronto. .. non è che c'è un modo che posso metterci al posto dei led da 1volt qualcos'altro di piu potente come i ledstrip?

    RispondiElimina
    Risposte
    1. Si puoi mettere una led strip controllata con un MOSFET o con un modulo relè.

      Elimina
  37. Però l'alimentatore per arduino con la batteria da 9 volt non gli basta vero? Devo collegarla al pacco batterie da 12v se voglio i ledstrip

    RispondiElimina
  38. Ok per capire meglio..inizio a farci a cazzotti con arduino.. esempio se io metto nel pin led come nello schema un led da 1 watt con resistenza e metto l'ingresso da 12v funzionerebbe? 1dimmi di si xD

    RispondiElimina
    Risposte
    1. No, otterresti solo tanto fumo proveniente dall'Arduino, devi usare un mosfet o un modulo relè.

      Elimina
  39. Ma il mosfet lo collego al pin del led?

    RispondiElimina
  40. Daniele riesci ad aiutarmi per come comporre i led ad alta potenza con lo sketck che mi hai dato? Non riesco a capire senza uno schema :(se mi dici cosa compare e come usarli per me sarebbe perfetto al momento ho una batteria da 12v da 9800 mha se serve..

    RispondiElimina
  41. Daniele ma l'uscita del pin per i led sono a 9v? Aiutami perfavore

    RispondiElimina
    Risposte
    1. Ciao, se sei poco pratico ti conviene comprare un modulo relè per Arduino, così ti viene più semplice, ciao!

      Elimina
  42. Niente Daniele non ci capisco... ho provato anche ad informarmi nella mia zona ma niente. . Se aggiungo il relè devo anche modificare anche lo sketch ? Se devo modificarlo non lo so fare.. sono riuscito a seguire il montaggio da te ma se devo modificare da solo per aumentare la luce non lo so fare..

    RispondiElimina
    Risposte
    1. Ciao, prendi un modulo tipo questo
      http://pages.ebay.com/link/?nav=item.view&id=330934969137&alt=web
      Non devi modificare niente nello sketch

      Elimina
  43. Daniele.. grande! Stasera lo ordino subito! ! :)

    RispondiElimina
  44. Ciao Daniele,volevo subito dirti che ti stimo un cifro per questo progetto che è davvero una figata! Poi volevo chiederti un paio di cose che però non riguardano la programmazione pensi la parte di creazione della maschera:
    1-che modello è la maschera?
    2-dopo che ho fatto il modello in papekura in cartoncino lo devo prima riempire con la vetro-resina e poi tagliare le varie parti?
    3-che stucco metallico hai usato...? Perchè ho visto in internet che alcuni tipi di questo particolare stucco sono nocivi se vengono a contatto con la pelle.
    grazie mille :)

    RispondiElimina
  45. Ciao daniele il relè l'ho ordinato :) avresti uno schema per come lo dovrei collegare senza modificare lo sketch? Grazie mille ancora Daniele

    RispondiElimina
  46. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  47. ciao mi chiamo simone volevo solo sapere che tipo di supporto mettere per l 'apertura del casco e dove posso trovarlo grazie mille

    RispondiElimina
  48. Caro Daniele Ciao.
    Ti seguo da un po e devo farti i miei più sinceri complimenti. La tua disponibilità nel mettere a servizio la tua conoscenza ti fa onore.
    Detto questo, anch'io ho in programma il progetto per apertura elmetto IRON MAN con Arduino Nano per motivi di spazio ovviamente.
    Ho scaricato la tua procedura. Ma seono sincero, ho zero esperienza, non potrebbe esserci un modo più semplice e fruibile per il processo passo per passo? Magari con un video tutorial? Fammi sapere. Grazie mille. E complimenti per tutto

    RispondiElimina
    Risposte
    1. Ciao, grazie per i complimenti, purtroppo non ho fatto io fisicamente l'elmetto, quindi non riesco a mandarti foto o fare un video, in cosa hai difficoltà?

      Elimina
  49. Ho con me:

    1 Arduino NANO Atmega328
    2 Servo SG90 piccoli
    1 pulsante a pressione

    Sembra semplice ma sento solo un ronzio nel servo...non so cosa fare!

    RispondiElimina
  50. finalmente funzionano. solo che in una delle due corse i servo tremano...al posto di stare tranquilli e silenziosi come mai? mannaggia

    RispondiElimina
  51. Ciao, purtroppo non so consigliarti un modello specifico, comunque nei negozi online trovi le caratteristiche, confrontando i valori di coppia puoi trovare il motore giusto. Ti consiglio di prenderne uno leggermente sovradimensionato perché molti venditori tendono a pompare questi dati.
    Ciao e grazie!

    RispondiElimina
  52. No non importa la marca, però ti consiglio di guardare il datasheet prima di comprarlo per evitare sorprese.

    RispondiElimina
  53. La tensione di funzionamento ed il modo di controllo

    RispondiElimina
  54. ciao Daniele, per evitare di avere 4 batterie x i motori + 4 x Arduino, non si può prendere l alimentazione da un PowerBank e gestite tutto ?
    grazie

    RispondiElimina
    Risposte
    1. questo servo può andare?
      Servo motore MG995


      ALIMENTAZIONE
      4,8Vdc - 7,2Vdc
      VELOCITA'
      0,20sec/60° (4,8v) - 0,16sec/60° (6v)
      COPPIA DI STALLO
      9,4Kg/cm (4,8v) - 11Kg/cm (6v)
      ROTAZIONE 180°
      CICLO DI IMPULSI 20ms
      LARGHEZZA DI IMPULSI 1-2ms
      DIMENSIONI
      40x20x43mm
      CODICE ART. 8549

      Elimina
    2. Ciao, si puoi prendere alimentazione da un powerbank collegandolo al pin 5v di Arduino.
      Per il motore non so aiutarti, non ho realizzato di persona il progetto quindi non conosco le forze in gioco.
      Ciao

      Elimina
  55. Non si possono collegare anche i motori ad Arduino così da potere usate solo.il.powerbank?

    RispondiElimina
  56. Ciao sto cercando di caricare lo sketchs mi da error expected initializer before statobottoneprecedente

    RispondiElimina
  57. Ciao Daniele....
    Ho realizzato 3 diversi elmi di iron man, utilizzando tutti i tuoi consigli...
    Ora però ho provato a collegare sia Arduino ( Arduino micro ) e 2 servomotori , direttamente tutti alimentati con 4 stilo.
    Vanno benissimo.....solo un problema....non appena apro la maschera,restano a vibrare alla grande,e non si muovono piu...
    Ma questo problema me lo fa solo quando monto la maschera sui perni dei servi... perché diversamente senza alcun "peso" vanno alla grande.
    Secondo te è troppo pesante la maschera, che credo pesi 150 gr,oppure c'è troppa poca tensione?
    Grazie

    RispondiElimina
  58. Ciao Daniele,
    grazie per questa pagina di forum e per aver condiviso tali informazioni.
    Sto lavorando al progetto Warmachine, per un cospay e volevo aggiungere al programma la possibilità con un altro pulsante di comandare il cannone da spalla. I led per gli occhi li ho uniti tramite catodo e così ho utilizzato 1 solo pin di arduino per occhio per liberare spazio.

    In breve ho fatto i seguenti collegamenti: prendendo il tuo schema i servo della testa, il pulsante occupano gli stessi slot, i led 6 in tutto sono divisi in 2 slot il pin, rispettivamente il 6 e il 7. Da qui ho aggiunto il pulsante2 al 5 e i servo per il cannoncino da spalla al 3 e al 2; così ho riscritto il codice in questa maniera:


    #include "servo.h"
    int led1 = 6;
    int led2 = 7;
    int bottone1 = 12;
    int bottone2 = 5;
    int statobottone1;
    int statobottoneprecedente1;
    int statobottone2;
    int statobottoneprecedente2;
    int contatore;
    Servo dtesta;
    Servo stesta;
    Servo dcann;
    Servo scann;
    void setup()
    {
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(bottone1, INPUT);
    digitalWrite(12, HIGH);
    dtesta.attach(9);
    stesta.attach(10);
    }
    void loop()
    {
    statobottoneprecedente1 = statobottone1;
    statobottone1 = digitalRead(bottone1);
    if (statobottone1 != statobottoneprecedente1)
    {
    if (statobottone1 == LOW)
    {
    contatore++;
    }
    }
    if (contatore % 2 == 0)
    {
    dtesta.write (180);
    stesta.write (0);
    delay(1000);
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    }
    else
    {
    digitalWrite (led1, LOW);
    digitalWrite (led2, LOW);
    dtesta.write (0);
    stesta.write (180);
    }
    void setup()
    {
    pinMode(bottone2, INPUT);
    digitalWrite(5, HIGH);
    dcann.attach(2);
    scann.attach(3);
    }
    void loop()
    {
    statobottoneprecedente2 = statobottone2;
    statobottone2 = digitalRead(bottone2);
    if (statobottone2 != statobottoneprecedente2)
    {
    if (statobottone2 == LOW)
    {
    contatore++;
    }
    }
    if (contatore % 2 == 0)
    {
    dcann.write (180);
    scann.write (0);
    }
    else
    {
    dcann.write (0);
    scann.write (180);
    }
    }

    ma alla fine mi compare questo errore:

    test_warmachine_mk1.ino:1:19: fatal error: servo.h: No such file or directory
    compilation terminated.
    Errore durante la compilazione

    cosa mi consigli? grazie in anticipo.

    RispondiElimina
  59. dopo un pò di armeggiamenti dovrei aver risolto, il programma dice che va bene, andrà testato. Comunque il codice corretto è:

    #include "Servo.h";
    int led1 = 6;
    int led2 = 7;
    int bottone1 = 12;
    int bottone2 = 5;
    int statobottone1;
    int statobottoneprecedente1;
    int statobottone2;
    int statobottoneprecedente2;
    int contatore1;
    int contatore2;
    Servo dtesta;
    Servo stesta;
    Servo dcann;
    Servo scann;
    void setup()
    {
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(bottone1, INPUT);
    digitalWrite(12, HIGH);
    dtesta.attach(9);
    stesta.attach(10);
    pinMode(bottone2, INPUT);
    digitalWrite(5, HIGH);
    dcann.attach(2);
    scann.attach(3);
    }
    void loop()
    {
    statobottoneprecedente1 = statobottone1;
    statobottone1 = digitalRead(bottone1);
    if (statobottone1 != statobottoneprecedente1)
    {
    if (statobottone1 == LOW)
    {
    contatore1++;
    }
    }
    if (contatore1 % 2 == 0)
    {
    dtesta.write (180);
    stesta.write (0);
    delay(1000);
    digitalWrite (led1, HIGH);
    digitalWrite (led2, HIGH);
    }
    else
    {
    digitalWrite (led1, LOW);
    digitalWrite (led2, LOW);
    dtesta.write (0);
    stesta.write (180);
    }
    statobottoneprecedente2 = statobottone2;
    statobottone2 = digitalRead(bottone2);
    if (statobottone2 != statobottoneprecedente2)
    {
    if (statobottone2 == LOW)
    {
    contatore2++;
    }
    }
    if (contatore2 % 2 == 0)
    {
    dcann.write (180);
    scann.write (0);
    }
    else
    {
    dcann.write (0);
    scann.write (180);
    }
    }


    grazie lo stesso per tutto.

    RispondiElimina
    Risposte
    1. Ciao, scusa ma non ho fatto in tempo a risponderti, se vuoi possiamo condividere il tuo progetto con un nuovo post, fammi sapere!

      Elimina
    2. Ciao Daniele, mi farebbe piacere :)
      Grazie.

      Elimina
    3. Grazie mille! Mi servono un po' di foto, uno schemino (anche uno schizzo poi lo disegno io) e una piccola descrizione. Puoi creare un tread nella sezione "chiedi e rispondi" e postare tutto lì. Poi lo pubbicherò sul sito.

      Elimina
    4. Perfetto, scusa il ritardo :) grazie per l'opportunità

      Elimina
  60. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  61. Spero che ci sia qualcuno ad aiutarmi. Ho costruito anch'io la maschera di Iron Man ed ho acquistato tutto il necessario per l'automatismo dell'apertura e dei led che lampeggianoe e funziona tutto, ma prima di sistemare-incollare il tutto nel casco mi sembra che il servo va da o a 180 il che mi sembra una corsa troppo lunga. Qualcuno potrebbe aiutarmi ad inserire nel codice con il lampeggio i gradi esatti? dovrei regalarlo a mio figlio per Natale ma credo di non farcela da solo, grazie

    RispondiElimina
  62. Ciao Daniele, grazie per la tua guida, utilissima, ti chiedo solo come poter regolare la velocità dei servo in modo da rallentare apertura e chiusura del faceplate.

    grazie

    RispondiElimina
  63. Ciao Daniele, ti ringrazio per questa tua utilissima guida.
    Volevo chiederti se potresti aiutarmi con l'inserire nel tuo progetto, i comandi per un Modulo ricevitore con telecomando IR 38KHz così da poter sostituire il pulsante.
    Grazie in anticipo

    RispondiElimina
  64. Quanto tempo ci hai messo a farlo, intento solo la costruzione, l hai fatta da solo o ti sei fatto aiutare

    RispondiElimina
  65. Ciao,ma la fibra di vetro all'interno con la resina non è tossica. Se si dovrei metterci qualche materiale isolante???

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post