23 settembre 11, 13:56 | #1 (permalink) Top |
User 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 |
23 settembre 11, 14:20 | #2 (permalink) Top |
User 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 ] |
23 settembre 11, 16:03 | #3 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
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 | |
23 settembre 11, 21:58 | #5 (permalink) Top |
User 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 ] |
23 settembre 11, 22:48 | #6 (permalink) Top | |
Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.071
| Citazione:
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 | |
24 settembre 11, 00:27 | #7 (permalink) Top |
User | 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 ... |
Bookmarks |
| |
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 |