Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Arduino: luci in sequenza

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Arduino: luci in sequenza

Messaggioda Foto Utenteeldiablo84 » 15 apr 2014, 0:51

Salve a tutto , ho in mente di realizzare un progetto e ho bisogno di aiuto per quanto riguarda il codice in Arduino .
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);
  }
Ultima modifica di Foto UtenteCandy il 15 apr 2014, 7:18, modificato 2 volte in totale.
Motivazione: quando riporti del codice usa il tag CODE. Grazie.
Avatar utente
Foto Utenteeldiablo84
3 5
New entry
New entry
 
Messaggi: 56
Iscritto il: 1 ott 2012, 23:06

1
voti

[2] Re: luci in sequenza , Arduino

Messaggioda Foto UtenteTardoFreak » 15 apr 2014, 0:58

eldiablo84 ha scritto:... In casa ho una gradinata di circa 20 scale ...

Ehm ... 20 scale in una casa? Abiti in un appartamento di circa 10 piani? :shock:

Piramide Maya o Petronas Towers? :-M
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[3] Re: luci in sequenza , Arduino

Messaggioda Foto UtentePietroBaima » 15 apr 2014, 1:01

secondo me faresti bene a dotare gli ospiti di ciabatte con led incorporato, risparmi led e ottieni la stessa funzione.

Ecco come collegare un led ai flip flop... :mrgreen:

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[4] Re: luci in sequenza , Arduino

Messaggioda Foto Utenteeldiablo84 » 15 apr 2014, 1:04

dai ... è una gradinata di un condominio . Oltre allo stupore mica sapresti come risolvere questo dilemma ?
Avatar utente
Foto Utenteeldiablo84
3 5
New entry
New entry
 
Messaggi: 56
Iscritto il: 1 ott 2012, 23:06

1
voti

[5] Re: luci in sequenza , Arduino

Messaggioda Foto UtenteTardoFreak » 15 apr 2014, 1:07

Incominciamo da qui,
hai circa (vabbè circa, si possono contare) venti scale. Ogni scala di quanti gradini è composta ... circa?
Così ci calcoliamo il numero di LED e di fotocellule che servono moltiplicando il numero di scale per i gradini di cui è composta ogni singola scala.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

3
voti

[6] Re: luci in sequenza , Arduino

Messaggioda Foto UtentePietroBaima » 15 apr 2014, 1:08

Immagine
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[7] Re: luci in sequenza , Arduino

Messaggioda Foto Utenteeldiablo84 » 15 apr 2014, 1:18

Ok , dicevo una ventina circa perché non sono sicuro di voler applicare a tutte questa soluzione di luci su scale , (per motivi di praticità , passaggio fili ecc ) . Comunque va bene , gli scalini ne saranno 17 . Per cui diciamo che avrò 17 relay da attivare secondo la sequenza su descritta . Magari gli ultimi 2 scalini li collego ad un solo relay cosi da averne 16 , per cui un demux a 4 pin di ingresso .
Avatar utente
Foto Utenteeldiablo84
3 5
New entry
New entry
 
Messaggi: 56
Iscritto il: 1 ott 2012, 23:06

0
voti

[8] Re: luci in sequenza , Arduino

Messaggioda Foto Utenteeldiablo84 » 15 apr 2014, 1:19

due fotocellule . una a inizio gradinata , una a fine gradinata .
Avatar utente
Foto Utenteeldiablo84
3 5
New entry
New entry
 
Messaggi: 56
Iscritto il: 1 ott 2012, 23:06

0
voti

[9] Re: luci in sequenza , Arduino

Messaggioda Foto Utenteeldiablo84 » 15 apr 2014, 1:29

descrivo nuovamente in maniera più diretta
caso 1) attivazione fotocella 1 --> inizio sequenza di UP (cioè attivazione uscita 1, attivazione uscita 2 , attivazione uscita 3 , attivazione uscita 4 e disattivazione uscita 1 , attivazione uscita 5 e disattivazione uscita 2 . . . . cosi via fino alla scala 17 con un secondo di tempo tra le varie accensioni ) , stop sequenza UP

caso 2) attivazione fotocellula 2 -->inizio sequenza down ( cioè uguale alla sequenza UP solo che al contrario cioè dall'uscita 17 alla 1)

caso 3) attivazione fotocellula 1 e attivazione fotocellula 2 ---> inizio sequenza UP , inizio sequenza down

caso 3) attivazione fotocellula 1 e dopo un di nuovo attivazione fotocellula 1 ---> attivazione sequenza UP e di nuovo attivazione sequenza UP.

In pratica anche le le luci sulle scale stanno già camminando non importa , devo far in modo che ad ogni attivazione di una delle 2 fotocellule parta comunque la sua sequenza .
Avatar utente
Foto Utenteeldiablo84
3 5
New entry
New entry
 
Messaggi: 56
Iscritto il: 1 ott 2012, 23:06

2
voti

[10] Re: Arduino: luci in sequenza

Messaggioda Foto Utentec1b8 » 15 apr 2014, 8:58

Un programma che gestisca un numero qualsiasi di sequenze up e sequenze down contemporanee come quelle che hai descritto è molto, molto banale. Servono circa 10 byte di ram e 10-15 righe di codice in C.

Prima però di descriverlo così come lo realizzerei io, volevo porti alcune domande/dubbi che ho:
1) velocità di scorrimento di 1 secondo. Se la scala viene affronatata da una persona più lenta (es. un anziano...) lo lasci al buio dopo pochi gradini?
2) se chi interrompe una delle fotocellule (es la fotocellula per salire) rimane fermo sul primo gradino, la sequenza deve cominciare lo stesso, si deve accendere in progressione tutta la scala o la sequenza inizia quando viene fatto il primo passo? (tutte condizioni molto semplici da gestire)
3) se le persone che scendono e salgono contemporaneamente sono un gruppo (quindi ogni persona interrompe la fotocellula un istante dopo la persona precedente) quante sequenze partono? Una sola o una per persona?
4) se chi si incontra nella scala (uno sale ed uno scende) si fermano a parlare, li lasci al buio?

Ciao.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti