http://www.todopic.com.ar/foros/index.php?topic=4530.0
Puedes usar un sensor de gas y le puedes agregar una etapa de potencia a la salida del pic para
que cuando detecte gas prendas un foco AC o una sirena ya es cosa de implementar
Crnkgh
Map arduino
https://www.arduino.cc/reference/en/language/functions/math/map/
LCD Creación de símbolos en CGRAM
Programa de prueba para cargar la memoria CGRAM del LCD con controlador HD44780, la misma
se accede (mediante la librería disponible en el compilador CCS) con la instrucción
lcd_send_byte(a,b) donde “a” es el valor binario que le dirá si es el origen del bloque de memoria
[a=0] o si es dato a grabar en el mismo [a=1] y por otro lado “b” será el dato a grabar en
hexadecimal.
01110 = 0x0E De esta misma forma se realizan el resto de los bits para formar el mapa de bits a
guardar en la CGRAM.
La memoria CGRAM posee solo 8 caracteres posibles para crear, donde el origen de dicho vector
de memoria será el 0x40, desde ahí comenzara a crearse cada carácter de 8 direcciones cada uno y
palabra de 5bit.
Por ejemplo primer Vector 0x40, le sumamos las 8 direcciones de datos y nos quedara el próximo
vector en 0x48, nuevamente le sumamos las 8 direcciones (la suma es siempre hexadecimal) y nos
quedara 0x50, y así sucesivamente… 0x58, 0x60, 0x68, …. Etc.
Como se puede ver en el programa de ejemplo se cargan solo 6 caracteres los cuales el primero
posee ceros que lo utiliza para generar un blanco, y los otros 5 son barras verticales que se van
incrementando: |, ||, |||, ||||, |||||. Esto da la ilusión óptica de una barra de progreso.
Nótese que para cargar estos valores se indica el vector de origen con a=0 y seguido el origen 0x40
quedando asi lcd_send_byte(0,0x40);, luego para ingresar los datos se debe llevar a nivel alto la
variable a, y poner el dato en hexadecimal como mencionábamos,
Una vez cargada la CGRAM con nuestro carácter especial, debemos mostrarla en el LCD, para ello
le decimos donde mediante la instrucción gotoxy(x,y); seguida de la misma instrucción
lcd_send_byte(1,0); Donde 1 será el valor que nos dice que es un dato y 0 será el carácter 0.
Como hemos creado solo un carácter (el paragua) solo tendremos 0, pero en el programa que se
muestra a continuación se puede ver que ese 0, se va incrementando según la cantidad de
caracteres creados en la CGRAM que como mencionaba antes solo son 8
En el programa que se muestra a continuacion se simula una barra de progreso que aumenta y
disminuye cilcicamente, es solo a modo ejemplo.
#include<16f883.h>
#use delay(int=4000000)
#include<LCD.C>
void main()
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x00); //00000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x10); //10000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x18); //11000
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1C); //11100
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1E); //11110
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
lcd_send_byte(1,0x1F); //11111
http://electgpl.blogspot.mx/2013/06/lcd-creacion-de-simbolos-en-cgram.html
http://electgpl.blogspot.mx/search/label/Función%20MAP%20en%20CCS
#include <16f876.h>
#use delay(clock=4000000)
#include <lcd.c>
void main(void)
lcd_init();
lcd_send_byte(1,0x00); // | | | | | |
lcd_send_byte(1,0x0C); // | |x|x| | |
lcd_send_byte(1,0x0C); // | |x|x| | |
lcd_send_byte(1,0x00); // | | | | | |
lcd_send_byte(1,0x00); // | | | | | |
lcd_send_byte(1,0x00); // | | | | | |
lcd_send_byte(1,0x09); // | |x| | | |
lcd_send_byte(1,0x00); // | | | | | |
lcd_send_byte(1,0x00); // | | | | | |
lcd_gotoxy(1,1);
lcd_send_byte(1,0);
lcd_gotoxy(1,2);
lcd_send_byte(1,1);
http://todopic.mforos.com/85505/1911507-escribir-caracteres-en-la-cgram-del-lcd/