sensori di luce

ciao
arduino è davvero un enigma!aiutateci!! :cry:
dobbiamo collegare un sensore di luce a dei led...esempio: se in un minuto di tempo il sensore rileva un solo oscuramento si accenderà il led numero 1, se rileva due oscuramenti si accenderà il led numero 2. Dopo 7 minuti i led si spengono automaticamente e il meccanismo ripartirà solamente quando il sdensore rileva un nuovo oscuramento sempre in un minuto.
grazie a chi ci risponderà :wink:

Di base ti serve un rtc, se i minuti devono essere proprio precisi, un sensore di luce, e i led... queste cose le hai?

si si abbiamo sia il sensore di luce che i led...i minuti nn devono essere precisissimi basta una cosa approssimativa...
ci manca solo il codice!! :stuck_out_tongue:

Ma avete fatto qualcosa che non va ed e' da correggere, o non avete fatto niente?

purtroppo non abiamo fatto nulla :-[

spremete le meningi allora! Come consiglio, visto che anch'io non sono un esperto programmatore vi dico di provare le cose un po' alla volta.
Tanto per capirci provate prima a scrivere un codice che accende il primo led dopo l'oscuramento del sensore e andate avanti a piccoli passi.

Piccolo aiutino: il sensore di luce va collegato ad un ingresso analogico, magari partite proprio solo col leggere il valore che vi da e scriverlo su seriale, così sapete cosa puo' essere considerato per voi oscurato.

un passo alla volta si fa per dire.... venerdi abbiamo la consegna, non capisco nulla di quello che hai detto :cry:
ho cercato un pò sul sito di arduino, ma nulla, mi dice che i code che ci osno li sono errati (quando li vado a caricare) :cry:
grazie per l'aiuto comq :slight_smile:

se non dici cosa carichi, sara' difficile aiutarti.. ma poi, da 0 a questo in 5 giorni ti hanno chiesto?

la mia collega ha caricato questo codice:

int LDR = 2; // select the input pin for the LDR
int ledPin = 13; // select the pin for the LED
int val = 0; // variable to store the value coming from the sensor

void setup() {
pinMode(LDR, INPUT); // declare the LDR as an INPUT
pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}

void loop() {
val = analogRead(LDR); // read the value from the sensor
digitalWrite(ledPin, HIGH); // turn the ledPin on
delay(val); // stop the program for some time
digitalWrite(ledPin, LOW); // turn the ledPin off
delay(val); // stop the program for some time
}

trovato su un sito. pensavamo di poter capire studiandolo. a capire si capisce,solo che non funziona :-[

sarà una banalità, ma se il codice ve lo carica, controllate i collegamenti!

salve ragazzi!
oggi abbiamo smanettato un poco e abbiamo deciso di usare i pulsanti sensibili ;D ( da fare con le monetine da 5 cent :sunglasses: )

abbiamo un code, potete dare un'occhiata? :wink:

int value = 0;
int ledpinR = 9;
int ledpinB = 10;
int ledpinBL = 11;
int BTN_PINB= 7;
int BTN_PINBL= 8;
int BTN_PINR= 6;
int stateledpinB = LOW;
int stateledpinBL = LOW;
int stateledpinR = LOW;
int stateBTN_PINB = 0;
int stateBTN_PINBL = 0;
int stateBTN_PINR = 0;

void setup()
{
pinMode(BTN_PINB, INPUT);
pinMode(BTN_PINBL, INPUT);
pinMode(BTN_PINR, INPUT);
pinMode (ledpinB, OUTPUT);
pinMode (ledpinBL, OUTPUT);
pinMode (ledpinR, OUTPUT);
pinMode (ledpinB = false);
pinMode (ledpinBL = false);
pinMode (ledpinR = false);
}
void loop(){
if(digitalRead(BTN_PINB) == HIGH {
BTN_PINBL == true
BTN_PINR = true
}
{
for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
{
analogWrite(ledpinBL, value); // sets the value (range from 0 to 255)
analogWrite(ledpinR, value); // sets the value (range from 0 to 255)
delay(30); // waits for 30 milli seconds to see the dimming effect
}
for(value = 255; value >=0; value-=5) // fade out (from max to min)
{
analogWrite(ledpinBL, value); // sets the value (range from 0 to 255)
analogWrite(ledpinR, value); // sets the value (range from 0 to 255)
delay(30);

}
else if (digitalRead(BTN_PINBL) == HIGH {
BTN_PINB == true
BTN_PINR == true
}
{
for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
{
analogWrite(ledpinB, value); // sets the value (range from 0 to 255)
analogWrite(ledpinR, value); // sets the value (range from 0 to 255)
delay(30); // waits for 30 milli seconds to see the dimming effect
}
for(value = 255; value >=0; value-=5) // fade out (from max to min)
{
analogWrite(ledpinB, value); // sets the value (range from 0 to 255)
analogWrite(ledpinR, value); // sets the value (range from 0 to 255)
delay(30);
}
else if } (digitalRead(BTN_PINR) == HIGH {
BTN_PINB == true
BTN_PINBL == true
}
{
for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
{
analogWrite(ledpinB, value); // sets the value (range from 0 to 255)
analogWrite(ledpinBL, value); // sets the value (range from 0 to 255)
delay(30); // waits for 30 milli seconds to see the dimming effect
}
for(value = 255; value >=0; value-=5) // fade out (from max to min)
{
analogWrite(ledpinB, value); // sets the value (range from 0 to 255)
analogWrite(ledpinBL, value); // sets the value (range from 0 to 255)
delay(30);
}

non credo sia finito, ma intanto abbiamo scritto questo. il problema è uno: non sappiamo bene sotto che colonna scrivere le cose. lo stato dei led (false) vamesso in void setup? o prima?

grazie a chi risponderà :slight_smile:

hey ma non rispodne nessuno? :cry:
mi basta anche un code con le booleane, un code giusto però..almeno dò un'occhiatina :-/
sul sito non ho trovato nulla :cry:

Ma il pinmode false, da dove lo avete tirato fuori ?

pinMode (ledpinB = false);
pinMode (ledpinBL = false);
pinMode (ledpinR = false);

questo codice non è arduino...

non dvrebbe neanche compilare

questo è il codice giusto.

int ledpinV= 9;
int ledpinR= 10;
int ledpinBL= 11;
int ledpinBI= 12;
int b1= 5;
int b2= 8;
int b3= 7;
int b4= 6;
int b11=0;
int b21=0;
int b31=0;
int b41=0;
int b5= b1+b2+b3+b4;
int value=0;

boolean b1_V = false;
boolean b2_V = false;
boolean b3_V = false;
boolean b4_V = false;

void setup ()
{
pinMode (b1, INPUT);
pinMode (b2, INPUT);
pinMode (b3, INPUT);
pinMode (b4, INPUT);
pinMode (ledpinV, OUTPUT);
pinMode (ledpinR, OUTPUT);
pinMode (ledpinBL, OUTPUT);
pinMode (ledpinBI, OUTPUT);
}

void loop ()
{
for (value;value <= 200; value +=0)
if (digitalRead (b1)== HIGH) {
b1_V= true;
b11= +1;
}
if (digitalRead (b2)== HIGH) {
b2_V= true;
b21= +1;
}
if (digitalRead (b3)== HIGH) {
b3_V= true;
b31= +1;
}
if (digitalRead (b4)== HIGH) {
b4_V= true;
b41= +1;
}
b5= b11+b2+b3+b4;

if (b5==1) {
for(value = 0 ; value <= 255; value+=5)
{
analogWrite(ledpinV, value);
delay(30);
}
for(value = 255; value >=0; value-=5)
{
analogWrite(ledpinV, value);
delay(30);
}
}
else if (b5==2) {
for(value = 0 ; value <= 255; value+=5)
{
analogWrite(ledpinR, value);
delay(30);
}
for(value = 255; value >=0; value-=5)
{
analogWrite(ledpinR, value);
delay(30);
}
}
else if (b5==3) {
for(value = 0 ; value <= 255; value+=5)
{
analogWrite(ledpinBL, value);
delay(30);
}
for(value = 255; value >=0; value-=5)
{
analogWrite(ledpinBL, value);
delay(30);
}
}
else if (b5==4) {
for(value = 0 ; value <= 255; value+=5)
{
analogWrite(ledpinBI, value);
delay(30);
}
for(value = 255; value >=0; value-=5)
{
analogWrite(ledpinBI, value);
delay(30);
}
}
}

ora però non funzionano i collegamenti :-[

il codice sembra giusto... ma che dovrebbe fare? :slight_smile:
come hai fatto i collegamenti?

lo so che non vi e di aiuto ma potreste dirmi cosa sono i pulsanti sensibili fatti con le monetine da 5 cent ??