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:
- #include <Servo.h>
- 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)
- {
- digitalWrite (led1, HIGH);
- digitalWrite (led2, HIGH);
- digitalWrite (led3, HIGH);
- digitalWrite (led4, HIGH);
- digitalWrite (led5, HIGH);
- digitalWrite (led6, HIGH);
- dtesta.write (180);
- stesta.write (0);
- }
- 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);
- }
- }
Sketch da caricare se invece preferite un interruttore a levetta.
- #include <Servo.h>
- 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 flag = 0;
- 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)
- {
- flag = 1;
- }
- else
- {
- flag = 0;
- }
- }
- if (flag == 0)
- {
- digitalWrite (led1, HIGH);
- digitalWrite (led2, HIGH);
- digitalWrite (led3, HIGH);
- digitalWrite (led4, HIGH);
- digitalWrite (led5, HIGH);
- digitalWrite (led6, HIGH);
- dtesta.write (180);
- stesta.write (0);
- }
- if (flag == 1)
- {
- digitalWrite (led1, LOW);
- digitalWrite (led2, LOW);
- digitalWrite (led3, LOW);
- digitalWrite (led4, LOW);
- digitalWrite (led5, LOW);
- digitalWrite (led6, LOW);
- dtesta.write (0);
- stesta.write (180);
- }
- }
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!
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....
RispondiEliminaCiao Marco,
Eliminascusa dell'inconveniente e grazie mille della segnalazione, ho corretto il link, ora è quello giusto,
Ciao!
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 :)
EliminaCiao, mi chiamo Daniele ;)
EliminaQuale 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!
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
Eliminaah cmq che tipo di servo consiglieresti?io ho un hitec hs-81mg
EliminaHai ragione, prova con questo
Elimina#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);
}
}
Per il servo non saprei, dipende principalmenti dalle dimensioni..
EliminaSe comunque ne hai uno prova con quello e vedi come va.
grazie daniele di cuore ci provo subito :3
Eliminami da errore nel "servo dtesta"
Eliminaalla prima riga sostituisci #include con #include "servo.h"
Eliminaciao!
Ciao Daniele ho provato anche io ma mi da sempre quest errore del servo.. che faccio?
EliminaCiao! Hai incluso la libreria Servo vero?
Eliminaciao!! scusa il disturbo....
Eliminail led vanno ma i servo no....come é possibile??grazie
Ciao, scusa il disturbo, a me i led non interessano, puoi mica segnarmi i collegamenti per eliminare quel supporto bucherellato?? grazie mille
RispondiEliminaOK, 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.
EliminaInfine il nero delle pile a gnd di arduino e il rosso a vin.
Dimmi se è tutto ok oppure se ci sono problemi, Ciao!
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
EliminaIn che senso? Passano da una posizione all'altra per aprire e chiudere la maschera.
EliminaCome 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! :)
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??
Eliminache so una cosa per esempio cosi
stesta.write (180); * (questa voce serve per la posizione bassa del servo sinistro)
Per mettere una nota metti due slash e poi scrivi quello che vuoi. La scritta diventerà grigia.
Elimina\\esempio
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
RispondiEliminaCiao, si devi mettere una resistenza da 220 Ohm per ogni led.
EliminaSi l'alimentazione più corretta è quella mostrata nello schema, se metti più di 6 volt ( 4 pile da 1.5V) rischi di bruciare i motori.
:) 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
EliminaVai tranquillo ;)
EliminaCoi led accesi direi circa 10 ore.
Buon lavoro :)
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
Eliminapoi 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
EliminaSi i numeri non devi copiarli, i collegamenti sbagliati non influiscono sul caricamento dello sketch.
EliminaHo 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!
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
EliminaL'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?!
EliminaIntendevo include servo.h ma non me lo fa scrivere! XD
EliminaComunque 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?
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?!
EliminaAlcuni servo hanno sotto un foro nel quale c'è un trimmer per tarare il servo.
EliminaAltrimenti prova a scambiare i motori e prova se lo fa lo stesso.
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"?
EliminaNon è 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!
Eliminaciao Daniele....da premettere che sei un grande!!!!!!!!!!!!!!
RispondiEliminacomplimenti 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
Per fare tutto senza collegare i led è sufficiente non collegarli e lasciare il codice così.
EliminaSe 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"
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
RispondiEliminaVa bene, oggi appena ho un momento ti scrivo lo sketch
EliminaOK grazie mille....aspetto te allora....
RispondiEliminaDaniele ciao, hai novità?
RispondiEliminaCiao, prova così!
Elimina#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);
}
}
Ciao fai caso che la prima riga è sbagliata, purtroppo da cell non riesco a correggerla, devi scriverla come quella del post, con servo.h
Eliminaquindi devo scrivere include #include servo.h?
RispondiEliminacmq 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
RispondiEliminaSi la prima riga è quella che hai scritto tu, ricordati anche la punteggiatura.
EliminaSi basta un solo pacco batterie.
Grazie mille Daniele sei troppo forte....ho ancora due domande però.... Allora
EliminaPrima 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à?
Daniele mi hai abbandonato...
RispondiEliminaAhaha scusa non avevo letto il commento :)
EliminaPuoi 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!
Grazie Daniele sei un drago!!!!
RispondiEliminaCmq 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?
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.
EliminaMentre 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.
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
RispondiEliminaCol jack l'arduino non si brucia perché c'è un diodo di protezione, in ogni caso fai attenzione.
EliminaPer la pila da 9volt OK!
grazie mille....ti aggiorno prossimamente....sei il top
RispondiEliminaciao Daniele
RispondiEliminagrossissimo 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
Ciao, prova i servo con questo tutorial
Eliminahttp://www.danielealberti.it/2013/05/arduino-servomotore-rotazione-continua.html?m=1
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
EliminaPer 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.
EliminaPer alimentare i servo fai riferimento allo schema che c'è in questo post
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!!!!
EliminaDaniele non vanno...come posso fare?
RispondiEliminaHai provato col tutorial sui servo?
EliminaSI 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?
RispondiEliminaANCHE PERCHE SUL TUO TUTORIAL,HAI USATO UN POTENZIOMETRO,CHE IO NON HO
RispondiEliminaAllora prova questo codice:
Elimina#include
Servo myservo;
void setup()
{
myservo.attach(9);
}
void loop()
{
myservo.write (0);
delay(1000);
myservo.write (180);
delay(1000);
}
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.
Eliminaun 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
Eliminahttp://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.
EliminaDaniele ci sei? ho bisogno del tuo aiuto, grazie!
RispondiEliminaCiao, scusa il ritardo, postami lo sketch che non ti funziona (col terzo servo e il lampeggio)
Elimina#include
RispondiEliminaint 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);
}
}
io ho provato cosi' ma ti ripeto per me e' un mondo nuovo. grazie ancora per la disponibilita'!
RispondiEliminaIntanto 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#include
Eliminaint 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!
ok, grazie di cuore e buona serata!
RispondiEliminaComplimenti all'autore... Grande.
RispondiEliminaCiao Daniele, dopo questo post ho deciso...farò la maschera. Imperativo categorico.
RispondiEliminaHo 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?
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
EliminaGrazie mille!
EliminaCiao 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
RispondiEliminaGrazie mille, anche x i servo!
EliminaGrazie Bruno!
Eliminaciao daniele sei un grande
RispondiEliminaanche io sto realizzando la maschera
RispondiEliminaho 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
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.
Elimina#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!
grazie mille vanno benissimo
RispondiEliminaDaniele basta mi sono arreso....
RispondiEliminaHai provato lo sketch che ti ho scritto sopra?
Eliminasi...ma vanno sempre come matti......potrebbe essere che non gli arrivi abbastanza elettricita'?
EliminaCiao 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
RispondiEliminaSalve, 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
RispondiEliminaCiao, io ho realizzato la parte elettrica, per questa ti serve:
RispondiElimina- 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!
Questo commento è stato eliminato dall'autore.
RispondiEliminaCiao 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.
RispondiElimina1. 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
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.
EliminaQui 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!
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?
Eliminaps: grazie per il link, comprato e giá arrivato
Che motori hai?
EliminaHo 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
EliminaCiao 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..
EliminaCiao, 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!
EliminaDaniele 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
EliminaCiao! Prova a caricare lo stesso sketch, funziona anche con l'interruttore a chiave, se poi c'è qualcosa che non va lo vediamo assieme!
EliminaHo 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?
EliminaNon è normale, cosa c'è scritto?
EliminaAllora 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?
EliminaI 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
Hai importato la libreria Servo?
EliminaSe importare significa inserire nello sketch la stringa... include Servo.h ... scritta come ad inizio nei due esempi nella guida, si.
EliminaHo 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
Daniele hai novitá? perché io sono bloccato
EliminaSi 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
EliminaCiao Daniele caricando l'esempio semplice del blink e insistendo qualche volta sembra che il problema si sia risolto ora da tutto bianco...
EliminaUna 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
Hai alimentato Arduino? Lascia collegato il tutto e attacca Arduino al PC con il cavo USB.
EliminaTeoricamente 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%.
EliminaMa come nell'immagine nello schema TEORICAMENTE passando per gnd dovrebbe esser giá alimenato? attaccando anche l'usb non vorrei fulminare tutto...
Il positivo non è collegato ad Arduino,
EliminaAttacca anche l'usb al pc
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
EliminaNel 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
I collegamenti mi sembrano giusti, prova a ricaricare lo sketch, e attacca anche uno dei led per capire come si comporta.
EliminaDaniele ora funziona, alla fine era una batteria che non faceva contatto.
EliminaAdesso 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?
magari l'ho scritto due volte ma era tanto per essere sicuri ahah
RispondiEliminahai 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
Ciao! grazie per i complimenti!
EliminaCome 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!
Ciao Daniele, ho un arduino nano, vorrei fare i vari collegamenti senza utilizzare la breadboard che mi occupa troppo spazio.
RispondiEliminaMi 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
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ì..
EliminaCiao 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
RispondiEliminaCiao, 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
EliminaGrazie Daniele mo ci provo ;)
EliminaDaniele ho un dubbio ancora sui led.. usi led 1 volt?
RispondiEliminaNo sono led normali, generalmente sono sui 0.3 volt circa
EliminaCiao 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:
RispondiEliminaArduino 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
Ciao!
EliminaLa 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
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.
RispondiEliminaI 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!
Bravo, è come hai detto tu, la resistenza va alla gamba lunga del led, quella corta va a gnd.
EliminaPer 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!
Parto subito con un test, mi viene una domanda forse stupida. La resistenza ha un verso? o come la giro la giro?
RispondiEliminaGrazie! comincio a capirci qualcosa!
No non ha verso, è lo stesso!
EliminaBuon divertimento, ciao! :)
per quanto riguarda il servo: il giallo va all'arduino, ma su quale pin?
Eliminaper quanto riguarda i leds: su quali pin vanno?
Inoltre, prima di montare il pulsante, stavo pensando.. c'è modo di inserire un bottone senza fili?
Si vedono dallo schema i pin,
EliminaIl bottone senza fili è un problema, però puoi mettere un pulsante dall'interno della maschere che esca fuori così non si vedono i fili..
Ciao Daniele! Incredibilmente sono riuscito a fare tutto e funziona!!
EliminaTuttavia 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?
Ciao le batterie sono ricaricabili o standard? Il pacco batterie è da 4 stilo o altro? Hai un tester?
EliminaAllora.. il pacco pile è da 4, sono ricaricabili (quindi 1,2 ciascuna).
EliminaQuando 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
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.
EliminaComunque con 4 stilo ricaricabili non dovresti rischiare (1.2 x 4 = 4.8v)
non mi sembra di vedere un pin con scritto 5v. Ora è connesso a VIN e fa quel lavoro che dico
EliminaSi è 3 pin sopra il pin VIN
EliminaEvidentemente stanotte ero troppo stanco :D
EliminaIl 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!
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.
EliminaIl 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!
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?
EliminaSi è così, ciao!
EliminaCiao 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?
RispondiEliminaSi puoi mettere una led strip controllata con un MOSFET o con un modulo relè.
EliminaPerò 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
RispondiEliminaEsattamente
EliminaOk 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
RispondiEliminaNo, otterresti solo tanto fumo proveniente dall'Arduino, devi usare un mosfet o un modulo relè.
EliminaMa il mosfet lo collego al pin del led?
RispondiEliminaScusa Daniele sono poco pratico
RispondiEliminaDaniele 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..
RispondiEliminaDaniele ma l'uscita del pin per i led sono a 9v? Aiutami perfavore
RispondiEliminaCiao, se sei poco pratico ti conviene comprare un modulo relè per Arduino, così ti viene più semplice, ciao!
EliminaNiente 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..
RispondiEliminaCiao, prendi un modulo tipo questo
Eliminahttp://pages.ebay.com/link/?nav=item.view&id=330934969137&alt=web
Non devi modificare niente nello sketch
Daniele.. grande! Stasera lo ordino subito! ! :)
RispondiEliminaCiao 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:
RispondiElimina1-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 :)
Ciao daniele il relè l'ho ordinato :) avresti uno schema per come lo dovrei collegare senza modificare lo sketch? Grazie mille ancora Daniele
RispondiEliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaciao mi chiamo simone volevo solo sapere che tipo di supporto mettere per l 'apertura del casco e dove posso trovarlo grazie mille
RispondiEliminaCaro Daniele Ciao.
RispondiEliminaTi 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
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à?
EliminaHo con me:
RispondiElimina1 Arduino NANO Atmega328
2 Servo SG90 piccoli
1 pulsante a pressione
Sembra semplice ma sento solo un ronzio nel servo...non so cosa fare!
finalmente funzionano. solo che in una delle due corse i servo tremano...al posto di stare tranquilli e silenziosi come mai? mannaggia
RispondiEliminaCiao, 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.
RispondiEliminaCiao e grazie!
No non importa la marca, però ti consiglio di guardare il datasheet prima di comprarlo per evitare sorprese.
RispondiEliminaLa tensione di funzionamento ed il modo di controllo
RispondiEliminaciao 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 ?
RispondiEliminagrazie
questo servo può andare?
EliminaServo 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
Ciao, si puoi prendere alimentazione da un powerbank collegandolo al pin 5v di Arduino.
EliminaPer il motore non so aiutarti, non ho realizzato di persona il progetto quindi non conosco le forze in gioco.
Ciao
Non si possono collegare anche i motori ad Arduino così da potere usate solo.il.powerbank?
RispondiEliminaCiao sto cercando di caricare lo sketchs mi da error expected initializer before statobottoneprecedente
RispondiEliminaCiao Daniele....
RispondiEliminaHo 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
Ciao Daniele,
RispondiEliminagrazie 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.
dopo un pò di armeggiamenti dovrei aver risolto, il programma dice che va bene, andrà testato. Comunque il codice corretto è:
RispondiElimina#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.
Ciao, scusa ma non ho fatto in tempo a risponderti, se vuoi possiamo condividere il tuo progetto con un nuovo post, fammi sapere!
EliminaCiao Daniele, mi farebbe piacere :)
EliminaGrazie.
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.
EliminaPerfetto, scusa il ritardo :) grazie per l'opportunità
EliminaQuesto commento è stato eliminato dall'autore.
RispondiEliminaSpero 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
RispondiEliminaCiao 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.
RispondiEliminagrazie
Ciao Daniele, ti ringrazio per questa tua utilissima guida.
RispondiEliminaVolevo 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
Quanto tempo ci hai messo a farlo, intento solo la costruzione, l hai fatta da solo o ti sei fatto aiutare
RispondiEliminaCiao,ma la fibra di vetro all'interno con la resina non è tossica. Se si dovrei metterci qualche materiale isolante???
RispondiElimina