Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Buenas amigos del foro, tengo una pregunta, estoy realizando un proyecto de una maquina para embobinar, la idea es que en un display se muestren los mensajes de dichos registros de cada evento, con un teclado matricial se ingresa el numero de vueltas y un sensor de efecto hall se encargara de percibir cuando de una vuelta el motor, mi duda es la siguiente, como hago para guardar 3 digitos en una sola variable, ejemplo, yo ingreso que la maquina va a dar 200 vueltas, cuando digito cada valor en el teclado se guardan cada uno en una misma variable, esa parte no la puedo entender.
; DECLARACION DE VARIABLES
a var byte
b var byte
DEG_1 var Word
DEG_2 var Word
DEG_3 var Word
DEG_4 var Word
DIGITO_1 var Word
DIGITO_2 var Word
DIGITO_3 var Word
DIGITO_4 var Word
Unidad var Word ;unidad
Decena var Word ;decena
Centena var Word ;centena
Umil var Word
dig_VUELTA var word
cuarteto var byte
AuxW var word ;sayi var word
AuxB_a var byte ;tus var byte
AuxB_b var byte ;tus_b var byte
Aux1 var byte
aux2 var byte
aux3 var byte
aux4 var byte
inicio:
;****
;****
;****
;****
;****
programar:
;****BOTONES UNIDAD DE MIL********
IF Umil_MAS = 0 THEN
WHILE Umil_MAS = 0 : WEND
Umil=Umil + 1
if Umil > 9 then Umil=9
if Umil < 0 then Umil=0
aux1=umil
ENDIF
IF Umil_Menos = 0 THEN
WHILE Umil_Menos = 0 : WEND
Umil=Umil - 1
if Umil > 9 then Umil=9
if Umil < 0 then Umil=0
aux1=umil
ENDIF
;****BOTONES CENTENA********
;similar a U. de mil
aux2=centena
;****BOTONES DECENA********
;similar a U. de mil
aux3=decena
;****BOTONES UNIDAD********
;similar a U. de mil
aux4 = unidad
ENDIF
pause 10
digito_1 = aux1
digito_2 = aux2
digito_3 = aux3
digito_4 = aux4
dig_vuelta=digito_1+digito_2+digito_3+digito_4
auxW=(digito_1*1000)+(digito_2*100)+(digito_3*10)+(digito_4*1)
;****
;****
;****
arranque:
If sensor=0 Then
dig_vuelta=dig_vuelta-1
auxw = auxw - 1
endif
If auxw =0 Then GoTo FIN
pause 150
goto inicio
Buenas amigos del foro, tengo una pregunta, estoy realizando un proyecto de una maquina para embobinar, la idea es que en un display se muestren los mensajes de dichos registros de cada evento, con un teclado matricial se ingresa el numero de vueltas y un sensor de efecto hall se encargara de percibir cuando de una vuelta el motor, mi duda es la siguiente, como hago para guardar 3 digitos en una sola variable, ejemplo, yo ingreso que la maquina va a dar 200 vueltas, cuando digito cada valor en el teclado se guardan cada uno en una misma variable, esa parte no la puedo entender.
hola soy nuevo en este foro aun no se como funciona o como hacer un seguimiento de los participantes
hola como estas queria saber si pudiste terminar el bobinador??
Hace un tiempo hice algo, ahi te comparto lo que yo arme... respecto a como lo hice, te cito algunos fragmentos
Código:; DECLARACION DE VARIABLES a var byte b var byte DEG_1 var Word DEG_2 var Word DEG_3 var Word DEG_4 var Word DIGITO_1 var Word DIGITO_2 var Word DIGITO_3 var Word DIGITO_4 var Word Unidad var Word ;unidad Decena var Word ;decena Centena var Word ;centena Umil var Word dig_VUELTA var word cuarteto var byte AuxW var word ;sayi var word AuxB_a var byte ;tus var byte AuxB_b var byte ;tus_b var byte Aux1 var byte aux2 var byte aux3 var byte aux4 var byte inicio: ;**** ;**** ;**** ;**** ;**** programar: ;****BOTONES UNIDAD DE MIL******** IF Umil_MAS = 0 THEN WHILE Umil_MAS = 0 : WEND Umil=Umil + 1 if Umil > 9 then Umil=9 if Umil < 0 then Umil=0 aux1=umil ENDIF IF Umil_Menos = 0 THEN WHILE Umil_Menos = 0 : WEND Umil=Umil - 1 if Umil > 9 then Umil=9 if Umil < 0 then Umil=0 aux1=umil ENDIF ;****BOTONES CENTENA******** ;similar a U. de mil aux2=centena ;****BOTONES DECENA******** ;similar a U. de mil aux3=decena ;****BOTONES UNIDAD******** ;similar a U. de mil aux4 = unidad ENDIF pause 10 digito_1 = aux1 digito_2 = aux2 digito_3 = aux3 digito_4 = aux4 dig_vuelta=digito_1+digito_2+digito_3+digito_4 auxW=(digito_1*1000)+(digito_2*100)+(digito_3*10)+(digito_4*1) ;**** ;**** ;**** arranque: If sensor=0 Then dig_vuelta=dig_vuelta-1 auxw = auxw - 1 endif If auxw =0 Then GoTo FIN pause 150 goto inicio
espero que te sea de ayuda en algo... saludos a todos y todas
ATX dijo:De hecho si pude, pero lo tengo en pantalla LCD 16X2, pude resolver el problema de la comparacion de los digitos ingresados del teclado con los del numero de vueltas dados por el motor
Muchas gracias con tus ideas me dio una solución, pensé en esto, usar 3 variables, ejemplo SET1, SET2, SET3 cada una corresponde cuando presiono una tecla, como es de 3 digitos por el momento, cuando presiono un numero se guardar el valor en SET1, cuando presiono otro numero avanza a guardar en SET2 y luego avanza y guarda en SET3, bien ahora salta en una subrutina al bucle donde empieza el motor a girar y a la vez a contar las vueltas que va dando el motor.
Ahora la solucion, cree otras 3 variables, VUELTAS1, VUELTAS2, VUELTAS3 empieza sumando de 0 a 9 VUELTAS3 y cuando es mayor de 9 suma por 1 a VUELTAS2 ahora tendriamos algo asi 010 serian 10 vueltas que a dado el motor, luego 3 condicionales IF para ver si SET1 es igual a VUELTAS1, si SET2 es igual a VUELTAS2 y si SET3 es igual a VUELTAS3, todo dio perfecto asi comparando variable por individual si pudo comparar y decifrar el numero de vueltas para detener el programa.
Comprendo lo que dices, pero la idea no estuvo mal, funciona igual y creo que es menos programación.No te hacen falta tres variables para contar, no tiene sentido, porque las vueltas, o las contás en una sola variable hasta llegar al total (suma de los dígitos) o las haces en la variable de un bucle for hasta llegar a 0
Sí, ya lo he probado y no da ningún error, es el proteus.Buenas
¿Ya lo probaste en físico?, tu código tiene problemas de estructura, en la simulación de proteus esta desbordando la pila por la instrucción de retorno(stack overflow return instruccion), eso se debe a que una rutina esta anidada dentro de otra(gosub) y no tiene la instrucción de retorno(return)lo que hace que el micro no sepa en que parte del código retornar desbordando así la pila.