Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 23 settembre 11, 13:56   #1 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
pic, una domanda su una VARIABILE

ciao a tutti,ho ripreso in mano il mondo dei pic.....e con mikrobasic,mikroc,picbasic,picgenius........incomi ncio a farmi il mio bagaglio di conoscenze....dove non ho capito una cosa l ho imparata dan un altra parte......e via dicendo

ma la mia domanda che ho sempre avuto in testa da sempre era:

mettiamo una variabile:TEMPERATURA....byte...quindi da 0 a 255

io vorrei che so un esempio....controllare la temperatura di un motore,un tubo,un radiatore...non so un esempio

io con una variabille vista sul display senza fare i calcoli,posso vedere il valore che va da 0 a 255

ed ecco la mia domanda

io vorrei che la temperatura mentre sale da 0 al valore 100....faccia suonare un cicalino di continuo

ma mentre da 100 arriva a valore 70..deve suonare intermittente

da 70 a 140 suonare continuo e cosi via

ciò dall ultimo valore QUALSIASI se sale suona se scende suona intermittente

cè un metoto preciso x fare ciò o devo salvare ogni volta l utimo dato in una epron?

spero di essere stato chiaro,grazie
elicottero78 non è collegato   Rispondi citando
Vecchio 23 settembre 11, 14:20   #2 (permalink)  Top
User
 
L'avatar di marcosinatti
 
Data registr.: 11-06-2007
Residenza: Sansepolcro (Ar)
Messaggi: 1.948
Ti faccio un esempio in picbasic
LetturaTemperatura è la tua routine che aggiorna la variabile Temperatura
Il pause 300 definisce il tempo di intermittenza e di campionamento

LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld then FlagSalita=1
if Temperatura<TemperaturaOld then FlagSalita=0
If FlagSalita=1 then
High Buzzer
else
Toggle Buzzer
Endif
Pause 300
TemperaturaOld=Temperatura
Goto LoopTemperatura
__________________
Modifica Optic 8Ch ---- Luci Programmabili ---- RcSwitch ---- Il Mio Sito
HK500GT & Flymentor - HK450 & SMPilot- SMTech450 & SMPilot --- SM-PILOT [ The Stabilizer ]
marcosinatti non è collegato   Rispondi citando
Vecchio 23 settembre 11, 16:03   #3 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da elicottero78 Visualizza messaggio
ciao a tutti,ho ripreso in mano il mondo dei pic.....e con mikrobasic,mikroc,picbasic,picgenius........incomi ncio a farmi il mio bagaglio di conoscenze....dove non ho capito una cosa l ho imparata dan un altra parte......e via dicendo

ma la mia domanda che ho sempre avuto in testa da sempre era:

mettiamo una variabile:TEMPERATURA....byte...quindi da 0 a 255

io vorrei che so un esempio....controllare la temperatura di un motore,un tubo,un radiatore...non so un esempio

io con una variabille vista sul display senza fare i calcoli,posso vedere il valore che va da 0 a 255

ed ecco la mia domanda

io vorrei che la temperatura mentre sale da 0 al valore 100....faccia suonare un cicalino di continuo

ma mentre da 100 arriva a valore 70..deve suonare intermittente

da 70 a 140 suonare continuo e cosi via

ciò dall ultimo valore QUALSIASI se sale suona se scende suona intermittente

cè un metoto preciso x fare ciò o devo salvare ogni volta l utimo dato in una epron?

spero di essere stato chiaro,grazie
Per sapere se sale o se scende devi avere il valore precedente, quindi è chiaro che devi dichiarare un'altra variabile dove memorizzare il valore al termine del loop.

Tuttavia se memorizzi il valore istantaneo avrai delle false segnalazioni quando il valore è stabile (tenderà a rimbalzare fra due letture) quindi è opportuno in questi casi fare delle medie o introdurre dei filtri, tipo se per 10 letture consecutive il valore è inferiore al valore precedente, allora memorizza il nuovo valore e considera l'andamento in discesa altrimenti consideralo stabile, ed eventualmente la stessa cosa per il maggiore, in pratica ti servono almeno altre due variabili per i contatori del filtro...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 23 settembre 11, 19:41   #4 (permalink)  Top
User
 
L'avatar di elicottero78
 
Data registr.: 14-05-2005
Residenza: bergamo
Messaggi: 1.278
pensavo che dovevo girare il mondo x riuscire a scrivere il programma,ma voi me lo fate sembrare facile.....stasera faccio 2 prove......grazie a tutti e due,molto gentili
elicottero78 non è collegato   Rispondi citando
Vecchio 23 settembre 11, 21:58   #5 (permalink)  Top
User
 
L'avatar di marcosinatti
 
Data registr.: 11-06-2007
Residenza: Sansepolcro (Ar)
Messaggi: 1.948
Per evitare false commutazioni in maniera semplice e senza l'utilizzo di altre variabili, può bastare introdurre un pò di insteresi.
La commutazione avviene solo se dall'ultima volta c'è stato uno scostamento di almeno 2 punti.

LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld+2 then
FlagSalita=1
TemperaturaOld=Temperatura
endif
if Temperatura<TemperaturaOld-2 then
FlagSalita=0
TemperaturaOld=Temperatura
endif
If FlagSalita=1 then
High Buzzer
else
Toggle Buzzer
Endif
Pause 300

Goto LoopTemperatura
__________________
Modifica Optic 8Ch ---- Luci Programmabili ---- RcSwitch ---- Il Mio Sito
HK500GT & Flymentor - HK450 & SMPilot- SMTech450 & SMPilot --- SM-PILOT [ The Stabilizer ]
marcosinatti non è collegato   Rispondi citando
Vecchio 23 settembre 11, 22:48   #6 (permalink)  Top
Adv Moderator
 
L'avatar di romoloman
 
Data registr.: 15-08-2007
Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
Citazione:
Originalmente inviato da marcosinatti Visualizza messaggio
Per evitare false commutazioni in maniera semplice e senza l'utilizzo di altre variabili, può bastare introdurre un pò di insteresi.
La commutazione avviene solo se dall'ultima volta c'è stato uno scostamento di almeno 2 punti.

LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld+2 then
FlagSalita=1
TemperaturaOld=Temperatura
endif
if Temperatura<TemperaturaOld-2 then
FlagSalita=0
TemperaturaOld=Temperatura
endif
If FlagSalita=1 then
High Buzzer
else
Toggle Buzzer
Endif
Pause 300

Goto LoopTemperatura

Preferisco sempre non basarmi sull'steresi ma su letture ripetute....

LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld then
if FlagSalita<5 then
FlagSalita=FlagSalita+1
endif
else
FlagSalita=0
endif
if Temperatura<TemperaturaOld then
if Flagdiscesa<5 then
FlagDiscesa=FlagDiscesa+1
endif
else
FlagDiscesa=0
endif
If FlagSalita=5 then
TemperaturaOld=Temperatura
FlagBuzzer=2
else if FlagDiscesa=5 then
FlagBuzzer=1
TemperaturaOld=Temperatura
else
FlagBuzzer=0
Endif
Pause 200
If FlagBuzzer=2 then
High Buzzer
else if FlagBuzzer=1 then
Toggle Buzzer
else
Low Buzzer
endif
Goto LoopTemperatura

Più complesso ma sicuramente rimbalza meno sulle temperature stabili...
__________________
Vivere in qeusto mondo e molto belo belo e vale la pena starci ma a volte in questa UNICA vita che ci apartiene posono succedere cose brute brute alora mi chiedo perche siete incazziati domani pole esere anche lultimo
Grazie "TRANQUILLO"
FAI 15766
romoloman non è collegato   Rispondi citando
Vecchio 24 settembre 11, 00:27   #7 (permalink)  Top
User
 
L'avatar di HappyFly
 
Data registr.: 01-01-2008
Residenza: Perugia
Messaggi: 681
Immagini: 12
Un'altro piccolo suggerimento ...

Non usare "mai" la eeprom per memorizzare in tempo reale valori di variabili, specie se come nel tuo caso non ti interessa assolutamente trovarle salvate dopo uno spegnimento e riaccensione del dispositivo.

Le eeprom per quanto alto hanno un numero massimo di cicli di scrittura per cui se te le bruci al ritmo di migliaia al secondo fai presto ... al massimo se ti serve di memorizzare un valore che cambia in tempo reale molto repentinamente chiediti se basterebbe per esempio memorizzarlo una volta al minuto (oppure il più alto o il più basso o l'ultimo ... dipende da cosa devi fare ...) e così riduci drasticamente ad un numero accettabile i cicli ...
HappyFly non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
L'Era dei Quad a passo variabile è iniziata .. una storia tutta italiana ;) redfox74 Elimodellismo in Generale 21 26 marzo 10 18:53
una domanda dimo16v2 Aeromodellismo Volo Elettrico 7 14 luglio 08 01:25
una domanda.... artu Segnalazione Bug e consigli 4 20 ottobre 07 11:38
una stupida domanda x una modifica E GLIDER elicottero78 Aeromodellismo Progettazione e Costruzione 7 10 maggio 07 20:20
una domanda ... Eversor Elimodellismo Principianti 5 25 marzo 07 19:57



Tutti gli orari sono GMT +2. Adesso sono le 02:36.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002