potenziometri digitali.

salve a tutti secondo voi si può fare in modo che un entrata analogica che potrebbe essere controllata da un potenziometro manuale sia controllata da un potenziometro digitale per l'appunto con un integrato del tipo MCP41X1. se si avreste qualc suggerimento. il progetto che sto realizzando e un mixer audio controllato con arduino.

riporto sotto il codice da me scritto fin ora dove specifico entrate analog e digit e in piu ho scritto una parte affinchè le uscite e entrate lavorino sempre a frequenza costante.

#include<PWM.h>;
void setPwmFrequency(int pin, int divisor) {
  byte mode;
  if(pin == 5 || pin == 6 || pin == 9 || pin == 4) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 64: mode = 0x03; break;
      case 256: mode = 0x04; break;
      case 1024: mode = 0x05; break;
      default: return;
    }
    if(pin == 5 || pin == 6) {
      TCCR0B = TCCR0B & 0b11111000 | mode;
    } else {
      TCCR1B = TCCR1B & 0b11111000 | mode;
    }
  } else if(pin == 3 || pin == 11) {
    switch(divisor) {
      case 1: mode = 0x01; break;
      case 8: mode = 0x02; break;
      case 32: mode = 0x03; break;
      case 64: mode = 0x04; break;
      case 128: mode = 0x05; break;
      case 256: mode = 0x06; break;
      case 1024: mode = 0x7; break;
      default: return;
    }
    TCCR2B = TCCR2B & 0b11111000 | mode;
  }
}

int analogPin_uno = 0;
int analogPin_due = 1;
int analogPin_tre = 2;
int analogPin_qua = 3; 

int val_uno =0;
int val_due =0;
int val_tre =0;
int val_qua =0;

void setup() {
    
    
    pinMode(5 ,INPUT);     // entrate digitali
        
    pinMode(6, INPUT);

    pinMode(4, INPUT);

    pinMode(9 ,INPUT);
    
  
    pinMode(11, OUTPUT);   // pin uscita    

    Serial.begin(9600);

 
}

void loop() {
  
  digitalWrite (4 , HIGH);
  digitalWrite (5 , HIGH);
  digitalWrite (6 , HIGH);  // entrata pwm attiva
  digitalWrite (9 , HIGH); // entrata pwm attiva
  digitalWrite (11, HIGH); // uscita attiva pwm

  val_uno = analogRead(analogPin_uno);
  Serial.println(val_uno);
  
  val_due= analogRead(analogPin_due);
  Serial.println(val_due);

  
  val_tre = analogRead(analogPin_tre);
  Serial.println(val_tre);

  
  val_qua = analogRead(analogPin_qua);
  Serial.println(val_qua);
 

  

     
}

il potenziometro che ho scelto di usare è un "ds1809" così da poterlo mettere in uscita e in auto prende da sè la regolazione da effettuare sul segnale definitivo in uscita cosa ne pensate?

Non afferro quello che vuoi fare.
Hai un potenziometro collegato a una entrata analogica di Arduino e vuoi sostiruirlo con uno digitale che viene controllato da qualcosa altro? cosa é il problema?
Ciao Uwe

allora non e che voglio sostituirlo. ho un entrata analogica ala quale in genere bisognerebbe annettere un potenziometro manuale invece io ne voglio collegare uno digitale e poi da questo il segnale in uscita va in arduino che diciamo setta le frequenze e lo manda in uscita. così da utilizzare il programma caricato sopra. :slight_smile: dite che funziona? sia a lvello hardware che software da me scritto sopra!

Beh ma che senso ha ? setta le frequenze direttamente via software ... Cè non capisco dove stia il problema :roll_eyes:

e mi daresti tu una mano a far in modo che in automatico legge la frequenza in entrata e sempre in autmatico la innalza o la bassa in modo da renderla efficente. visto che tu mi stai dicendo che si puo fare mentre altri in un altro mio post mi hanno detto che era infattibile.. ti ringrazio in anticipo se potresti darmi questa mano. pure eerchè non so librerie che ci vogliono e tutto il resto. :stuck_out_tongue:

Rispiega e stavolta in dettaglio cosa vuoi fare. Di che frequenza parli?

Tu sai che il potenziometro funziona a 5V e non puoi mettere sui contatti del potenziometro digitale piú della tensione di alimentazione?

e mi daresti tu una mano a far in modo che in automatico legge la frequenza in entrata e sempre in autmatico la innalza o la bassa in modo da renderla efficente. visto che tu mi stai dicendo che si puo fare mentre altri in un altro mio post mi hanno detto che era infattibile.. ti ringrazio in anticipo se potresti darmi questa mano. pure eerchè non so librerie che ci vogliono e tutto il resto.

Forse non Ti ha detto ancora nessuno che si puó fare o no perché non si é ancora capito cosa vuoi fare.

Di che frequenza parli? cos intendi per " in autmatico la innalza o la bassa in modo da renderla efficente"

Perché richiedi la cosa se hai giá ricevuto una risposta?

Ciao Uwe

Ciao, sinceramente vorrei capire anche io cosa vuoi fare visto che sto lavorando a mia volta a progetti audio utilizzando pot digitali, ma tu parli di un mixer e di modulazione di frequenza..e la cosa mi confonde

Per principio, se hai un valore controllato da un potenziometro manuale (resistenza variabile), puoi sicuramente sostituirlo in qualche modo con un potenziometro digitale, a patto che scegli il componente giusto. Se ci spieghi un po' di cose ti possiamo forse aiutare, ad esempio:

  • Da dove arriva il tuo input analogico (il suono insomma, strumento, cd, piastra)?
  • Che cosa deve regolare questo potenziometro? (volume, gain, bias, è un partitore di segnale, un feedback???)
  • Su che tensioni lavora il segnale da modulare?

partiamo dal fatto che l'ho chiamato mixer ma non sarà un vero e proprio mixer ma un qualcosa che mi modula i suoni in automatico e poi li manda agli speaker secondariamente il tipo di input deve poter arrivare da una qualunque sorgente sia che è analogica sia che sia digitale. i potenziometri digitali io li vorrei montare solo ed esclusivamente per il semplice motivo che il mio progetto finito non deve presenter alcuna manopola o tasto o fader o nnt atro ma ben si tutto integrato in un programma di pilotaggio ( se cosi lo possiamo definire) e i vari integrati che compongono l'hardware.
spero di essermi spiegato meglio.
Ora arei davvero felice di poter lavorare con voi per scriverne un buon programma e consigliarci a vicenda!

per uwe ho richiesto la cosa per il semlice motivo che qui l'ho psta in termini diversi primo e secondo perchè sono libero di chiedere una cosa quante volte voglio sentendo tutti i pareri possibili.

Peppe.:
partiamo dal fatto che l'ho chiamato mixer ma non sarà un vero e proprio mixer ma un qualcosa che mi modula i suoni in automatico e poi li manda agli speaker secondariamente il tipo di input deve poter arrivare da una qualunque sorgente sia che è analogica sia che sia digitale. i potenziometri digitali io li vorrei montare solo ed esclusivamente per il semplice motivo che il mio progetto finito non deve presenter alcuna manopola o tasto o fader o nnt atro ma ben si tutto integrato in un programma di pilotaggio ( se cosi lo possiamo definire) e i vari integrati che compongono l'hardware.
spero di essermi spiegato meglio.
Ora arei davvero felice di poter lavorare con voi per scriverne un buon programma e consigliarci a vicenda!

allora correggimi se sbaglio:
in pratica stiamo parlando di una sorta di sampler? tu vorresti che, dato un input analogico in ingresso ad Arduino, questo ti restituisca lo stesso suono, ma modificato in frequenza a seconda di come imposti il potenziometro?...e per l'uscita vorresti usare un'uscita PWM?

Se è così ti devo fermare subito. Non funzionerà, ma credo di aver capito male..arduino non va bene per fare processing audio. Puoi usarlo per controllare dei device di digitalizzazione, ma non è possibile in alcun modo utilizzare arduino per processare dell'audio, indipendentemente dall'arduino che usi.

L'uscita PWM inoltre ti ritorna solo un'onda quadra senza armoniche, per cui il classico suono da cicalino, non può riprodurre suoni complessi.

Per il controllo di potenziometri comunque il discorso non è complesso, ci sono degli esempi in giro sia con interfaccia SPI che con interfaccia I2C, devi solo valutare quale delle due è meglio (con la I2C in caso di device multipli risparmi pin), sto facendo qualche prova anche io, se vuoi ti tengo informato, ma io li applico solo a circuiti analogici, e uso arduino solo come controller e mini-memoria

Peppe.:
per uwe ho richiesto la cosa per il semlice motivo che qui l'ho psta in termini diversi primo e secondo perchè sono libero di chiedere una cosa quante volte voglio sentendo tutti i pareri possibili.

Come moderatore ho la possibilitá di fermare delle discussioni alle quali sono state giá date risposte esaurienti.

Vorrei chiederti di spiegare il Tuo progetto perché finora hai dato poche informazioni. Se come termini diversi intendi di non dare informazioni non sono d' accordo.

Vuoi fare qualcosa con delle frequenze, con audio, con potenziometri digitali, dano il tutto su altoparlanti, e come segnale di entrata sia analogico che digitale. cosa dovrei capire?
Presenti un Sketch che prevede una funzione dove puoi selezionare la frequenza delle uscite PWm ma non ne fai uso. Leggi 4 entrate analogiche e non fai niente con i valori letti.

cosa possiamo capire? Come possiamo aiutarti se non ci spieghi cosa vorresti fare.

Posso dirti che non é possibile fare con Arduino perché non ho capito cosa vuoi fare o perché interpreto "Audio" e "speaker" come elaborazioe digitale di segnali audio che non é possibilie fare con Arduino perché non adatto come funzionalitá ne come potenzialitá.

Ciao Uwe

Pure io sono un poco perplesso :zipper_mouth_face:
Se devi leggere una frequenza entro i 20Khz puoi usare la pulsein, se devi leggere freq maggiori fino a 40khz cè una libreria che trovi in questosito :
http://www.pjrc.com sennò devi usare gli interrupt, tornando a quanto detto prima se devi leggere segnali audio contenenti una e ripeto solo una armonica ovvero una nota fissa per volta puoi farlo, se intendi fare campionamento multifrequenza nisba, non puoi farlo...

vi ringrazio a tutti e levo il disturbo sono ormai giunto a poter dire k il mio progetto non si puo fare :roll_eyes:
grazie a tutti della disponibilità e partecipazione. :smiley:

ratto93:
Pure io sono un poco perplesso :zipper_mouth_face:
Se devi leggere una frequenza entro i 20Khz puoi usare la pulsein, se devi leggere freq maggiori fino a 40khz cè una libreria che trovi in questosito :
http://www.pjrc.com sennò devi usare gli interrupt, tornando a quanto detto prima se devi leggere segnali audio contenenti una e ripeto solo una armonica ovvero una nota fissa per volta puoi farlo, se intendi fare campionamento multifrequenza nisba, non puoi farlo...

Se vuoi fare qualcosa con audi non basta sapere la frequenza ma anche l'ampiezza di un segnale. Inoltre i segnali non sono mai sinusoidali o rettangolari.
Ciao Uwe

Certo uwe ma almeno riusciva a leggere qualcosa in quel modo :slight_smile: