Autor Tema: un boton, 3 funciones, 1 solo pin  (Leído 2980 veces)

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

Desconectado facupic

  • PIC10
  • *
  • Mensajes: 4
un boton, 3 funciones, 1 solo pin
« en: 10 de Junio de 2010, 16:22:44 »
Hola amigos como estan? :lol: :o :) en un proyecto que estoy haciendo en un pic16f628a, tengo pocos pines para utilizar ya que son necesarias varios pines para otras cosas que luego preguntare. Al proyecto necesito incluir 3 boton con 2 o 3 diferentes funciones cada uno, el diagrama (trucho) seria asi:(para un boton):

inicia el pic
        |
  declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
        |
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
        |
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
        |
si se preciona antes de esos 5 segundos boton=2
        |
volvemos a comprobar


asi seria mas o menos el diagrama de flujo, ahora como podria implementarlo en basic? (utilizo el pic simulator ide)

la otra pregunta es:
Que me aconsejan usar para una pantalla para caracteres pequeños, un display 7 segmentos o un pequeño matriz de led de 3x3.


Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: un boton, 3 funciones, 1 solo pin
« Respuesta #1 en: 10 de Junio de 2010, 17:26:10 »
Pues para lo que quieres realizar, ya lo has explicado bien en tu diagrama de flujo, solamnete tienes que escribirlo en lenguaje basic.
Pero al principio con PSI deberias e añadirle las palabras de configuracion, elegir el tipo de micro y la velocidad del cristal.
A partir de ahi, si sabes lenguaje basic solo te queda codificarlo:
definir los puerto como entradas o salida
crear la s variables
testear los pines de entrada
poner las salidas y variables de acuerdo a las condiciones de decision.

Pero escribelo tu y si no te funciona ya se te ira ayudando.
En la ayuda te vienen los comando que se pueden emplearo en la web del PSI puedes verlo tambien.

Fermin
Todos los días se aprende algo nuevo.

Desconectado NORTEÑO

  • PIC10
  • *
  • Mensajes: 32
Re: un boton, 3 funciones, 1 solo pin
« Respuesta #2 en: 14 de Junio de 2010, 14:38:09 »

inicia el pic
        |
  declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
        |
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
        |
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
        |
si se preciona antes de esos 5 segundos boton=2
        |
volvemos a comprobar


asi seria mas o menos el diagrama de flujo, ahora como podria implementarlo en basic? (utilizo el pic simulator ide)





HOLA:
ANIMO ANIMO

QUE! como va ese codigo

Creo que mejor seria una pantallita LCD
OK

UN SALUDO.


Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Re: un boton, 3 funciones, 1 solo pin
« Respuesta #3 en: 16 de Junio de 2010, 01:23:58 »
Hola, no tengo el PSI pero bueno a ver... salvando las cosas que hay que declarar (que cortas y pegas de cualquier lado) y haciendo la ACLARACION de que hay varias formas de lograr lo unico complicado que veo (el chequeo del boton y el delay)... voy a exponer la mas burda porque es mas simple de entender en un principio, luego cuando ya domines el tema de interrpuciones o las funciones del propio MCU o del PSI, vas  a decir... uhhh que codigo feo, es una tonteria... pero bueno... por ahora solo como idea seria algo asi.


gosub configurarpic
principal:
      output portb.0
      if portb.0=1 then
               do
               until portb.0=0
               for t=0 to 200
                     if portb.0=1 then
                              gosub hacer_algo
                              do
                              until portb.0=0
                     endif
                     delayms 25
               next t
      else
      endif
goto principal


inicia el pic
        |
  declaramos que portb.0 es un pulsador, y boton es una variable del tipo byte
        |
comprobamos si rb0 es =1(si lo es pasamos al siguiente paso)
        |
si no se preciona esta tecla nuevamente durante 5 segundos boton=1
        |
si se preciona antes de esos 5 segundos boton=2
        |
volvemos a comprobar

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Re: un boton, 3 funciones, 1 solo pin
« Respuesta #4 en: 16 de Junio de 2010, 16:07:20 »
Intente hacer lo que pedias pero me salio una cosa rara  :z)
Lo que hace es pasar al siguiente comando, pero se toma una pausa de X tiempo (lo setee en 1 seg en lugar de 5), o sea, se ejecuta la funcion 1, despues del tiempo elejido recien se puede ejecutar el siguiente comando a traves del pulsador, y asi hasta empezar de nuevo, fijate si de esto que hice algo te sirve, al menos pasar de una salida a la otra, la entrada es RB0 y las salidas son RB1, RB2 y RB3
Lo hice bajo PSI, en un 16F876A y a 4Mhz

Código: [Seleccionar]
AllDigital
TRISB = %00000001
PORTB = %00000000

Dim boton As Byte
boton = 0

inicio:
If PORTB.0 = 1 Then Goto botonmas1
Goto inicio

botonmas1:
boton = boton + 1
If boton = 1 Then Goto comando1
If boton = 2 Then Goto comando2
If boton = 3 Then Goto comando3
If boton = 4 Then boton = 0
Goto inicio

comando1:
PORTB = %00000010
WaitMs 1000
Goto inicio

comando2:
PORTB = %00000100
WaitMs 1000
Goto inicio

comando3:
PORTB = %00001000
WaitMs 1000
Goto inicio

End  

Algo mas simplificado seria asi:

Código: [Seleccionar]
AllDigital
TRISB = %00000001  'PortB.0 como entrada, el resto como salidas
PORTB = %00000000
Dim boton As Byte
boton = 0

inicio:
If PORTB.0 = 1 Then Goto botonmas1

Goto inicio

botonmas1:
boton = boton + 1
If boton = 4 Then boton = 1
If boton = 1 Then PORTB = %00000010
If boton = 2 Then PORTB = %00000100
If boton = 3 Then PORTB = %00001000
WaitMs 1000
Goto inicio

End

Exitos!

« Última modificación: 16 de Junio de 2010, 16:19:24 por wolfman77 »
Volviendo al mundo de los PIC....


 

anything