primo progetto prova non capisco :(

Buona sera a tutti,

mi chiamo simone e sono di bologna.

ho comprato uno starter kit, e ho iniziato a svolgere i primi progetti leggendo anche fonti esterne al libro del kit, per capire un po meglio la sintassi dell'IDE.

Preso da un raptus di follia ho provato a scrivere il mio primo skatch da 0 con molto scarsi risultati.

il mio progetto (un po banale) riguarda il funzionamento in fade di un LED rispetto alla luce presente nella stanza, sono riuscito a leggere i dati letti dal sensore di luminosità, ma non riesco a collegarli all'OUTPUT che sarebbe il mio LED.

in sostanza vorrei aumentare/diminuire la luminosità del LED direttamente proporzionale alla mancanza di luce nella stanza.

const int sensoreLuce = A0; const int ledGiallo = 9;

int valoreIn = 0; //quantità di luce che entra int valoreOut = 0; //quantità di luce che esce

void setup() { Serial.begin(9600); pinMode(sensoreLuce, INPUT); pinMode(ledGiallo, OUTPUT); }

void loop() { valoreIn = analogRead(sensoreLuce); Serial.print("Livello luce: "); Serial.println(valoreIn); delay(200); }

e da qui in poi mi sono completamente bloccato adesso come posso collegare il valoreIn al valoreOut?

ho provato a mappare i due valori ma non riesco a mappare quello del sensore sto diventando matto grazie in anticipo per l'aiuto

Per primo un entrata analogica non devi definirla con pinMode().

Poi se vuoi regolare la luminositá del LED sul Pin 9 del Arduino UNO in funzione della tensione letta sul partitore resistenza/fotoresistenza basta usare un map();

L' entrata analogica Ti da un valore da 0 a 1023 Un uscita PWM richiede un valore da 0 a 255.

Il map() funziona: https://www.arduino.cc/en/Reference/Map

map(value, fromLow, fromHigh, toLow, toHigh)

allora: analogWrite(ledGiallo, map(analogRead(sensoreLuce),0,1023,0,255)); o meglio capibile:

valoreIn = analogRead(sensoreLuce); valoreOut = map(valoreIn,0,1023,0,255)); analogWrite(ledGiallo,valoreOut);

Credo che hai messo una resistenza in serie al LED.

Ciao Uwe

int val = 0;
void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
}

void loop() {
  val = analogRead(0);
  Serial.print("valore sensore =");
  Serial.println(val);
  analogWrite(9, val/4);
}

Prova con questo sketch. Il pin del sensore è l'analog 0 e il pin del led è il 9-PWM

ooo grandioso :D :D grazie mille si si ho messo la resistenza :D

ma se volessi applicare questa funzione ad un progetto con dei led che fanno altro tipo lampeggiare oppure illuminarsi in base al tempo? mi sono spiegato? :S

ciao

vorrei aggiungere che forse bisogna capire come hai montato la fotoresistenza nel partitore.

In pratica valoreIn è uguale a 0 al buio (situazione più logica) o alla massima luce (meno logico ma ugualmente valido…)?

Se vale 0 al buio allora per fare quello che chiedi (aumentare la luminosità del led quando la luminosità ambientale scende) devi invertire la map che diventa map(valoreIn, 0, 1023, 255, 0).

In questo modo il buio (valoreIn == 0) viene mappato in 255 (massima luminosità del led) e la luce (valoreIn == 1023) viene mappato in 0 (led spento). I valori di luce intermedi verranno mappati in valori di luminosità del led intermedi.

xsimo86x: ma se volessi applicare questa funzione ad un progetto con dei led che fanno altro tipo lampeggiare oppure illuminarsi in base al tempo? mi sono spiegato? :S

Secondo me no. Almeno io non ho capito la domanda. In base al tempo di che ?

Infatti sono arrivato alla conclusione che volevo mi mancava solo il metodo per farlo. Diciamo che sto facendo piccoli esperimenti per arrivare ad un progetto finale molto più complesso. Il progetto finale è un calendario che conta giorni mesi con dei led che si illuminano e ora e anni che vengono indicati da dei nixie tube se li trovo altrimenti classici 7 segment display. Il problema è che vorrei che la luminosità di tutto il marchingegno vorrei cambiasse in base alla luce presente nella stanza adesso ho capito come si fa. Ma come si applica a tutto marchingegno? Comunque sono ancora molto indietro non riesco nemmeno a contare i girni ancora

:confused: nessun aiuto? sono un disastro a spiegare? :sob:

Intanto comincerei col metterci un RTC http://www.mauroalfieri.it/elettronica/rtc-ds1307.html e questo ti tiene aggiornato hh/mm/ss/gg/mm/aaaa poi dai dati ricavati ci fai quello che vuoi

adesso ho le idee piu chiare sul mio progetto ho viso che esistono dei nixie clock kit ma poi è possibile collegarli ad arduino per segnare mesi/giorni/anni? se no dovrei fare un nixie clock da zero con arduino ma sembra difficile gestire i nixie tube per diverse tensione e cose simili e con la mia esperienza ci metterei 3 anni :confused: consigli?