home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


MickroBasic pro,gestione " . " per asse lineare
     
Autore Messaggio opzioni
Jasson





postato il:
02.03.2015, alle ore 23:47
Si purtroppo scrivere sul lcd, può causare dei problemi, a causa della sovrapposizione delle stringhe.

Io quando ho avuto problemi, ho utilizzato questo trucco:

Se devo visualizzare 6 caratteri ovvero 3 cifre per i millimetri, un punto e 2 per i centesimi, creo le 3 stringhe che mi servono

dim str_mm as string[3]
dim str_cent as string[2]
dim testo as string[6]

a questo punto associo carattere per carattere, quindi:

testo[0]=str_mm[0]
testo[1]=str_mm[1]
testo[2]=str_mm[2]
testo[3]="."
testo[4]=str_cent[0]
testo[5]=str_cent[1]

Ora la mia stringa testo, contiene nei primi 3 caratteri i millimetri, nel quarto carattere il punto e negli ultimi 2 caratteri i centesimi.

Non mi rimane che stampare sul lcd la stringa testo

Lcd_out(1,1,testo)
picmicro675




una ogni 10 livelli


postato il:
03.03.2015, alle ore 07:33
sparide74:
mi da errore:
str5 = FloatToStr(UpDown/100)


E quali sono gli errori ?

Ribadisco che non l' ho provato. Poi non uso MikroBasic e quindi l' ho scaricato ed installato e letto il manuale per capire come si scrive la sintassi.
Ho trovato anche un simulatore per encoder che magari oggi provo.

Sfortunatamente alcuni passi non li ho appurati e sospetto che FloatToStr() accetti solo un valore float e non una espressione. Poi ci potrebbero essere dei limiti nella versione "free" che magari non usa la libreria float.

Se volessi usare un programma senza alcuna limitazione forse il migliore lo trovi con Jalv2
http://www.casadeyork.com/jalv2/
Oppure con sdcc
http://sdcc.sourceforge.net
Ma non è basic e magari non è ricco di librerie.



Anno nuovo, forum nuovo.
Mi sa che lascio.
gironico




una ogni 100 livelli


postato il:
03.03.2015, alle ore 08:35
rcc.roberto:
sparide74:
mi avete abbandonato!!!!


a parte il fatto che la gente non è disponibile 24 ore su 24, ma se ti comporti in questo modo:
Jasson mi hai bloccato a meta strada!!!!
penso che stiamo facendo un po di confusione!
quindi caro Sig.Gironico se parli in questo modo evidentemente l'hai tu il prog.Crakkato..


non è che puoi pretendere più di tanto.....


Roberto mi hai Tolto le parole di bocca....la mia intenzione non era assolutamente giudicarti o condannarti, cercavo solamente di esserti utile....Crakkare un prog per fare una prova per vedere come ci si trova e magari dopo lo acquista non credo faccia del male a nessuno, se specialmente è ad uso hobbistico....
Passo e chiudo



La vita è troppo breve per bere vini mediocri
Jasson





postato il:
03.03.2015, alle ore 09:40
sparide74:
mi da errore:

str5 = FloatToStr(UpDown/100)


Hai scritto una parte di codice, dove fai uso di variabili, stringhe e lcd, quindi pensavo tu sapessi convertire le variabili numeriche in stringhe e stamparle su lcd.

L'istruzione FloatToStr() converte una variabile Float in una stringa, quindi all'interno della parantesi devi mettere la variabile float virgola stringa

Non puoi infilarci dentro una operazione matematica, è normale che ti dia errore.
Prima devi fare l'operazione matematica:

risultato=UpDown/100

poi una volta eseguita l'operazione matematica, converti il risultato numerico in una stringa

FloatToStr(risultato, str)

Ora all'interno della stringa str hai il risultato della divisone.

Comunque io utilizzerei anzi variabili intere int, hai meno rogne.

Poi se ti serve con l'istruzione mod come ti ho spiegato nei post addietro, ottiene pure il resto di una eventuale divisone.






sparide74





postato il:
03.03.2015, alle ore 11:07
comunque jasson sono ancora con il tuo codice ...

io lo scritto cosi, come riferimento a quello che mi hai detto :

longwordtostr(mm,str_mm)

lcd_out(1,3, testo)

longwordtostr(cent,str_cent)

lcd_out(2,7,testo)



Quando visualizzo i mm lo scrive alle caselle giuste, invece se faccio visualizzare i cent mi visualizza i centesimi
solo che prima dei 2 numeri dei cent mi inserisce 4 caselle occupate, e mi si sovrappone sui mm.

esempio:234,67

x:234,67 normale visualizzazione che dovrebbe comparire

x: 67 visualizzazione che mi compare


sparide74





postato il:
03.03.2015, alle ore 11:09
x: 67 visualizzazione che mi compare
sparide74





postato il:
03.03.2015, alle ore 11:10
caspita non mette gli spazi nel forum comunque prima di 67 ci sono 4 spazi
picmicro675




una ogni 10 livelli


postato il:
03.03.2015, alle ore 13:10
Io ho compilato con la concatenazione di stringhe
Dim milli as word
Dim centimilli as byte

milli = UpDown / 100
centimilli = UpDown mod 100

WordToStr(milli,txt1)
ByteToStr(centimilli,txt2)
Strcpy(txt1,".")
txt5 = txt1
Strcpy(txt5,txt2)
Lcd_Out(1,7,Txt5)

Ma non riesco a far funzionare il simulatore.
Continuo con gli esperimenti



Anno nuovo, forum nuovo.
Mi sa che lascio.
DryDen





postato il:
03.03.2015, alle ore 13:11
quello che tu rilevi è normale.

Quando tu fai un wordtostr lui automaticamente riserva 6 spazi (word = 65535 + lo 0)

Se usi la FLOAT sfori sui 2kb di codice e dovresti comprare il compilatore.


l'unica è fare come dice jasson!
picmicro675




una ogni 10 livelli


postato il:
03.03.2015, alle ore 13:17
sparide74:
longwordtostr(mm,str_mm)

lcd_out(1,3, testo)

longwordtostr(cent,str_cent)

lcd_out(2,7,testo)


Credo che in quel caso dovresti fare

Dim Pos as byte
longwordtostr(mm,str_mm)
lcd_out(1,3, str_mm)
longwordtostr(cent,str_cent)
Pos = StrLen(str_mm) + 3
lcd_out(1,Pos,".")
Inc Pos
lcd_out(1,Pos,str_cent)




Anno nuovo, forum nuovo.
Mi sa che lascio.
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale