Mi spiego : In casa ho una gradinata di circa 20 scale , rifacendo adesso il pavimento sto mettendo delle luci sui gradini , del tipo calpestabili . Quello che voglio fare è :
appena arrivo al primo gradino , attraverso una coppia di fotocellule si accende la luce del primo gradino e a intervalli regolari di circa 1s si accende il secondo e poi il terzo , cosi via fino all'ultimo gradino . Nel fare questa sequenza di luci dal terzo gradino in poi il primo inizia a spegnersi . In pratica rimarranno accesi 3 gradini che percorreranno tutta la gradinata fino alla fine .
Fin qui nessun problema , utilizzo un arduino ,demultiplexer e n relay .
Il problema è invece che voglio che questa operazione deve essere fatta anche se le scale vengono percore al senso contrario . Ovviamente il codice sarebbe lo stesso ma ciò che mi ha bloccato è il fatto che non riesco a far fare questa sequenza al mio arduino uno anche contemporaneamente . Questo perché Arduino inizia una sequenza ad esempio UP e non ascolta più input finché non finisce tale sequenza .
Quello che chiedo è un aiuto per far si che questa sequenza si avvii in qualsiasi momento uno passi attraverso la fotocellula , sia se una persona sta per salire le scale e allo stesso momento un'altra persona sta per scendere , sia se una persona si trova a metà gradinata salendo le scale e un'altra persona sta ora iniziando a salire le scale
Posto un esempio di codice ipotizzando 5 led come se fossero 5 delle scale .
- Codice: Seleziona tutto
int led1=1;
int led2=2;
int led3=3;
int led4=4;
int led5=5;
int fc1=A0; //fotocellula UP
int fc2=A1; //fotocellula DOWN
int fc1state;
int fc2state;
int t =1000;
void setup(){
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
Serial.begin(9600);
}
void loop() {
fc1state=analogRead(fc1);
fc2state=analogRead(fc2);
if(fc1state<500)
up();
if(fc2state<500)
down();
}
void up(){
digitalWrite(led1,HIGH);
delay(t);
digitalWrite(led2,HIGH);
delay(t);
digitalWrite(led3,HIGH);
digitalWrite(led1,LOW);
delay(t);
digitalWrite(led4,HIGH);
digitalWrite(led2,LOW);
delay(t);
digitalWrite(led5,HIGH);
digitalWrite(led3,LOW);
delay(t);
digitalWrite(led4,LOW);
delay(t);
digitalWrite(led5,LOW);
}
void down(){
digitalWrite(led5,HIGH);
delay(t);
digitalWrite(led4,HIGH);
delay(t);
digitalWrite(led3,HIGH);
digitalWrite(led5,LOW);
delay(t);
digitalWrite(led2,HIGH);
digitalWrite(led4,LOW);
delay(t);
digitalWrite(led1,HIGH);
digitalWrite(led3,LOW);
delay(t);
digitalWrite(led2,LOW);
delay(t);
digitalWrite(led1,LOW);
}

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




pigreco]=π

inizio sequenza UP , inizio sequenza down