Ciao streetspirit!!
Se hai chiesto qualcosa, vuol dire che hai avuto qualche difficoltà, quindi non è una cosa banale.
Io sto usando arduino da due settimane dopo essermi documentato.
Ti voglio consigliare un libro proprio per chi comincia ad utilizzare arduino: Si chiama "Getting started with arduino" e lo puoi ordinare dal sito della smartproject: http://www.smartprj.com/catalog/index.php?main_page=product_info&cPath=1&products_id=35
Su questo libro troverai degli utilissimi esercizi.
Se stai utilizzando le funzioni analogRead() e analogWrite(), ti consiglio di guardare il capitolo 5, che presenta esempi con tali funzioni.
Ti riporto brevemente lo scopo di queste funzioni:
-
int analogRead(pin)
//Legge la tensione applicata ad un pin analogico e ritorna un valore numerico 0 e 1023 che rappresenta una tensione tra 0V e 5V. (step conversione: 5mV -->1 unità)
Esempio: tensione di 2,5V al pin 0. AnalogRead(0) restituisce 512.
-
analogWrite(pin,value)
//Cambia il livello PWM di un segnale presente sui pin (3,5,6,9,10,11).
value deve essere un valore numeric compreso tra 0 e 255 che rappresenta una tensione tra 0V e 5V. (step conversione: 20mV-->1 unità)
Esempio: analogWrite(9,128); Imposta un segnale PWM per il pin 9 con duty cycle del 50%
Se non sbaglio c'è anche un esercizio che tratta l'esperimento che stai facendo, o molto simile, se ti interessa ti posso passare il link dove ci sono i codici di una decina di esercizi molto utili per capire l'uso di tutte le funzioni.
Ecco il link: http://makezine.com/getstartedwitharduino/
Leggendo il tuo post mi è venuto qualche dubbio...
(preciso che è da poco che lo utilizzo, quindi spero di non darti informazioni errate ;))
Tu dici:
"L'uscita analogica legge il valore del fototransistor (analogRead) e imposta un valore su un'altra uscita analogica (analogWrite) che dovrebbe variare l'intensità luminosa di un led in base al valore letto sull'uscita analogica del fototransistor."
Perchè dici l'uscita analogica legge...? se mai è un input analogico
Per le uscite analogiche devi usare un pin PWM (3,5,6,9,10,11).
Usi il 5, quindi quello va bene.
"Ho avviato il tutto e i valori vengono letti in ingresso dall'uscita del fototransistor e inviati al led.
il problema che dall'uscita analogica 5 non esce tensione!"
Come fa a leggere i valori se dall'uscita 5 non esce tensione?
Il led tra che pin è collegato? e il fototransistor?
Prova a scrivere qualcosa in dettaglio che magari riesco a dirti qualcosa di più.
"però non ho capito perchè utilizzando analogWrite non ottengo tensione in uscita dall'analogica bensì dalla PWM.."
la ottieni dalla PWM perchè il PWM è utilizzato per trattare un pin digitale come analogico.
Prova a guardare questo esempio:
// Example 04: Fade an LED in and out like on
// a sleeping Apple computer
//
// Copy and paste this example into an empty Arduino sketch
#define LED 9 // the pin for the LED (oppure un pin PWM)
int i = 0; // We'll use this to count up and down
void setup() {
pinMode(LED, OUTPUT); // tell Arduino LED is an output
}
void loop(){
for (i = 0; i < 255; i++) { // loop from 0 to 254 (fade in)
analogWrite(LED, i); // set the LED brightness
delay(10); // Wait 10ms because analogWrite
// is instantaneous and we would
// not see any change
}
for (i = 255; i > 0; i--) { // loop from 255 to 1 (fade out)
analogWrite(LED, i); // set the LED brightness
delay(10); // Wait 10ms
}
}
è semplice, se ti servisse qualcosa ti posso aiutare, dato che l'ho realizzato sulla basetta.
(Ho acquistato il kit workshop è c'è il necessario per fare un pò di prove... http://www.smartprj.com/catalog/index.php?main_page=product_info&cPath=1&products_id=10)
Ultima cosa... esercizio molto simile al tuo è il seguente:
06b) Impostare la luminosità di un led in base a un valore analogico di input (sensore LDR)
Avrà un'analogRead() per leggere il segnale del sensore, e un'analogWrite() per impostare la luminosità del led.
Nota: commento a due istruzioni
val = analogRead(0); //legge il valore dal sensore
analogWrite(LED, val/4)
Il valore val viene diviso per 4 perché analogRead() restituisce un numero tra 0 e 1023, ma analogWrite() accetta valori tra 0 e 255.
Codice:
#define LED 9 // the pin for the LED
int val = 0; // variable used to store the value
// coming from the sensor
void setup() {
pinMode(LED, OUTPUT); // LED is as an OUTPUT
// Note: Analogue pins are
// automatically set as inputs
}
void loop() {
val = analogRead(0); // read the value from
// the sensor
analogWrite(LED, val/4); // turn the LED on at
// the brightness set
// by the sensor
delay(10); // stop the program for
// some time
}
P.S: scusa se ho scritto tanto!!