buongiorno,
sto utilizzando Arduino MEGA per il mio progetto, ma sto per esaurire i pin da utilzzare e mi domando se c'è modo di utilizzare un secondo arduino collegato in qualche modo al primo per disporre di un numero maggiore di pin e se si può fare, come si può fare?
grazie 1000
ciao...
o instauri un comunicazione seriale master/slave...e di modi ce ne sono tanti... oppure usi dei multiplex hardware per aumentare ingressi ed uscite....e anche qua ci sono diverse soluzioni...a seconda se ti servono DI/O o AI/O.
forse, ma dico forse, la meno complicata è usare dei multiplex...con unico codice fai tutto...
Concordo con orso...
Non per sapere i fatti tuoi, ma cosa stai facendo per avere bisogno di tanti i/o?
l'obiettivo è realizzare un robottino, o meglio per ora è solo una piattaforma telecomandata con ruote.
Siccome il telecomando è ottenuto in due modi, con switch per ora, sia bluetooth, sia con transceiver, ho già usato diversi pin con questo.
Ho un motorino per la trazione e un servo per lo sterzo.
Un srf per evitare gli ostacoli, uno swith, dei led
poi ci devo aggiungere dei sensori e temo di esaurire i pin, quindi mi chiedevo se c'è un modo per evitare questo inconveniente.
Grazie della risposta, ma Orso2001, mi daresti qualche altra info o un rimando (link o altro) per avere un'idea di come si procede, grazie 1000
Uhm, fammi capire... Il MEGA ha 53 porte digitali, che sommate alle 16 analogiche fanno69 porte: scusami, ma come diamine hai fatto a finirle per un robottino? Di pulsanti ne puoi mettere anche 4 per una singola porta analogica (partitore resistivo), un bluetooth usa l'interfaccia seriale e usa solo 2 pin, un motorino DC lo comandi con 4 pin, un servo con 1, 2 per i sensore ultrasuoni, diciamo una manciata di 4 led per visualizzare vari stati, se ci aggiungi almeno 3 sensori di prossimità ad infrarossi siamo comunque a non più di 20!
A parte questo, se ne è parlato anche in questo stesso forum, ad esempio leggi QUI.
Ma devi togliermi la curiosità di come tu stia usando le porte, perché io ho usato un MEGA in un braccio robotico a 5 gradi di libertà con 5 DC motors, 5 sensori (trimmer) di posizione, n sensore di pressione sulle "dita", un sensore di prossimità IR tra le dita (per "vedere" se sto acchiappando qualcosa), e un sensore a ultrasuoni, e sono a metà..
non ho esaurito i pin, ma mi sono posta il problema e volevo sapere se si può fare qualcosa.
il mio progetto non è così sofisticato come quello che mi descrivi, docdoc, ma comunque avevo in progetto di aggiungere un braccio e un dispositivo per afferrare.
però hai detto una cosa che io non conosco: "Di pulsanti ne puoi mettere anche 4 per una singola porta analogica (partitore resistivo)"
cosa intendi ?
luis67:
non ho esaurito i pin, ma mi sono posta il problema e volevo sapere se si può fare qualcosa.
Si, di soluzioni ce ne sono tante, ma a mio avviso l'ultima è proprio quella di mettere in comunicazione due o più Arduino (in primis perché hai la necessità di progettare ed implementare un protocollo di comunicazione tra loro, non è che da Arduino 1 vedi le porte di Arduino 2 in modo trasparente...). La cosa migliore in genere è capire le necessità e in base a questo progettare delle soluzioni adatte ai requisiti ed ai vincoli (ad es. di costo, velocità, ecc). Ma con un Mega hai così tante porte che a me non è mai capitato di sentire qualcuno che sia in crisi di connessioni.
il mio progetto non è così sofisticato come quello che mi descrivi, docdoc, ma comunque avevo in progetto di aggiungere un braccio e un dispositivo per afferrare.
Anche qui, dipende se usi dei servo o degli stepper o cosa, ma in ogni caso il Mega mi sembra sempre più che sufficiente.
però hai detto una cosa che io non conosco: "Di pulsanti ne puoi mettere anche 4 per una singola porta analogica (partitore resistivo)"
cosa intendi ?
Su un pin analogico tu leggi valori da 0 a 1023 in base alla tensione rilevata, quindi se metti un partitore resistivo puoi fare in modo che quando non premi nessun pulsante leggi 0 (o 1023, a seconda della logica che utilizzi), se premi un pulsante avrai una tensione un poco più alta (quindi un valore numerico ad es. 200), se premi il secondo ti darà una tensione ancora più alta (e quindi valore ad es. 400) e così via. Quindi tu leggi il valore del pin analogico, e per "fasce" di valori le fai corrispondere ad una determinata azione.
In pratica vedi questo, un prototipo che avevo fatto per testare alcuni comandi per un progettino di irrigatore:
Il codice della funzioncina che ho fatto per leggere questo input è questo (il simbolo PULSANTI è il numero del pin analogico che ho usato):
int pulsante() {
static int p0 = 0;
int v = analogRead(PULSANTI);
int p = 0;
if ( v < 100 )
p=0; // Nessun pulsante
else if ( v < 300 )
p=1; // Pulsante 1 ROSSO
else if ( v < 450 )
p=2; // Pulsante 2 GIALLO
else if ( v < 600 )
p=3; // Pulsante 3 BLU
else
p=4; // Pulsante 4 VERDE
delay(10);
// Se il pulsante è sempre lo stesso, ritorna 0
if ( p == p0 )
return 0;
p0 = p;
return p;
}
Comunque QUI trovi un ottimo articolo in merito.
grazie 1000, mi è sicuramente utile questo
e lo voglio subito provare,
grazie
Comunque un braccio robotico con 4/5 Servo ha bisogno di 4/5 pin.
Secondo me sei ben lontano di esaurire i pin di un Arduino Mega.
Ciao Uwe
Dipende da quale braccio robotico ![]()
(pure questi pero' non sono affatto male :D)
EDIT: scherzi a parte, stavo pensando ad una cosa ... mi sembra di aver letto da qualche parte che fra braccio, avanbraccio e dita, servano 27 o 28 diversi muscoli per "movimentare" il tutto ... quindi, in teoria, e contando pure qualche sensore di pressione per dare ai "polpastrelli" la sensazione del contatto, una Mega dovrebbe (molto in teoria, ovviamente) essere sufficente per creare una replica funzionale di un braccio umano (lo spazio necessario per tutti i motori ovviamente sarebbe un grosso problema, ma io parlo solo a livello di "comandi", in questo senso)
veramente notevole il primo video Super-Fast Robot Arm Can Catch Whatever You Throw At It - YouTube
ma per questo ci vuole padronanza nell'elaborazione di immagini, ho visto nella parete dietro il braccio robotico una serie di telecamere
Oltre alle soluzioni già proposte e tralasciando il fatto che le porte di un Arduino Mega dovrebbero essere più che sufficienti, potresti sempre ricorrere a degli i/o expander come:
MCP23017 - 16 porte i/o (pilotato in I2C ne puoi collegarne fino a 8 per un totale di 128 i/o)
MCP20008 - 8 porte i/o (pilotato in I2C ne puoi collegarne fino a 8 per un totale di 64 i/o)
In alternativa, se vuoi qualcosa di già fatto dai un'occhiata qui e qui
Ciao
Attilio
Io ho un clone della Due con 100 pin :D.
