lunes, 29 de noviembre de 2021

Conversor de formatos de vídeo Gambas (VB-linux) FFMPEG

  Página principal


Conversor de formatos de vídeo
Gambas (VB-linux)
FFMPEG


Este programa es solo una interface del programa ffmpeg .
Sirve para convertir formatos de vídeo.
No se pretende mucho, pero funciona bastante bien.

 

PROGRAMA

Saludos.
Juan Galaz



Calculadora con Gambas (VB-linux) CASIO A1

  Página principal


Calculadora
con
Gambas (VB-linux)
CASIO A1


Continuo con la serie de calculadoras realizadas en GAMBAS (VB-Linux).
Como yo hago colección de calculadoras he comprado la calculadora CASIO A1.
Es tan sencilla que no pude evitar la tentación de programarla.
Fue bastante fácil y se realizo en poco tiempo, este es el resultado.


PROGRAMA

Saludos.
Juan Galaz



miércoles, 17 de noviembre de 2021

Instalar Debian11 y no morir en el intento. 3 videos

Instalar Debian11
y
no morir en el intento


 
HP:  Compaq pro 6305        Disco SSD
    https://youtu.be/5JhZJNQ9Dno
 
 
TOSHIBA:  Satellite pro L450   Disco SSD
    https://youtu.be/X6X0b0v7Kzg

 
P4: Intel Core 2 Quad Q9300    Disco SSD
  https://youtu.be/tV9Gt0f9lT0
 
DEBIAN11
========


apt install autoconf automake build-essential dkms fastjar g++ gawk gcc gcc-multilib gettext gettext-base intltool intltool-debian jarwrapper  linux-headers-$(uname -r) mawk mesa-common-dev minizip nasm perl perl-base pkg-config   subversion wx-common wx3.0-headers x11proto-record-dev zlib1g zlib1g-dev

apt install mc xfe kaffeine w-scan

apt install firmware-misc-nonfree firmware-linux-free 

INTEL :  apt install intel-microcode
AMD  :   apt install firmware-amd-graphics  amd64-microcode 

Instalar impresoras.
    apt install  printer-driver-all  hplip  hplip-data  printer-driver-postscript-hp

/sbin/adduser  seta  vboxusers






 


 

miércoles, 10 de noviembre de 2021

TECLADO ANALÓGICO PARA APLICACIONES CON MICROCONTROLADOR

  Página principal


DISEÑO DE UN TECLADO ANALÓGICO PARA APLICACIONES CON MICROCONTROLADOR

Ing. Alfredo Segura
México, 2011



DISEÑO DE UN TECLADO ANALÓGICO PARA APLICACIONES CON MICROCONTROLADOR

En algunos de nuestros diseños electrónicos con microcontroladores hemos de incluir un teclado para introducir datos o seleccionar opciones. Sin embargo pensar en un teclado matricial nos lleva a tener que elegir un microcontrolador (uC) con un mayor número de terminales para poder realizarlo. Son comunes los teclados matriciales de 4X4 (4 renglones por 4 columnas), para lo cual se requieren 8 pines de I/O en el uC.

Si el diseño requiere un teclado de las dimensiones adecuadas, podemos recurrir a un teclado analógico, el cual se puede lograr usando resistencias en serie y en cada unión de dos resistencias, se coloca el  botón que aterriza ese nodo. El arreglo se muestra en la siguiente figura:



Es conveniente utilizar una fuente de tensión muy estable, como por ejemplo el CI TL-431 o cualquier otro que se encuentre en el mercado. La razón de esto es porque el voltaje Vo a la salida del teclado analógico deberá ser siempre del mismo valor para una tecla específica y así para todas las teclas incorporadas al teclado.

La salida del teclado analógico deberá ser conectada a una entrada analógica en el uC debidamente programado para que haga la lectura o sondeo constante de dicha entrada. Es claro, según el diagrama anterior que, sin oprimir ninguna tecla, el voltaje Vo será el de la fuente estable y por lo tanto el programa en el uC, no hará acción alguna relacionada al teclado, sino que seguirá con sus actividades programadas.

Tan pronto se presiona una de las teclas, el uC recibirá por la entrada analógica la tensión correspondiente que resulta de la división entre Rv y la suma de R1 a Rn:


Vo = Vi(R1 + … + Rn) / [Rv + (R1 + … + Rn)]


Por supuesto que el diseñador podrá elegir libremente el nombre de cada tecla, de acuerdo con las actividades que el uC debe realizar al presionarse una de ellas. En el diagrama se han etiquetado como las típicas de un teclado con 16 posiciones, sin el punto(.):

0, #, D, C, 3, 2, 1, 4, 5, 6, B, A, 7, 8, 9


Así que el módulo ADC (Analog To Digital Converter) o Convertidor Analógico a Digital del microcontrolador podrá entregar un valor digital diferente por cada una de las teclas que se vayan presionando.

Para tener un span mas alto en los valores de cada tecla, Rv podrá elegirse del valor mas adecuado para que Vo sea el valor mas bajo apreciable cuando se presiona la tecla “0”.  Así, para cuando se presione la tecla “7”, la suma de todas las resistencias R1 + … + R15, involucradas en la ecuación de Vo, proporcionen el valor mas alto de tensión.

Hay que aclarar que este modelo de teclado analógico no se puede usar para oprimir varias teclas simultáneamente, porque al oprimir solamente una de ellas, se anulan las mas alejadas a la salida Vo. Sin embargo, se puede crear otro ramal de teclas, que serán exclusivas para usarse en forma simultánea con las primeras, para expandir las funciones. De todos modos, otro ramal de teclas en una misma PCB, no es muy difícil de obtener y el uC destinaría una entrada adicional analógica para recibir esta nueva señal.

A continuación se muestra un ejemplo de programa en Cpp para un microcontrolador PIC 12F675 que tiene únicamente 8 terminales:

/*
Programa con el 12f675 y un HT12E que sirve para leer un teclado analógico
usando una cadena de resistencias de 1k formando un divisor de tensión con otra
de 10K a Una fuente de voltaje regulado (Vi). Dependiendo de la tecla presionada
y del voltaje convertido se traduce en el numero BCD de la tecla que
corresponda.

Alfredo Segura enero de 2011, México.
*/

#include <12f675.h>
#define adc = 10
#fuses INTRC_IO, NOMCLR, NOWDT, PUT, NOBROWNOUT, NOCPD, NOPROTECT
#use delay(clock = 4000000)

#use fast_io(a)

#byte Port_A = 0x05

#bit ra0 = 0x05.0  // Entrada Analógica
#bit ra1 = 0x05.1  // D0
#bit ra2 = 0x05.2  // D1
#bit ra3 = 0x05.3
#bit ra4 = 0x05.4  // D2
#bit ra5 = 0x05.5  // D3

#rom 0x03FF = {0x3438 }  // solo poner si se usa el programador USP 3.0

int i = 0, cod1, cod2, dato, comd;

void enviar(comd) {    // comd viene como 0b000001, 0b0000111
  cod1 = comd << 1;    // Recorre una vez para acomodar D0 en D1 y D1 en D2
  cod2 = cod1 << 1;    // Recorre otra vez para acomodar D2 en D4 y D3 en D5
  cod1 = cod1 & 0x0F;  // Protege nibble bajo
  cod2 = cod2 & 0xF0;  // Protege nibble alto
  comd = cod1 | cod2;  // Reúne ambas partes
  Port_A = comd;       // saca dato por el puerto
  delay_us(200);       // lo exhibe un momento
}

void ini(void) {
  setup_adc(adc_clock_internal);
  setup_adc_ports(san0);
  setup_comparator(nc_nc_nc_nc);
  set_tris_A(0b00001001);
  Port_A = 0x00;
  i = 0;
}

void main(void) {
  ini();
  delay_ms(300);  // Retardo de 300 ms al encender el pic

  while (true) {
    dato = read_adc();
    delay_ms(100);

    if ((dato >= 111) && (dato <= 120)) {  // no hay dato
    }

    if ((dato >= 0) && (dato <= 5)) {  // tecla "1"
      comd = 0x01;                     // Tecla "1"
      enviar(comd);                    // envía dato
    }
    if ((dato >= 18) && (dato <= 30)) {  // tecla "2"
      comd = 0x02;                       // Tecla "2"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 36) && (dato <= 49)) {  // tecla "3"
      comd = 0x03;                       // Tecla "3"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 55) && (dato <= 65)) {  // tecla "4"
      comd = 0x04;                       // Tecla "4"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 68) && (dato <= 78)) {  // tecla "5"
      comd = 0x05;                       // Tecla "5"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 80) && (dato <= 89)) {  // tecla "6"
      comd = 0x06;                       // Tecla "6"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 91) && (dato <= 99)) {  // tecla "7"
      comd = 0x07;                       // Tecla "7"
      enviar(comd);                      // envía dato
    }
    if ((dato >= 101) && (dato <= 108)) {  // tecla "8"
      comd = 0x08;                         // Tecla "8"
      enviar(comd);                        // envía dato
    }
  }
}


Se ha elegido un microcontrolador de 8 terminales, con la finalidad de dejar claro que un teclado analógico es muy recomendable para el ahorro de terminales, pudiendo ser destinadas el resto a otras entradas o salidas.

En la siguiente imagen se muestra la tarjeta PCB únicamente del teclado analógico, en el cual se insertarán y soldarán las resistencias de 1 K y los botones, colocando un conector de 3 pines como interface con la tarjeta donde se instale el microcontrolador PIC12F675:




Ing. Alfredo Segura
México, 2011

TransistorTester para Arduino Nano y OLED SSD1306Z

  Página principal



Transistor Tester para Arduino Nano
OLED SSD1306Z
Traducido por SETA43


Navegando por internet, encontré un analizador de componentes llamado  TransistorTester, el autor era  Karl-Heinz Kübbeler .
Sobre este montaje, que en principio solo se había creado para analizar transistores, existían múltiples versiones.
La versión que he utilizado es 1.08.004, que en este caso no está creada por el autor,  está realizada para arduino.
Me he permitido el atrevimiento de traducir esta versión al español, solo son unas cuantas palabras.
También no se representaba bien los componentes en el OLED, lo he intentado arreglar como he podido.
He de comentar que me ha sorprendido lo sencillo del montaje, y lo útil que es.
Detecta perfectamente si es un transistor NPN o PNP, JFETs, Diodos, Condensadores, Resistencias. Y lo mas curioso es la forma automática de detectar los pin.

La versión original de TransistorTester está realizada sobre un ATMEGA328 y con un interruptor rotativo, no utiliza el arduino, además de existir múltiples versiones comerciales.






Condensador de 3.9nF  y   1uF



Ressistencias de 330 ,1K, 10K




Transistor BC109 y BD681



Detalle del circuito




PROGRAMA

Este es un montaje muy práctico, se lo recomiendo a todos los electrónicos, será muy útil en cualquier momento para chequear componentes.
Puede funcionar con la alimentación del USB del arduino, pero funciona mejor alimentando al pin Vin del arduino, que soporta hasta 12V.

Para una mejor funcionamiento deberíamos quitar la resistencia que está en el pin D13, es la que alimenta el LED de prueba.


Saludos.
Juan Galaz



Bibliografía:

https://github.com/kr4fty/Ardutester
https://www.sysadminsdecuba.com/2020/08/ardutester-tester-de-componentes-con-arduino/
https://create.arduino.cc/projecthub/mircemk/diy-super-simple-electronic-component-tester-234752
https://create.arduino.cc/projecthub/plouc68000/ardutester-v1-13-the-arduino-uno-transistor-tester-dbafb4