Ciao a tutti,vi chiedo aiuto per una parte del mio progetto che prevede di scambiare un dato di un potenziometro letto con un analogRead su un arduino,con un altro arduino.
Vorrei sapere se è possibile collegare una porta analogica di arduino ad un altra senza dover usare altre forme di comunicazione come la Seriale tra le 2.
In particolare un arduino dovrebbe leggere i dati dal potenziometro con un analogRead da una porta analogica e poi tramite un altra porta analogica collegata all'altro arduino mandarlo con un analogWrite,e viene ricevuto con un analogRead.
Il problema è che se vedo quello che riceve il secondo arduino vedo dati che sono o tutti 0 o tutti 1023 in base a quanto sposto il potenziometro, senza nessun valore di mezzo.Potreste aiutarmi?
NO, non è possibile, Arduino (AVR) NON ha DAC, ma solo ADC, quindi ha degli ingressi analogici che vengono convertiti in digitale, ma NON ha la possibilità inversa.
analogWrite() è, purtroppo, un nome fuorviante dato che di analog non ha proprio nulla ... genera semplicemente un segnale PWM.
Guglielmo
Se ne era parlato tempo fa
Mi sembra che in due differenti discussioni due differenti OP abbiano tentato di ricavare il duty cycle del PWM leggendole i tempi con un secondo arduino
Macchinoso inutilmente complesso
Infatti mi sembra ambedue abbiano abbandonato
Standardoil:
...
Macchinoso inutilmente complesso
...
... anche perche' bastava dare in pasto il PWM ad un'RC, filtrarlo con un'altro RC e leggere la tensione risultante con un'ingresso analogico, in fondo ... non precisissimo, ma funziona, di solito
Etemenanki:
... anche perche' bastava dare in pasto il PWM ad un'RC ...
... insomma ... se ho ben capito lui vuole leggere il valore da una parte e generarlo uguale dall'altra ... e ... è quell'"uguale" che rende più complesso il tutto ... :
Onsestamente, fa molto prima a leggere il ADC e trasmettere in qualche modo (seriale, SPI, I2C, bit-banging ...) il valore letto dall'altra parte.
Guglielmo
Si, ovvio ... io dicevo cosi solo perche' parlava di non usare quei sistemi ... se non vuole implementare alcuna comunicazione fra i due, tanti altri modi non ne vedo ...
Scusate la banalità, ma se tutto deve accadere per via "analogica" perchè non leggere direttamente il potenziometro anche con il secondo Arduino?
Ciao, Ale.
ilguargua:
Scusate la banalità, ma se tutto deve accadere per via "analogica" ...
... in effetti ... :
Guglielmo
Grazie a tutti per le risposte. Effettivamente sarebbe più semplice collegare il secondo arduino direttamente al potenziometro,ma l'obiettivo è quello di mantenere le 2 entità degli arduini separate.
Sotto vostro consiglio allora userò o la comunicazione seriale o l'i2c.In merito al passaggio dati con l'i2c,avevo già provato a implementare questa parte di lettura del potenziometro nel progetto con questo metodo,ma nel contesto totale qualcosa andava storto.Infatti prima che il master inviasse i dati del pot. doveva prima riconoscere lo slave tramite un codice che inviava con la funzione onRequest.Se il codice ricevuto dal Master era effettivamente quello giusto (stabilito inizialmente) allora a quel punto il master doveva inviare i dati allo Slave e lo slave doveva riceverli con la funzione onReceive.Fino a qui in realtà tutto bene,il problema si pone se voglio che il Master invii più di un segnale allo slave,non solo potenziometro ma magari anche altri dati relativi ad altri sensori,e che lo slave riconosca i diversi dati e li differenzi.Ho pensato di anteporre un codice diverso per ogni dato al dato stesso cosicché lo slave riconosca il codice prima del dato e riconosca che quel dato è relativo ad un sensore diverso,e lo estragga quindi da tutto il messaggio.Avrei bisogno di aiuto per comporre il dato da mandare(numerico) col codice dietro e anche per farli differenziare allo slave in modo che possa fare poi le sue diverse azioni in base al dato.
Grazie mille in anticipo
Cerca e troverai
ilguargua:
Scusate la banalità, ma se tutto deve accadere per via "analogica" perchè non leggere direttamente il potenziometro anche con il secondo Arduino?
E' la prima cosa che è saltata in mente pure a me ;D
Poi c'è la storia che il master legge varie cose e poi le passa allo slave che deve fare qualcosa :
Curiosa questa cosa, perchè in genere è il contrario, anche se non sta scritto da nessuna parte cosa debba effettivamente fare il master e cosa lo slave perchè la comunicazione e l'azione sono concetti slegati tra di loro, però mi fa suonare in testa un campanellino...
Se devo fidarmi del campanellino nel naso, mi sa che se si partisse dall'inizio con una bella descrizione del problema iniziale, potrebbe uscire qualche soluzione più semplice.
Magari mi sbaglio, ma ho la sensazione che si stia affrontando un problema semplice nel modo difficile.
Sensazioni a parte, non ho capito se la comunicazione IIC la riesci a fare ma ti manca capire cosa mettere nel messaggio per passare più dati strutturati oppure se hai problemi anche con la comunicazione IIC.
Maurizio
Se devi trasportare un segnale analogico, trasporta quello. Metti un buffer con uscita bilanciata, usa un cavo 2+schermo e un ricevitore bilanciato dall'altra parte.
Google: collegamento bilanciato
00cicciuzzo00:
Ciao a tutti,vi chiedo aiuto per una parte del mio progetto che prevede di scambiare un dato di un ...
ci sono anche i doppi potenziometri (di tutti gusti e di tutti i tipi) cosi i due arduini sono indipendenti del tutto