?>/script>'; } ?> Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C. Widgets Magazine

Autor Tema: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.  (Leído 68838 veces)

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

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #80 en: 02-10-2017, 18:56 (Lunes) »
@peperfus
Permite que te sugiera algo de código que podrías utilizar en tu script.

El comando "date" permite utilizar formatos de salida que simplifican el código. Prueba:
Código: [Seleccionar]
date +"%d/%m/%y  %T"Fuente: http://www.elmundoenbits.com/2013/04/date-format-bash-linux.html#.WdJwYuZrzcu

Por defecto OpenWrt no implementa el comando "locale", pero se puede generar el día de la semana en español con poco código. Prueba:
Código: [Seleccionar]
set -- "lunes" "martes" "miércoles" "jueves" "viernes" "sábado" "domingo"
eval "echo \$$(date +%u)"
« Última modificación: 02-10-2017, 21:58 (Lunes) por raphik »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #81 en: 02-10-2017, 23:44 (Lunes) »
Gracias

Lo de las opciones del date me lo imaginaba; me sonaba de haberlas usado alguna vez, pero me ha dado más pereza mirar la sintaxis que hacer el tocho manualmente   ;D ;D

Las otras dos opciones .... no tengo NPI...

De momento lo dejaré así. Ya si eso más adelante lo cambiaré.

Lo he actualizado arreglando unos cuantos fallos y añadiendo información como el estado de conecxión a Internet y si está en marcha ntpd. De esa forma podemos saber que la hora que muestra es fiable.
Este de momento ya lo dejo así.
El próximo script voy a intentar que muestre resultados de fútbol. O esa es la idea  ;D
« Última modificación: 02-10-2017, 23:45 (Lunes) por peperfus »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #82 en: 03-10-2017, 14:00 (Martes) »
Por cierto, raphik...
Por casualidad no sabrás los comandos para inicializar la LCD 2004, ¿verdad?  ^-^

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #83 en: 03-10-2017, 21:44 (Martes) »
Que yo sepa todos los LCD basados en la controladora HITACHI HD44780 se inicializan de la misma manera, independientemente de su formato. Es decir, se inicializa lo mismo una 1604 que una 2004. El procedimiento de inicialización está descrito en las páginas 11 y 12 de este documento escrito por el profesor Carlos Canto Quintal. Otra cosa es cómo habría que posicionar el cursor para escribir en un posición determinada.

El mapa de posiciones para una pantalla 1602 es


Y el de una 2004

Si te fijas bien, una pantalla 2004 es en realidad una pantalla de dos filas y cuarenta columnas en la que las filas 0 y 1 se rompen en dos mitades que pasan a ser las filas 2 y 3.

Ejemplo de código para escribir el carácter "W" en la fila 2 (tercera fila), columna 7 (octava columna)
Código: [Seleccionar]
func_LCD I $((0x80+0x1B))
func_LCD C "W"

La función func_row_col() del primer post está pensada para posicionar el cursor en una pantalla de dos líneas. No es que no funcione en una de cuatro pero sería raro, por ejemplo, posicionar el cursor en la fila 0x00, columna 0x14 para escribir un carácter en la fila 0x03, columna 0x00.

Es más intuitiva esta otra
Código: [Seleccionar]
func_row_col()
{
  local base ;
  if [ $1 == 0 ]; then base=0x00; fi
  if [ $1 == 1 ]; then base=0x40; fi
  if [ $1 == 2 ]; then base=0x14; fi
  if [ $1 == 3 ]; then base=0x54; fi
  func_LCD I $((0x80+$base+$2))
}

No la he probado. Debería funcionar indistintamente tanto en pantallas de dos como de cuatro líneas. Si la pruebas y funciona, la incorporo al script.
« Última modificación: 05-10-2017, 08:51 (Jueves) por raphik »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #84 en: 04-10-2017, 17:24 (Miércoles) »
Gracias por la explicación y la mejora.

Lo de sumar $2 a $base lo entiendo, porque le sumas la columna al principio de cada fila, pero no entiendo lo del 0x80 del principio. Si puedes explicarlo.... gracias.


Me da este error:

Código: [Seleccionar]
root@LCD:~# ./lcd_write.sh 3 0 "Hola"
./lcd_write.sh: local: line 79: 0x00: bad variable name
./lcd_write.sh: line 79: : bad variable name

EDITO: ya está arreglado:

Por lo visto no se puede inicializar una variable a la vez que se declara, hay que hacerlo en una nueva línea:
Código: [Seleccionar]
local base;
base=0x00;



Como ahora "me sobra" una pantallita, lo que haré será puentear sus puntos de dirección para cambiar la dirección de dispositivo y usarla en serie con esta. Pondré  un par de fotos cuando lo tenga.
« Última modificación: 04-10-2017, 19:37 (Miércoles) por peperfus »

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #85 en: 04-10-2017, 22:54 (Miércoles) »

Offtopic:


A raíz de éste hilo, he empezado a montar un circuito de relés bajo I2C. (mi pantalla aún no ha salido)
He visto muchas cosas para la Pi, pero en bash no he visto casi nada, entiendo que para controlar el estado, el procedimiento es leer y escribir cada vez.
Una de mis dudas es; si existe alguna librería que ayude a calcular el nuevo estado cuando por ejemplo el estado previo es 0x5D y necesito que escriba 0x5F , o si hay que especificar previamente los posibles estados de los dispositivos del bus ¿...? no tengo ni idea...

Un script  que estuve mirando, parecía que exportaba los puntos como GPIO, ¿es posible o rentable tratarlos así? (a ver si encuentro de nuevo la página)

En fin, es para enloquecer, aunque divertido...  :D  (cuando no sabemos)


EDITO:


Estoy usando el propio de la pantalla i modificandolo, creo que funcionará genial...
« Última modificación: 04-10-2017, 23:13 (Miércoles) por Ficht »

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #86 en: 04-10-2017, 23:10 (Miércoles) »
Conseguido!!

En efecto, lo más simple para el control de relés en el bus I2C, es convertir los pines en simples GPIO.

Esta fue mi referencia: http://www.pragti.ch/kippycam/2012/08/15/Adding-an-I2C-interface-to-the-TL-WR703N/
« Última modificación: 05-10-2017, 09:25 (Jueves) por Ficht »

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #87 en: 05-10-2017, 11:54 (Jueves) »
@Fitch

Para manejar relés vía I²C se suele utiliza un expansor de bus tipo PCF8574.


El módulo de la foto no incorpora relés, pero vale perfectamente para entender cómo se controla este tipo de dispositivos.

El cable I²C del router se enchufa al conector dupont macho de la izquierda. A la derecha hay otro conector dupont hembra al que se podría conectar a su vez un segundo módulo expansor, y a éste un tercero... y así sucesivamente hasta un total de ocho módulos.

Cuando se conecta más de un módulo a mismo bus, hay que asignar una dirección física distinta a cada uno de ellos. Esto se consigue modificando la posición de los tres jumpers de color naranja.

En la parte superior hay un conector amarillo. El pin de más a la izquierda es 0V. El resto son 8 salidas digitales que pueden tomar los valores 0 o +5V, en función los valores binarios 0 o 1 que les asignemos.

Las 8 salidas digitales se pueden controlar desde una consola de OpenWRT o desde un script. Para establecer el valor de las salidas se usa el comando "i2cset" y para conocer su estado previo "i2cget".

Para entender lo que sigue ahora, hay que estar un poco familiarizado con los sistemas de numeración binario, hexadecimal y su aritmética.

Supongamos que queremos poner la patilla P7 de la tarjeta expansora a +5V y el resto a 0V. Bastará con enviar a la placa el valor binario 0b10000000. El problema es que los scripts no trabajan con binarios. Sólo se puede utilizar decimal y hexadecimal. Sabiendo que el valor decimal 0b10000000 equivale al valor hexadecimal 0x80 y suponiendo que el módulo estuviera conectado en la dirección 0x27 del bus 0, el código a enviar será
Código: [Seleccionar]
i2cset -y 0 0x27 0x80
Si lo que queremos en realidad es activar una o más patillas dejando invariable el resto, no queda otra que tirar del operador binario OR. Primero habría que conocer el estado previo de todas las patillas, luego habría que calcular el valor a enviar y por último enviarlo.

Lo vemos con un ejemplo: activar P7 preservando el estado de las demás salidas. Sabiendo que 0x10000000 equivale a 0x80,
Código: [Seleccionar]
prevState=$((i2cget -y 0 0x27))  # lectura del estado actual
newState=$(($prevState | 0x80))  #cálculo del nuevo valor respetando el estado previo
i2cset -y 0 0x27 $newState  # escritura del nuevo estado

Como esto se está poniendo un poco tocho lo dejo ya. Si de verdad interesa, podemos ver cómo desactivar determinadas patillas, respetando los valores previos, en una próxima entrega.
« Última modificación: 05-10-2017, 11:56 (Jueves) por raphik »

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #88 en: 05-10-2017, 12:36 (Jueves) »
@Fitch

Para manejar relés vía I²C se suele utiliza un expansor de bus tipo PCF8574.


El módulo de la foto no incorpora relés, pero vale perfectamente para entender cómo se controla este tipo de dispositivos.

El cable I²C del router se enchufa al conector dupont macho de la izquierda. A la derecha hay otro conector dupont hembra al que se podría conectar a su vez un segundo módulo expansor, y a éste un tercero... y así sucesivamente hasta un total de ocho módulos.

Cuando se conecta más de un módulo a mismo bus, hay que asignar una dirección física distinta a cada uno de ellos. Esto se consigue modificando la posición de los tres jumpers de color naranja.

En la parte superior hay un conector amarillo. El pin de más a la izquierda es 0V. El resto son 8 salidas digitales que pueden tomar los valores 0 o +5V, en función los valores binarios 0 o 1 que les asignemos.

Las 8 salidas digitales se pueden controlar desde una consola de OpenWRT o desde un script. Para establecer el valor de las salidas se usa el comando "i2cset" y para conocer su estado previo "i2cget".

Para entender lo que sigue ahora, hay que estar un poco familiarizado con los sistemas de numeración binario, hexadecimal y su aritmética.

Supongamos que queremos poner la patilla P7 de la tarjeta expansora a +5V y el resto a 0V. Bastará con enviar a la placa el valor binario 0b10000000. El problema es que los scripts no trabajan con binarios. Sólo se puede utilizar decimal y hexadecimal. Sabiendo que el valor decimal 0b10000000 equivale al valor hexadecimal 0x80 y suponiendo que el módulo estuviera conectado en la dirección 0x27 del bus 0, el código a enviar será
Código: [Seleccionar]
i2cset -y 0 0x27 0x80
Si lo que queremos en realidad es activar una o más patillas dejando invariable el resto, no queda otra que tirar del operador binario OR. Primero habría que conocer el estado previo de todas las patillas, luego habría que calcular el valor a enviar y por último enviarlo.

Lo vemos con un ejemplo: activar P7 preservando el estado de las demás salidas. Sabiendo que 0x10000000 equivale a 0x80,
Código: [Seleccionar]
prevState=$((i2cget -y 0 0x27))  # lectura del estado actual
newState=$(($prevState | 0x80))  #cálculo del nuevo valor respetando el estado previo
i2cset -y 0 0x27 $newState  # escritura del nuevo estado

Como esto se está poniendo un poco tocho lo dejo ya. Si de verdad interesa, podemos ver cómo desactivar determinadas patillas, respetando los valores previos, en una próxima entrega.

El tema es interesantísimo.
Por la noche, subiré fotos de las pruebas y placas montadas y funcionando a todo tren!! Dos modulos PCF8574, uno con 8 reles y otro con botones táctiles... desde luego al bus se le pueden sumar LCD sensores y todo lo que se tuerza...

Ya digo la solución mas simple encontrada ha sido convertir los pines P7=>P0 en GPIO y tratarlos con "out" "in"  "0 y 1" ya que se pueden exportar lo pines de un solo adaptador del bus o dos y dejar los sensores como toca... en fin, irán saliendo mas cosas, porque esto tiene varias maneras de tratarse.

No se si será ya prudente abrir otro hilo para esto o seguir aquí....

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #89 en: 05-10-2017, 12:37 (Jueves) »
Lo de sumar $2 a $base lo entiendo, porque le sumas la columna al principio de cada fila, pero no entiendo lo del 0x80 del principio. Si puedes explicarlo.... gracias.

En la página 22 del documento del profesor Carlos Canto Quintal, se puede ver que la instrucción para situar el cursor en una posición determinada tiene el formato siguiente


O sea, la instrucción consiste en un 1 en el 7º bit, seguido de la dirección de memoria que indica la posición del cursor.

Lo vemos con un ejemplo: calcular la instrucción que posiciona el cursor en la columna 6, fila 2 de un LCD 2004


La dirección de memoria del cursor se calcula sumando a la base (0x14) el valor de la columna:
0x14 + 0x06 = 0x1A (=0b00011010, en binario)

Finalmente, la instrucción se obtiene sumando el valor binario 0b1000000 (0x80, en hexadecimal) a la dirección de memoria del cursor:
0b10000000 + 0b00011010 = 0b10011010 (0x9A, en hexadecimal).

La instrucción que situa el cursor en la columna 6, fila 2 es 10011010.


En breve, la instrucción para posicionar el cursor se calcula sumando 0x80 a la dirección de memoria del cursor.
« Última modificación: 06-10-2017, 10:45 (Viernes) por raphik »

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #90 en: 05-10-2017, 22:00 (Jueves) »
Hace unos días a raíz de este hilo de raphik se me ocurrió la idea de montar un circuito de relés y botones bajo el bus I2C, poco a poco iré agregando sensores y alguna pantalla, es increíble la versatilidad y capacidad de expansión que tiene.
Soy bien consiente de mi carencia de conocimientos en todo esto, pero con pasión, empeño e imaginación lo voy sacando. (mas que nada, confío en la ayuda de la gente de éste foro  ;) )

Los módulos de expansión I2C que estoy usando son los PCF8574.

   

Ahora, citando a @raphik
Citar
Para entender lo que sigue ahora, hay que estar un poco familiarizado con los sistemas de numeración binario, hexadecimal y su aritmética.

Yo uso un soft conversor de base bidireccional "GHex" (dec, Octal, hex, binario y ASCII) recomendable para familiarizarse con todo esto.

Citar
Si lo que queremos en realidad es activar una o más patillas dejando invariable el resto, no queda otra que tirar del operador binario OR. Primero habría que conocer el estado previo de todas las patillas, luego habría que calcular el valor a enviar y por último enviarlo.

Esta parte la solucioné de esta manera creando un "nuevo device" que para mover los relé veo que es simple y suficiente, aunque hay algo que me dice que puede no ser lo mas eficiente.

Código: [Seleccionar]
echo pcf8574 0x39 > /sys/bus/i2c/devices/i2c-0/new_device
echo pcf8574 0x38 > /sys/bus/i2c/devices/i2c-0/new_device

Las dos nuevas GPIOBase
Código: [Seleccionar]
find /sys/class/gpio/gpio*
/sys/class/gpio/gpio481
/sys/class/gpio/gpio483
/sys/class/gpio/gpiochip458
/sys/class/gpio/gpiochip466
/sys/class/gpio/gpiochip474
/sys/class/gpio/gpiochip506



Se ve la carga en el dmesg (extracto)
Citar
i2c 0-0039: uevent
<7>[  268.825591] pcf857x 0-0039: probe
<7>[  268.825666] i2c i2c-0: master_xfer[0] R, addr=0x39, len=1
<6>[  268.826457] pcf857x 0-0039: probed
<7>[  268.830081] i2c i2c-0: client [pcf8574] registered with bus id 0-0039
<6>[  268.830133] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x39
<7>[  281.481288] i2c 0-0038: uevent
<7>[  281.481799] pcf857x 0-0038: probe
<7>[  281.481875] i2c i2c-0: master_xfer[0] R, addr=0x38, len=1
<6>[  281.482559] pcf857x 0-0038: probed
<7>[  281.486199] i2c i2c-0: client [pcf8574] registered with bus id 0-0038
<6>[  281.486263] i2c i2c-0: new_device: Instantiated device pcf8574 at 0x38

---------- Y la carga de todo el Mapeado...

i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[  745.166910] i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[  752.678994] i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[  752.680005] i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[  765.262345] i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[  765.263334] i2c i2c-0: master_xfer[0] W, addr=0x39, len=1
<7>[ 1737.932554] i2c i2c-0: ioctl, cmd=0x705, arg=0x7fbbe8f8
<7>[ 1737.932745] i2c i2c-0: ioctl, cmd=0x703, arg=0x03
<7>[ 1737.932793] i2c i2c-0: ioctl, cmd=0x720, arg=0x7fbbe8fc
<7>[ 1737.932834] i2c i2c-0: master_xfer[0] W, addr=0x03, len=0
<7>[ 1737.933647] i2c i2c-0: NAK from device addr 0x03 msg #0
<7>[ 1737.933746] i2c i2c-0: ioctl, cmd=0x703, arg=0x04
<7>[ 1737.933790] i2c i2c-0: ioctl, cmd=0x720, arg=0x7fbbe8fc
<7>[ 1737.933826] i2c i2c-0: master_xfer[0] W, addr=0x04, len=0
<7>[ 1737.934612] i2c i2c-0: NAK from device addr 0x04 msg #0
<7>[ 1737.934702] i2c i2c-0: ioctl, cmd=0x703, arg=0x05
<7>[ 1737.934742] i2c i2c-0: ioctl, cmd=0x720, arg=0x7fbbe8fc
<7>[ 1737.934777] i2c i2c-0: master_xfer[0] W, addr=0x05, len=0
<7>[ 1737.935708] i2c i2c-0: NAK from device addr 0x05 msg #0
<7>[ 1737.935936] i2c i2c-0: ioctl, cmd=0x703, arg=0x06
<7>[ 1737.935981] i2c i2c-0: ioctl, cmd=0x720, arg=0x7fbbe8fc
<7>[ 1737.936028] i2c i2c-0: master_xfer[0] W, addr=0x06, len=0
<7>[ 1737.936809] i2c i2c-0: NAK from device addr 0x06 msg #0
<7>[ 1737.936886] i2c i2c-0: ioctl, cmd=0x703, arg=0x07
<7>[ 1737.936919] i2c i2c-0: ioctl, cmd=0x720, arg=0x7fbbe8fc


Para ponerlo a 0 o a 1 basta con el típico "gpio.sh 1 out 0 | gpio.sh 1 out 1"

Esta manera es lo que buscaba en un inicio, pero no encontraba un ejemplo claro de donde tirar, ya que el 99% de la gente lo hace en la pi en phyton o con otras librerias que no he visto en openwrt.
Citar
Lo vemos con un ejemplo: activar P7 preservando el estado de las demás salidas. Sabiendo que 0x10000000 equivale a 0x80,
Código:
prevState=$((i2cget -y 0 0x27))  # lectura del estado actual
newState=$(($prevState | 0x80))  #cálculo del nuevo valor respetando el estado previo
i2cset -y 0 0x27 $newState  # escritura del nuevo estado

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #91 en: 07-10-2017, 19:54 (Sábado) »
¿Como puedo definir un botón hecho a partir de un GPIO, para que me cree eventos y que sean recogidos en el logread? teniendo en cuenta que dichos botones no están definidos en el dts de la placa?

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #92 en: 10-10-2017, 22:14 (Martes) »
Hola, Ficht. Me está llamando mucho la atención lo de los relés y me gustaría subirme al carro, aunque será mejor que comentemos este tema en otro hilo, porque esto ya poco tiene que ver con la pantallita de caracteres.

Un día de estos próximos abro un hilo, que tengo bastantes dudas y espero que me eches un cable !  :-*  ;D ;D

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #93 en: 10-10-2017, 22:23 (Martes) »
Si, estuve pensando en abrir otro hilo dedicado antes de postear, pero me da palo, no estoy a la altura como para iniciarlo... (Yo voy siempre por el camino largo de ensayo y error) ;)

Enviado desde mi PRA-LX1 mediante Tapatalk


peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #94 en: 10-10-2017, 23:17 (Martes) »
Citar
Si, estuve pensando en abrir otro hilo dedicado antes de postear, pero me da palo, no estoy a la altura como para iniciarlo... (Yo voy siempre por el camino largo de ensayo y error) Wink


No digas eso, hombre.... Si yo hiciera lo mismo, no habría posteado prácticamente nada. Te habla uno de los más ignorantes del foro y he aprendido muchísimo gracias a él; además, cuanta más experiencia y conocimiento compartamos, mejor: tanto de lo correcto como de lo incorrecto. Cuando hacemos algo mal aprendemos; y si lo compartimos, los demás también aprenden. Yo doy bastante caña; soy muy cabezota....

Bueno, lo dicho: Mañana o pasado... iniciaré un hilo con la movida esa de los relés. Me parece MUY interesante ese tema. Así que haré un "tuto" al mismo tiempo que lo aprendo. Me mola mucho la idea esa de usar la placa expansora para poder controlar varios relés; pero eso es lo que menos controlo; qué "comandos" tengo que enviar a la plaquita para abrir uno u otro relé, etc... Ya me he pedido un par de relés; aunque seguramente pediré una plaquita de esas de 4 como las tuyas; y un módulo de esos expansor, como el que usan las pantallitas LCD. Mi idea es ponerlo por ejemplo para controlar la iluminación del acuario y alguna cosilla más.

Ya que dices que no tienes nivel para iniciar un hilo, lo iniciaré yo con mucho menos nivel  >:D ^-^ :P ;D ;D. Sé sabedor de que tus ayudas y comentarios serán honorablemente bienvenidos, Ficht.

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #95 en: 11-10-2017, 00:15 (Miércoles) »
Citar
Si, estuve pensando en abrir otro hilo dedicado antes de postear, pero me da palo, no estoy a la altura como para iniciarlo... (Yo voy siempre por el camino largo de ensayo y error) Wink


No digas eso, hombre.... Si yo hiciera lo mismo, no habría posteado prácticamente nada. Te habla uno de los más ignorantes del foro y he aprendido muchísimo gracias a él; además, cuanta más experiencia y conocimiento compartamos, mejor: tanto de lo correcto como de lo incorrecto. Cuando hacemos algo mal aprendemos; y si lo compartimos, los demás también aprenden. Yo doy bastante caña; soy muy cabezota....

Bueno, lo dicho: Mañana o pasado... iniciaré un hilo con la movida esa de los relés. Me parece MUY interesante ese tema. Así que haré un "tuto" al mismo tiempo que lo aprendo. Me mola mucho la idea esa de usar la placa expansora para poder controlar varios relés; pero eso es lo que menos controlo; qué "comandos" tengo que enviar a la plaquita para abrir uno u otro relé, etc... Ya me he pedido un par de relés; aunque seguramente pediré una plaquita de esas de 4 como las tuyas; y un módulo de esos expansor, como el que usan las pantallitas LCD. Mi idea es ponerlo por ejemplo para controlar la iluminación del acuario y alguna cosilla más.

Ya que dices que no tienes nivel para iniciar un hilo, lo iniciaré yo con mucho menos nivel  >:D ^-^ :P ;D ;D. Sé sabedor de que tus ayudas y comentarios serán honorablemente bienvenidos, Ficht.

Bueeeno, lo intentaremos, gracias por los ánimos!!  :D :D

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #96 en: 28-10-2017, 20:33 (Sábado) »
Cita de: raphik
..... La patilla P3 enciende o apaga el led que ilumina el fondo de la pantalla.

 .....

¿Esa patilla P3...? ¿No está en la PCF8574? Estaría guay poder encender y apagar el led de iluminación de la pantalla por software.

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #97 en: 28-10-2017, 21:16 (Sábado) »
Cita de: raphik
..... La patilla P3 enciende o apaga el led que ilumina el fondo de la pantalla.

 .....

¿Esa patilla P3...? ¿No está en la PCF8574? Estaría guay poder encender y apagar el led de iluminación de la pantalla por software.

Pruébalo a ver si está cableada... y si no,  ¿crees que igual se puede cortar a la entrada del led y cablearlo al pin? puedes probar si el pin se activa.
Yo no tengo la pantalla... pero me da a que se puede cortar la alimentación del led y pasarlo al pin (creo que el led está por un extremo de la plaquita...)

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #98 en: 28-10-2017, 23:58 (Sábado) »
Rula !! :)



Lo he probado con el comando:
Código: [Seleccionar]
i2cset -y 0 0x27 0x0O sea, enviando un 0 a la patilla 0

De hecho, lo acabo de probar y vale con activar cualquier patilla de la 0 a la 3, (0x0 a 0x7).

Mola :)
Ahora sólo falta la señal hexadecimal para encender / apagar la pantallita sin alterar su contenido. Si la encuentro la pongo.

PD: No sé por qué mi móvil no enfoca bien la consola, la pantalla del ordenador. Es algo que nunca se me ha dado bien y me jode mucho, porque tengo un buen móvil con buena cámara, un Galaxy S5 y debería verse genial, pero no sé cómo coj... se hace para que enfoque bien la pantalla.
« Última modificación: 29-10-2017, 11:30 (Domingo) por peperfus »

Ficht

  • Visitante
Re: Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #99 en: 29-10-2017, 11:53 (Domingo) »
Rula !! :)



Lo he probado con el comando:
Código: [Seleccionar]
i2cset -y 0 0x27 0x0O sea, enviando un 0 a la patilla 0

De hecho, lo acabo de probar y vale con activar cualquier patilla de la 0 a la 3, (0x0 a 0x7).

Mola :)
Ahora sólo falta la señal hexadecimal para encender / apagar la pantallita sin alterar su contenido. Si la encuentro la pongo.

PD: No sé por qué mi móvil no enfoca bien la consola, la pantalla del ordenador. Es algo que nunca se me ha dado bien y me jode mucho, porque tengo un buen móvil con buena cámara, un Galaxy S5 y debería verse genial, pero no sé cómo coj... se hace para que enfoque bien la pantalla.
Has probado 0x10 ??

Enviado desde mi PRA-LX1 mediante Tapatalk