Go Down

Topic: Pin di input e output (Read 2832 times) previous topic - next topic

Peppe93

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à.
Code: [Select]

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:
Code: [Select]

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

pablos71

#1
Sep 10, 2014, 11:47 pm Last Edit: Sep 11, 2014, 12:08 am by pablos Reason: 1
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)

http://arduino.cc/en/Tutorial/AnalogInput
http://arduino.cc/en/Tutorial/PWM

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?
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

Peppe93

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.

simonenascivera

Si in teoria quello che hai scritto dovrebbe funzionare

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

simonenascivera


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

uwefed


Peppe93

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

simonenascivera

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

uwefed


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


Allora non capisco cosa intende Peppe di fare.

Quote
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

simonenascivera


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

paulus1969

Ma cosa entra?
E cosa esce?

??

Go Up