Autor Tema: mTouch de Microchip: en CCS y en español  (Leído 17614 veces)

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

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: mTouch de Microchip: en CCS y en español
« Respuesta #30 en: 10 de Febrero de 2012, 02:41:07 »
Wooooow

Desconocía esos micros. Se me están ocurriendo muchas aplicaciones jejejeje.

Gracias Nocturno por la info.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: mTouch de Microchip: en CCS y en español
« Respuesta #31 en: 10 de Febrero de 2012, 02:55:12 »
alguien ha probado a programas estos Pics con los controles que trae el CCS¿? O hay que hacer alguna cosilla mas?


Sí, yo lo he probado, y la verdad es que funciona genial, con una simplicidad alucinante.

Sólo tienes que definir los botones que usarás al principio:

#use touchpad(scantime=32ms,threshold=6,PIN_B0='0',PIN_B1='1',PIN_B2='2')

Y luego en tu programa, preguntas si hay algo pulsado con:
      if(touchpad_hit())

y si hubiera algo pulsado, averiguas cuál es con:
         c=touchpad_getc();


Funciona de categoría.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: mTouch de Microchip: en CCS y en español
« Respuesta #32 en: 10 de Febrero de 2012, 02:59:40 »
Y son muy baratos esos micros  :grin:

Se pueden crear paneles touch con acrilico.

Tengo pensado comprar una máquina CNC, con eso quedarían acabados buenísimos.

^^ no podré dormir hoy pensando que hacer con esos micros   :-/

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7867
Re: mTouch de Microchip: en CCS y en español
« Respuesta #33 en: 10 de Febrero de 2012, 08:13:49 »
Tiene un solo problema, no puede leer una combinación de botones (touch) pulsados juntos.
Por ejemplo si quiero hacer Alt + 2 , las funciones de CCS no lo contemplan, y entiendo que en C18, con las funciones de Mchip, si se puede...
Por lo demás, lo que dice Nocturno, va de lujo...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: mTouch de Microchip: en CCS y en español
« Respuesta #34 en: 10 de Febrero de 2012, 09:14:50 »
Efectivamente, las funciones de CCS no estan diseñadas para multipulsación. Pero sí se puede hacer en CCS sin usarlas.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: mTouch de Microchip: en CCS y en español
« Respuesta #35 en: 10 de Febrero de 2012, 09:23:55 »
Manolo, si delante de los pulsadores, colocas un acrilico por ejemplo, que espesor máximo tiene que ser para que todo siga funcionando bien?, Has hecho esa prueba?

Saludos.
Alejandro.

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: mTouch de Microchip: en CCS y en español
« Respuesta #36 en: 10 de Febrero de 2012, 10:07:13 »
Muchas gracias pir las aclaraciones! Me habeis alegrado el dia! Ahora solo me queda esperar a que me lleguen los samples que pedir para probarlos y luego dar un paso adelante en el proyecto.

 
Manolo, si delante de los pulsadores, colocas un acrilico por ejemplo, que espesor máximo tiene que ser para que todo siga funcionando bien?, Has hecho esa prueba?

Tambien estoy interesado en esa pregunta.

Un saludo!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: mTouch de Microchip: en CCS y en español
« Respuesta #37 en: 10 de Febrero de 2012, 13:33:02 »
Aún estoy probando y desarrollando el firmware. Cuando termine de hacer todas las pruebas os diré cuál es el máximo espesor que he conseguido y os pondré el correspondiente vídeo.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: mTouch de Microchip: en CCS y en español
« Respuesta #38 en: 10 de Febrero de 2012, 13:44:13 »
Aún estoy probando y desarrollando el firmware. Cuando termine de hacer todas las pruebas os diré cuál es el máximo espesor que he conseguido y os pondré el correspondiente vídeo.

Perfecto! Muchas gracias de antemano!

Un saludo!

Desconectado ALE1973

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 229
Re: mTouch de Microchip: en CCS y en español
« Respuesta #39 en: 10 de Febrero de 2012, 14:57:25 »
Gracias Manolo.

Saludos.

Desconectado danning1

  • PIC10
  • *
  • Mensajes: 1
Re: mTouch de Microchip: en CCS y en español
« Respuesta #40 en: 28 de Junio de 2012, 05:17:42 »
disculpen, intente manipular el programa para poder adecuarlo a 11 sensores, pero no consegui nada mas que errores :x, me podrian indicar como poder activar y que sean detectados, los sensores 12, 13  y 14? saludos :)

Desconectado jel_75

  • PIC10
  • *
  • Mensajes: 10
Re: mTouch de Microchip: en CCS y en español
« Respuesta #41 en: 24 de Enero de 2013, 07:40:57 »
Antes que nada, muchas gracias a Nocturno por este impresionante trabajo que realizo.

Ahora el pedido de ayuda
Necesito encender un led mientras se apoya un dedo sobre el pad tactil de un pic12f1840, intente con las funciones mtouch de ccs y no sirven por que solamente detentan el cambio de No-Pulsado a Pulsado y si sigues teniendo el dedo apoyado o no le da lo mismo.

Adjunto el codigo fuente modificado por si Nocturno o alguien mas me uede dar una mano.

Archivo: test.h
Código: [Seleccionar]
#FUSES INTRC_IO                 //Oscilador interno
//#FUSES VCAP_A0                  //VCAP en pin A0
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES NOPROTECT                //Código accesible
//#FUSES PLLEN                    //PLL activado
#FUSES NOMCLR                     //Master Clear activado
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOPUT                    //No Power Up Timer   
 
#use delay (clock=8000000)
 
// No dejamos que el compilador establezca los TRIS
#use fast_io(A)

 
// Registros del micro
#byte ANSELA = 0x18C
 
#byte PORTA = 0x00C
 
#byte TRISA = 0x08C
 
#byte T1CON = 0x018       
#byte T1GCON = 0x019
#byte CPSCON0 = 0x01E
#byte CPSCON1 = 0x01F
 
// Bits de configuración
#bit TMR1GIF = 0x011.7 // clear gate intpt flag
#bit TMR1GIE = 0x091.7 // enable gate intpt
#bit TMR1ON = 0x018.0
 
// Salidas de leds
#define LED            PIN_A1



Archivo: test.c
Código: [Seleccionar]
/*
   mTouch con 12F1840
   Modificacion de del codigo de Manuel Jiménez - Nocturno 2009
   www.micropic.es
*/
 
#include <12F1840.H>  //16LF727.h>
#include <test.h>
 
#define ANTIRREBOTES 1
#define SENSIBILIDAD 5
 
// unsigned char indice;
unsigned long lectura;             // lectura de cada sensor
unsigned long promedio;             // promedio leído de cada sensor
unsigned long umbral;                // umbral que debe superar para que se considere pulsado
unsigned long promedio_alto;          // variable temporal de promedio alto
unsigned long promedio_bajo;          // variable temporal de promedio bajo
 
 
// Estructura de información de los sensores
   unsigned char rebotes;
   int1 Pulsado;
   int1 SePulso;
   int1 Soltado;


 
/***********************************************************************************************
                     INICIALIZACIÓN
***********************************************************************************************/
void inicializacion() {

   promedio = 0;
   lectura = 0;
   
   
   /* Utilizaremos este sensor:
   CPS2:   RA2 
   */
   
   ANSELA = 0b00000100;        //SELECCIONAMOS COMO ENTRADA ANALOGICA RA2
   set_tris_a (0b00001100);  // SELECCIONAMOS COMO ENTRADAS RA2 Y RA3
   
     
   //setup_timer_2(T2_DIV_BY_16,0xB4,15);// Timer2 activo, prescaler 1:16   REVISAR  Y T1GCON
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit);
   setup_timer_1(T1_GATE_INVERTED);    // Timer1 activo, asociado al sensor capacitivo y sin prescaler
   T1GCON = 0b11100001;        // Timer1 gate activo, y asociado al Timer0 ya no al 2
   
   CPSCON0 = 0b11001100;             // Activamos los sensores capacitivos
   CPSCON1 = 0x02;                // y ahora usamos CPS2 que es RA2
                       
   
   TMR1GIF = 0;                   // Borramos el flag de interrupción
   TMR1GIE = 1;                   // Activamos la interrupción del Timer1 Gate
   enable_interrupts(GLOBAL);         // Activamos la gestión de interrupciones
   
 
   output_HIGH(LED);               // Apagamos los leds
 
}
/***********************************************************************************************
                     RUTINA DE INTERRUPCIÓN
***********************************************************************************************/
 
#INT_DEFAULT
void GestionDeInterrupciones() {
   if (TMR1GIF && TMR1GIE) {         // Interrupción del Timer1 Gate
      TMR1GIF = 0;                // Borramos el flag de interrupción
      TMR1ON = 0;                // Paramos el timer1
     
      // Cálculo de la media móvil de los últimos 4 ciclos
      lectura = promedio_alto = get_timer1() * 4;
      promedio_bajo = promedio / 4;
      umbral = promedio>>SENSIBILIDAD;
     
      // Si ha pulsado, veremos que el Timer se ha acortado, por debajo del promedio - umbral
      if (promedio_alto < promedio - umbral) {
         // Chequeo repetitivo para evitar rebotes
         if(rebotes < ANTIRREBOTES) rebotes++;
            if(!SePulso && rebotes == ANTIRREBOTES) {
               Pulsado = 1;
               SePulso = 1;
               }
         } else {
         // Si no ha pulsado y estamos en ciclo de rebotes
         if(rebotes > 0) rebotes--;
         if(SePulso && rebotes == 0) {
            SePulso = 0;
            Soltado = 1;
            }
         // Al promedio acumulado le restamos el valor antiguo y le metemos el nuevo
         promedio += promedio_alto/4 - promedio_bajo;
         }
      set_timer1(0);               // Iniciamos la cuenta en el Timer1
      TMR1ON = 1;                // Activamos nuevamente el Timer1
                 
   }
}
 
/***********************************************************************************************
                     PROGRAMA PRINCIPAL
***********************************************************************************************/
void main() {
   
   inicializacion();
   
   output_low(LED);   //enciendo y apago al principio para verificar el led
   delay_ms(3000);
   output_high(LED);
   
   while (true) {                   // bucle infinito
            delay_ms(1000);         // incluyo un led testigo de que no se ha colgado
            output_toggle(PIN_A4);  // solo para probar
            if(Pulsado) {      // se ha detectado pulsación
                  output_LOW(LED);
            Pulsado = 0;   // trabajo realizado, borramos el indicador         
         } else if(Soltado) {   // se ha quitado el dedo
                output_HIGH(LED);
                Soltado = 0;   // trabajo realizado, borramos el indicador
         }
      }
   }

desde ya muchas gracias.
Leer dos veces, preguntar una.