Pin di input e output

Salve a tutti era tanto che non scrivevo qui per chiedervi qualcosina e stasera avrei da chiedervi:
allora dovrei fare un lavoro per la tesi dove mi è richiesto che preso un segnale in input poi lo posso variare, ovvero mi spiego e spiego ciò che voglio fare, il segnale entra ad esempio dal pin digitale di arduino n°4 vorrei che uscisse dal pin numero 9 ovvero un pin con pwm che mi permette così di variare l'intensità del segnale in ingresso.
riassumiamo ingresso--->pin 4(esempio)--->pin 9( che sia pwm)---> output del segnale sul quale ho apportato le modifiche di intensità.

int led = 9; // il LED è connesso all'uscita digitale 13
int pin = 4; // il pulsante è collegato al pin digitale 7
int value = 0; // variabile per memorizzare il valore letto
 void setup()
 { pinMode(led, OUTPUT); // imposta il pin 13 come OUTPUT
 pinMode(pin, INPUT); // imposta il pin 7 come INPUT 
} 
void loop()
 { value = digitaRead(pin); // imposta 'value' uguale // al valore letto su 'pin' 
digitalWrite(led, value); // imposta 'led' al valore // della variabile 'value'
 }

quindi preso questo esempio banale io avevo pensato se ho più cose da comandare fare un iterazione del codice e ottenre:

int led1 = 9; // il LED è connesso all'uscita digitale 13
int pin1 = 4; // il pulsante è collegato al pin digitale 7

int led2 = 10;
int pin2=5;

int led3 = 11;
int pin3 =6;

int value = 0; // variabile per memorizzare il valore letto
 void setup()
 { pinMode(led1, OUTPUT); // imposta il pin 13 come OUTPUT
 pinMode(pin1, INPUT); // imposta il pin 7 come INPUT 

pinMode(led2, OUTPUT);
 pinMode(pin2, INPUT);

pinMode(led3, OUTPUT);
 pinMode(pin3, INPUT);
} 
void loop()
 {  //nel loop va fatta un iterazione come sopra con 3 value ad esempio diversi value 1...2...3 e quindi si ripetono i processi.
 }

io lo avrei pensato così ma sono ben accetti tutti i vostri possibili consigli Grazie mille in anticipo

Ti sarai spiegato, ma non è che sia proprio così chiaro, l'ingresso sul pin 4 non può essere variabile o è 0 o è 1, è un pin digitale, se vuoi avere un pin PWM in uscita che dia un segnale proporzionale all'ingresso tramite software devi usare i pin analogici che sono A0-A7 su arduino UNO oppure A0-A15 sulla Mega 2560

Anche per ipotesi che il tuo pin 4 sia un analog pin (che non lo è) non puoi passare il valore letto dall'analog al PWM direttamente senza un equazione o meglio un rapporto.
L'input va da 0 a 1023 mentre il PWM va controllato con valori da 0 a 255 (sempre se parliamo di micro AVR)

Non capisco lo sketch imposti il pin 4 e nei commenti parli di pin 7, scrivi led1=9 però lo descrivi come pin 13 ... un po' confusa la cosa
Sicuro sia una tesi che devi fare?

ti spiego meglio io voglio semplicemente che in segnale in input k entra in un pin chiamalo a esca dal pin chiamiamolo b in tutto ciò io voglio agire sul pin b per variarne l'intensità. Il tutto in modo digitale sia chiaro in modo che poi con un protocollo Firmata io controllo tutto dal pc a distanza.

Si in teoria quello che hai scritto dovrebbe funzionare

Vuoi leggere su un pin un qualsiasi segnale analogico e riprodurrlo su un altro e eventualmente anche elaborandolo?
In pratica non funziona.

Ci sono molte limitazioni:

  1. il convertitore A/D legge a una frequenza di 25kHz
  2. non so la velocitá di trasmissione dela seriale di Firmata ma anche con la velocitá massima diciamo con una decina di Byte arrivi a poter trasmettere ca 1000 comandi al secondo
  3. il PWM in uscita non é un segnale analogico ma un segnale digitale che viene spento /acceso con una frequenza di 490Hz in funzione del valore dato. Puoi aggiungere un filtro RC ma abbassi ulteriormente la banda passante a una decina di Hz. Puoi aggiungere un convertitore DAC ma devi modificare lo sketch Firmata perche non provvederá l' uso di quel componente.

In sostanza per segnali di bassa frequenza (ben molto sotto l' kHz) é fattibile.

Ciao Uwe

uwefed:
Vuoi leggere su un pin un qualsiasi segnale analogico e riprodurrlo su un altro e eventualmente anche elaborandolo?
In pratica non funziona.

Ci sono molte limitazioni:

  1. il convertitore A/D legge a una frequenza di 25kHz
  2. non so la velocitá di trasmissione dela seriale di Firmata ma anche con la velocitá massima diciamo con una decina di Byte arrivi a poter trasmettere ca 1000 comandi al secondo
  3. il PWM in uscita non é un segnale analogico ma un segnale digitale che viene spento /acceso con una frequenza di 490Hz in funzione del valore dato. Puoi aggiungere un filtro RC ma abbassi ulteriormente la banda passante a una decina di Hz. Puoi aggiungere un convertitore DAC ma devi modificare lo sketch Firmata perche non provvederá l' uso di quel componente.

In sostanza per segnali di bassa frequenza (ben molto sotto l' kHz) é fattibile.

Ciao Uwe

Uwefed dice che vuoi usare solo segnale digitale

Ho un portavoce??? :wink: :wink: :wink:

Beh che dire ragazzi siete sempre disponibilissimi e vi ringrazio nel caso riesce qualcosa vi farò sapere, è sempre bello scoprire in caso cose nuove!! :slight_smile: :slight_smile:

wefed ci siamo capiti male inendevo
Uwefed, lui ha necessita di usare solo il digitale

simonenascivera:
wefed ci siamo capiti male inendevo
Uwefed, lui ha necessita di usare solo il digitale

Allora non capisco cosa intende Peppe di fare.

il segnale entra ad esempio dal pin digitale di arduino n°4 vorrei che uscisse dal pin numero 9 ovvero un pin con pwm che mi permette così di variare l'intensità del segnale in ingresso.

Modificare il segnale di ingresso al pin 4 con un segnale PWM sul pin 9 ????

Ok, puó leggere un segnale PWM con un entrata e riprodurrlo su un Pin ma é quello che intende Peppe?? Comunque anche quá sono limitazioni e non so se Firmata ha la funzione di leggere un segnale PWM.

Ciao Uwe

Peppe.:
Il tutto in modo digitale sia chiaro in modo che poi con un protocollo Firmata io controllo tutto dal pc a distanza.

Ma cosa entra?
E cosa esce?

??