Show Posts
Pages: 1 ... 3 4 [5] 6 7 ... 19
61  International / Software / Re: Task leOS, strano problema. on: October 24, 2012, 03:48:59 pm
E cioè io creo il task e gli metto come intervallo il tempo di scrolling che voglio una riga e l'altra.
premo enter di invio e avvio il task.

fuori abbiamo le stringhe e il contatore:
char* testo[]={"riga1", "riga2", "riga3", "rirga4"}
int contatore = 0;

Code:
void stampaInfo()
{
lcd.setCursor(0,0);
lcd.print(testo[contatore ]);
lcd.setCursor(0,1);
lcd.print(testo[contatore +1]);
delay(1000); //questo è il delay che mi serve prima che il testo scorra verso sopra

//qui faccio un controllo sul contatore
if (contatore>NUM_RIGHE)
{
contatore=0;
}
else
{
contatore++;
}

lcd.clear()
}


Non so se intendi una cosa del genere.. ma a primo impatto forse può funzionare, purtroppo non riesco a provare ho scritto ste righe al volo..
62  International / Software / Re: Task leOS, strano problema. on: October 24, 2012, 03:30:36 pm
Mmm no, il delay che io metto serve per dare il tempo all'utente di leggere la scritta che scorre, visto che nel modo che l'ho strutturata dovrebbe funzionare così:

Code:
Le stringe che abbiamo: "Riga1" , "Riga2" , "Riga3" , "Riga 4"

quindi parte la funzione e scrive sul display 16x2:

Riga1
Riga2
delay(quello che provoca il danno xD )
Riga2
Riga3
delay(quello che provoca il danno xD )
Riga3
Riga4
Il delay quindi che sta nel ciclo for invece serve per dare quei (es: 600 ms) di tempo a chi legge le info prima che il testo scorra verso sopra.
63  International / Software / Re: Task leOS, strano problema. on: October 24, 2012, 03:19:05 pm
Non può perché il delay è una funzione che ferma l'esecuzione del codice per il numero di ms specificato. Per funzionare usa leggere i millisecondi da millis, ma questa funzione è basata su un contatore che viene incrementato da un interrupt agganciato all'overflow del timer 0.
Il leOS usa uno schedulatore inserito in un altro timer e viene richiamato all'interno di un interrupt. All'interno di un interrupt, vengono bloccati tutti gli altri interrupt, per cui il delay non funzionerà e la tua funzione congelerà il microcontrollore.
E poi perché devi mettere un'attesa di 1 secondo all'interno di una funzione? Stai usando male il leOS. Spiega cose devi fare che troviamo la soluzione più adatta.

Ok, ora mi è chiaro perchè il delay non funziona.
Cerco di riassumere un po la situzione anche se non ho il codice sotto mano ora.

Nel loop ho due principali funzioni
Code:
leggiPulsanti();
navigaMenu();

leggiPulsanti mi restituisce un'intero.
navigaMenu è utilizzata dalla libreria menubeckend.

Navigo senza problemi nel menu, ho utilizzato 4 tasti totali (destra, sinistra, enter ed esc) e riesco tranquillamente ad accedere a menu e sottomenu e, nel caso utilizzare un menu(aumentare/diminuire setting ed altro)...
Il problema ora mi è sorto nel menu chiamato "info".

(Non ho detto che sto utilizzando un display 16x2 gestito tramite liquidcrystal.h)

In questo menu io vorrei che una volta avuto accesso, del testo scorresse, in modo verticale.

Ecco la fonte del problema, il testo che scorre in verticale, io ho pensato di risovlerlo così:

Code:
void stampaInfo()
{
char* testo[]={"riga1", "riga2", "riga3", "rirga4"}

for(int i=0; i<4; i++)
{
lcd.setCursor(0,0);
lcd.print(testo[i]);
lcd.setCursor(0,1);
lcd.print(testo[i+1]);

delay(1000); //questo è il delay che mi serve prima che il testo scorra verso sopra
lcd.clear()
}
}

Ora, questo è il codice che viene eseguito se io entro nel menu info, il problema sta proprio nel delay che ferma il codice e non mi permette di poter controllare la pressione eventuale del tasto ESC (che mi permetterebbe di uscire dal menu info e andare al menu principale).
(In realta premendo ripentutamente il tasto ESC alla fine ci riesco anche, ma è poco user friendly xD )

Ho pensato subito a leOS!:) E le soluzioni (da me pensate all'inzio) erano 2:

Implemento leOS ogni tot ms per leggere i tasti e tolgo quella funzione dal loop(): Sarebbe l'ideale ma siccome per ora la funzione che legge i tasti mi restiutisce un'intero non mi andava di modificarla.

Ho pensato allora di fare il contrario(il mio problema): Al setup inizializzo il tastk di leOS per la stampa del testo e lo metto in pausa(non lo avvio subito).
Quando premo enter per entrare nel menu info attivo il task..
A questo punto lui doveva farmi la funzione con il delay che genere il problema
(nel frattempo la lettura dei pulsanti è sempre attiva)..
..e quindi se premo ESC torno al menu principale e rimetto in pausa il tastk leOS visto che non mi serve..

Da qui il problema, leOS non può fare il delay..

Spero di aver spiegato + o - bene ma purtroppo senza codice davanti è difficile..:/

Grazie!
64  International / Software / Task leOS, strano problema. on: October 24, 2012, 01:35:27 pm
Ciao a tutti, sto utilizzando la libreria leOS per eseguire questo semplice task ogni x secondi (ancora devo decidere).
La funzione è questa:

Code:
void printInfo()
{
for(int i=0; i<4; i++)
{
lcd.setCursor(0,0);
lcd.print(i);
Serial.println(i);
delay(1000);
}   
}

Il problema è che non segue il delay di 1 secondo, è normale che leOS non possa fare questo?

Infatti da seriale si vede velocemente che scorrono le cifre..

Consigli?

Grazie
65  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 24, 2012, 04:04:59 am
Nicola, la soluzione te l'ho data ieri, stai solo perdendo tempo da ieri sera: fotoaccoppiatore e qualsiasi relé vuoi oppure un relé reed sincerandoti che assorba meno di 40mA, poi se vuoi usare il tuo da 12V devi prevedere 12V, a 9V la vedo malaccio, prendi un reed o il 5V e non se ne parla più se l'avessi ordinato ieri sera a quest'ora l'avevi già a casa smiley-cool

Super ragione! Relè a 5V sia!:) Io mi faccio prendere dall'ansia di voler veder funzionare sto cosooo!:) Senza pensare che tolto il flash ci sono 3000 cose ancora da sistemare! xD
Comunque, riprendendo il discorso della latenza che diceva astro, siccome è una cosa importante proprio perchè a me serve velocità, un ottimo relè?! (cerco sempre i consigli dell'esperto io..  smiley-cool  )
66  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 24, 2012, 04:01:20 am
allora relé.
Ciao Uwe

Un SYS1K-S-112L pilotato con il 4n35 può andar bene se alimento il tutto con una batteria da 9v?

Grazie!
67  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 24, 2012, 03:53:00 am
Se il flash da solo 40 V dovresti poter usare anche un 4N35. Devi rispettare la polaritá (emettitore sul negativo). Visto che lo hai sotto mano puoi provarlo subito.
Ciao Uwe

Appena provato, niente non va non ne vuole sapere :/
68  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 24, 2012, 03:41:03 am
Se può essere utile ho fatto un po di misure, quando il flash è carico (pronto a scattare) ci sono circa circa 40V..
p.e. congelare un movimento veloce, devi tenere conto di questa latenza.
Si in effetti quello che dovrei fare è proprio questo

[/quote]
Vai più che tranquillo con qualunque relè..
[/quote]

Quindi potrei utilizzare anche un relè tipo un SYS1K-S-112L? Il problema sta nel fatto che io vorrei alimentare il tutto tramite una batteria da 9V.. questo perché ho già disponibile il SYS1K-S-112L smiley
Altrimenti procedo con l'acquisto di uno di questi ad es:
http://www.ebay.it/itm/RELE-REED-DUAL-LINE-1-SCAMBIO-5V-0-11A-NORMALMENTE-APERTO-10217005-/230792875226?pt=Deviatori_Selettori_e_Relè&hash=item35bc53ccda#ht_500wt_922

Scusa le mille domande ma io ero pronto ad utilizzare un opto ma il flash mi ha incastrato! smiley

Grazie!
69  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 24, 2012, 03:27:54 am
Se può essere utile ho fatto un po di misure, quando il flash è carico (pronto a scattare) ci sono circa circa 40V..
70  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 05:30:34 pm
Non credo che un reed relé regga 200-300V. Percui non funziona neppure questo. Il SYS1K-S-112L é per 120VAC o 60V DC.

Puoi usare un optocopler con uscita TRIAC. Per esempio un MOC3021/22 o 23. Regono 400V e 1A.
http://www.datasheetcatalog.org/datasheet/motorola/MOC3021.pdf

Ciao Uwe


Quindi con il SYS1K-S-112L dovrei non riuscere a farcela? Mentre con uno di questi:
http://www.ebay.it/itm/MOC3021-OPTOISOLATORE-OPTOTRIAC-/160805668084?pt=Componenti_elettronici_attivi&hash=item2570c3c4f4
dovrei riuscre a cortocircuitare i due fili del flash?
Perchè praticamente io ora ci stavo provando con 4n35 ma come hai potuto leggere anche dalla risposta di astro si pensa sia proprio il flash che essendo un po vecchiotto mi dia questo "problema".

Grazie
71  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 04:50:30 pm
Ok quindi, posso usare direttamente un relè reed (questo quindi potrebbe andar bene) che lavora a 5v:

http://www.ebay.it/itm/RELE-REED-DUAL-LINE-1-SCAMBIO-5V-0-11A-NORMALMENTE-APERTO-10217005-/230792875226?pt=Deviatori_Selettori_e_Rel%C3%A8&hash=item35bc53ccda

Oppure, come detto prima io mi ritrovo un SYS1K-S-112L, che lavora a 12V e io dovrò alimentare il tutto con una batteria da 9v (non può andar bene giusto?)
E quindi se ho capito bene, scegliendo questa soluzione, dovrei pilotarlo tramite il fotoaccoppiatore? Ho capito male ah? smiley


P.S: Scegliendo di alimentare il tutto tramite una batteria da 12V (misurazioni precise non ne ho ancora fatte ma nel circuito dovrebbe essere presente un display 16x2, un paio di led e pulsanti, ricevitore ir, sensore di suono..) su che batteria dovrei orientarmi nel caso?
72  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 04:34:17 pm
No problemi di spazio non ne ho, fatto sta che comunque dovrei prenderne uno che lavora a 5 V.. Il tutto sarà alimentato con una batteria da 9v credo..
Comunque il fotoaccopiatore non lo posso usare, il relè potrebbè andar bene, ancora un'alternativa per cortocircuitare quei 2 contatti? smiley
73  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 03:57:10 pm
Ok, quindi serve un relè! Ho cercato su ebay "relè reed" e ho trovato questi ad esempio:

http://www.ebay.it/itm/RELE-REED-DUAL-LINE-1-SCAMBIO-12V-0-11A-NORMALMENTE-APERTO-10217012-/230792874857?pt=Deviatori_Selettori_e_Relè&hash=item35bc53cb69#ht_500wt_922

Potrebbero andar bene? In alternativa ho un sys1k-s-112l.. ma non so se è esagerato per il mio scopo o meno..
74  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 02:51:48 pm
Fatta la prova, il led si accende!:) Quindi il 4n35 funziona e sono io che sbaglio no?smiley

Molti flash, sopratutto se anzianotti, richiedono un vero e proprio corto tra GND e il contatto caldo per poter scattare, gli opto presentano sempre una certa resistenza in out e quasi sicuramente il tuo problema è questo.
Per far scattare i flash è meglio usare dei relè reed al posto degli opto.

Si, effettivamente il flash è vecchiotto, tanto credo!:)
Si tratta precisamente di un Metz Mecablitz 20 BC2.
L'alternativa ai relè reed quale sarebbe? (non ne ho disponibili ora..xD)
75  International / Hardware / Re: 4N35 - Sbaglio pin? on: October 23, 2012, 02:42:56 pm
Collega una R da 220-330 ohm (o similare) a 5V, all'altro capo collega l'anodo di un led qualsiasi, il catodo del led lo metti al collettore del transistor (il pin centrale del 4n35), l'emettitore (pin laterale) lo colleghi a GND. Così:
5v-R220-AnodoLED   CatodoLED-Collettore4n35   Emettitore 4n35-GND
Avvia lo sketch e dovresti vedere il led acceso ogni volta che mandi il pin di Arduino in HIGH

Fatta la prova, il led si accende!:) Quindi il 4n35 funziona e sono io che sbaglio no?smiley
Pages: 1 ... 3 4 [5] 6 7 ... 19