Autor Tema: teclado_pic16f887a  (Leído 1829 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
teclado_pic16f887a
« en: 19 de Septiembre de 2021, 17:21:48 »
Buenas noches a todos, quiero almacenar los datos ingresados por un teclado numérico de la siguiente manera: que se pueda ingresar un dato y se mantenga en ese dato por un tiempo ingresado también por teclado, luego presionando la tecla (*) se ingrese otro dato y se mantenga en ese dato por un tiempo ingresado por teclado, así sucesivamente hasta que se puedan ingresar 5 procesos similares, al final después de ingresar todos los datos presionando la tecla (#) ejecute todos los procesos en el orden que se ingresaron. hasta el momento solo he podido ingresar un dato y que lo muestre en la LCD. se podria solucionar con un switch case?


Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #1 en: 19 de Septiembre de 2021, 17:22:47 »
gracias de antemano por las respuestas y soluciones que me puedan dar  8)

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #2 en: 19 de Septiembre de 2021, 22:04:09 »
Deberías compartir tu código para entender que estás intentando hacer para cualquier sugerencia o comentario
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #3 en: 19 de Septiembre de 2021, 22:35:19 »
he adjuntado el codigo  :)

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #4 en: 19 de Septiembre de 2021, 22:40:06 »
he adjuntado el codigo  :)

Tienes razón, no lo vi, generalmente publican en la misma pregunta la parte que tienen problemas.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #5 en: 19 de Septiembre de 2021, 22:42:37 »
mis disculpas por el desorden, es la primera vez que uso el foro.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #6 en: 19 de Septiembre de 2021, 22:55:22 »
Hola.

Más o menos entiendo lo que haces.

Tu ingresas un número por el teclado, digamos 1234.

En este ingreso cada número es un byte en un arreglo {'1','2','3','4',0}.

Este arreglo lo conviertes a un número de tipo long (long a pesar que solo necesitas un byte), o sea es ahora 1234 (mil doscientos treinta y cuatro)

Si ese número es mayor a 256, lo dejas en 256, o sea 1234 es ahora 256. (Creo que debería ser de 0 a 255, no de 0 a 256);

Este valor lo pones en un PWM.

Me parece que el PWM es de 8 bits, o sea que varia el ancho de pulso de 0 a 255, si le escribes 256, es igual a ingresarle 1.

¿Si estoy correcto en mi análisis, qué está mal o que no te funciona?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #7 en: 19 de Septiembre de 2021, 22:58:17 »
correcto, lo que quiero conseguir es ingresar el valor del pwm y el tiempo en que este ese valor para construir una rampa

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #8 en: 19 de Septiembre de 2021, 23:03:19 »
correcto, lo que quiero conseguir es ingresar el valor del pwm y el tiempo en que este ese valor para construir una rampa

No t'entiendo bien con lo de rampa. Tienes que explicar dándote cuenta que no sabemos casi nada de lo que quieres hacer. 

O sea que una rampa te refieres a que ingresas un valor del PWM ,digamos 200. Y luego ingresas un valor que es digamos segundos, por ejemplo 150, y tu vas incrementando desde 0 a 200 el pwm, en 150 segundos.

¿es lo que quieres hacer?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #9 en: 19 de Septiembre de 2021, 23:06:04 »
exacto es lo que quiero: se ingresa cualquier valor de pwm y un tiempo en que ese valor se mantenga, luego se ingresa otro valor de pwm y el tiempo en que quiero que se mantenga, para luego ser ejecutado todo presionando alguna tecla, como el enunciado que deje con el inicio del tema.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #10 en: 19 de Septiembre de 2021, 23:13:09 »
Bueno o malo ya tienes un proceso para ingresar el ancho del PWM,

En lugar de aplicar ese 'ancho de pulso', lo mantienes en una variable.

Luego haces un proceso similar para ingresar el tiempo.

De ahí el valor para incrementar seria valorIncrementar = ancho pulso / tiempo, en el ejemplo que mencioné antes sería 200/150 = 1.333.

Luego haces un lazo algo así:

Código: C
  1. j = 0;
  2.     for (i = 0; i < tiempo; i++) //tiempo = 150
  3.    {
  4.         setPWM (j);
  5.         j += valorIncrementar;
  6.         reatrdo(1000); // suponiendo que el ingreso de tiempo es segundos
  7.    }

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #11 en: 26 de Septiembre de 2021, 02:58:07 »
gracias amigo, me fue muy util tu ayuda, ahora me falta otra parte: estoy buscando que se almacene el valor de pwm y el tiempo en una variable, luego ingresar otro valor de pwm y tiempo en otra, para después con una tecla del teclado ejecutar toda la secuancia y tenga varias velocidades, ya que lo que quiero es controlar un motor.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #12 en: 26 de Septiembre de 2021, 13:25:46 »
gracias amigo, me fue muy util tu ayuda, ahora me falta otra parte: estoy buscando que se almacene el valor de pwm y el tiempo en una variable, luego ingresar otro valor de pwm y tiempo en otra, para después con una tecla del teclado ejecutar toda la secuancia y tenga varias velocidades, ya que lo que quiero es controlar un motor.

O sea tu dices, por ejemplo:

Ingreso ancho pwm = 50 tiempo 300, luego pwm = 200 tiempo 1000, y finalmente pwm = 170 tiempo 2300 y presionas una tecla y pasa lo siguiente:

El pwm incrementa el ancho de pulso de 0 a 50 en intervalos de 200 s, luego incrementa de 0 a 200 en pasos de 1000 s y finalmente incrementa de 0 < 170 en pasos de 2300 s.

¿Es así?
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado gaitan

  • PIC10
  • *
  • Mensajes: 18
Re:teclado_pic16f887a
« Respuesta #13 en: 26 de Septiembre de 2021, 13:33:39 »
resumiendo quiero controlar un motor, por ejemplo ingreso 50 en pwm y 100 en tiempo luego presiono *, luego ingreso 100 en pwm y 1000 en timpo asi sucesivamente, luego al final de ingresar los datos que quiero presiono # y ejecuta todo lo que ingrese de manera secuancial. estaba pensando en switch case, pero no puedo separar los datos.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:teclado_pic16f887a
« Respuesta #14 en: 26 de Septiembre de 2021, 13:52:50 »
resumiendo quiero controlar un motor, por ejemplo ingreso 50 en pwm y 100 en tiempo luego presiono *, luego ingreso 100 en pwm y 1000 en timpo asi sucesivamente, luego al final de ingresar los datos que quiero presiono # y ejecuta todo lo que ingrese de manera secuancial. estaba pensando en switch case, pero no puedo separar los datos.

Crea una variable estructura así:

Código: C
  1. typedef struct
  2. {
  3.    unsigned char ancho;
  4.    unsigned int tiempo
  5. } ESTRUCTURA_ANCHO_TIEMPO;

Luego declaras un arreglo de la estructura, digamos hasta 100 anchos/tiempos que puedas guardar:

Código: C
  1. ESTRUCTURA_ANCHO_TIEMPO anchoTiempo[100];

Para almacenar los valores sería algo así:

Código: C
  1. punteroAnchoTiempo = 0; // lo inicializas en alguna parte.
  2.  
  3. // cada vez que ingresas un nuevo valor de ancho y tiempo sería así:
  4.  
  5. anchoTiempo[punteroAnchoTiempo].ancho = ancho de pulso que se ingresó;
  6. anchoTiempo[punteroAnchoTiempo].tiempo = tiempo que se ingresó;
  7. punteroAnchoTiempo++; //incremento puntero para el próximo ancho-tiempo

Y para ejecutarlo de manera secuencial  Sería lgo así:

Código: C
  1. for (k = 0; k < punteroAnchoTiempo; k++)
  2. {
  3.      j = 0;
  4.     for (i = 0; i < anchoTiempo[k].tiempo; i++) /
  5.    {
  6.         setPWM(anchoTiempo[k].ancho);
  7.         j += valorIncrementar;
  8.         retardo(anchoTiempo[k].tiempo);
  9.    }
  10. }


« Última modificación: 26 de Septiembre de 2021, 13:56:24 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32


 

anything