per un progetto ho la necessità di controllare un gran numero di motori passo passo (stepper) attualmente sto usando un arduino mega e, visto il gran numero di pin disponibili, per ora sono riuscito a comandare 16 motori poichè ognuno necessita di 4 pin. Per controllare più di 16 motori sarebbe possibile sfruttare un bus i2c per poter utilizzare un arduino come master che invii un semplice carattere a multipli arduino mega che a loro volta leggano il carattere associato ad una funzione ed eseguano una porzione di codice in cui indico i movimenti? Le funzioni che comandano i movimenti le ho già scritte e testate, adesso il mio problema è controllare un numero maggiore di stepper, sarebbe fattibile o ci sarebbero modi migliori per poter controllare questi motori? ( es ethernet via ip )
Grazie in anticipo dell'interesse a chi risponderà. Riccardo
Fattibile è fattibile. Dipende però quanto sei disposto a sbatterci la testa.
Io credo che il problema principale in questa situazione sia il fatto che l'implementazione della I2C è bloccante: Se cade la comunicazione con un Arduino o hai problemi sul bus ti si bloccano tutto, master compreso.
Potresti usare le seriali: rinunci a 8 pin sul master (2 motori) ma poi collegare alle 4 seriali 4 altre Mega, avendo un sistema completo con 5 Mega, 1 Master e 4 Slave.
Tra l'altro l'I2C è limitata dalla distanza massima sui cavi che per la seriale è più flessibile.
Avevo scelto il bus i2c perchè vedendo alcuni esempi di codice mi sembrava il più facile da implementare, ed io utilizzo per la maggior parte chiamate a funzioni bloccanti quindi avrebbe fatto al caso mio, inoltre la distanza massima fra ogni arduino è nell'ordine di centimetri, una ventina tenendosi larghi... a questo punto mi conviene prendere 3 arduino mega per cominciare e vedere di implementare il codice vedendo se tutto funziona... c'è qualche topic già aperto di recente che tratta una problematica simile? nel caso se ne fosse già parlato... Grazie. Riccardo