Pinguino Kit (actualmente en la versión v1.1) es un entorno que permite programar las placas Pinguino Pic gráficamente. Esta herramienta pretende convertirse en una herramienta de enseñanza de programación y electrónica digital básica, centrada en estas placas. Os dejo una captura del IDE de Pinguino Kit y un vídeo en el que podéis ver un poco su funcionamiento y el método para realizar programas.
Como estoy metido en un proyecto sobre el control de unos depósitos de agua para la furgoneta vivienda de un amigo mio, me parece interesante hablar aquí de los sensores de nivel de liquido.
Los sensores de nivel de liquido de los que vamos a hablar son de este tipo:
La verdad es que son muy fáciles de usar, ya que cuando están activados puentean los dos cables que traen, así que funcionan como un interruptor. Os dejo las características de los mismos:
El ejemplo que hice para probarlo es muy básico y es el mismo tanto para arduino como para pinguino pic, lo único que cambia son los pines a donde he conectado tanto el sensor como el led de alarma (los podéis ver en el código de pinguino pic), os dejo una imagen del esquema de conexionado:
Aquí podéis ver un vídeo del funcionamiento del sensor (en un improvisado depósito de agua realizado con una botella de refresco):
El código para arduino:
/*Prueba sensor de nivel de liquido*/
int sensor=12; //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=11; //Indicamos el pin al que tenemos conectado el led que indica alarma
void setup()
{
//Configuramos los pines correspondientes como entradas o salidas
pinMode(sensor,INPUT); //sensor de nivel de liquido
pinMode(led, OUTPUT); //salida led
}
void loop()
{
if(digitalRead(sensor)==LOW)
digitalWrite(led,LOW);
else
digitalWrite(led,HIGH);
}
El código para pinguino pic:
/*Prueba sensor de nivel de liquido*/
int sensor=0; //Indicamos el pin al que tenemos conectado el sensor de nivel de liquido
int led=1; //Indicamos el pin al que tenemos conectado el led que indica alarma
void setup()
{
//Configuramos los pines correspondientes como entradas o salidas
pinMode(sensor,INPUT); //sensor de nivel de liquido
pinMode(led, OUTPUT); //salida led
}
void loop()
{
if(digitalRead(sensor)==LOW)
digitalWrite(led,LOW);
else
digitalWrite(led,HIGH);
}
Espero que os sirva de ayuda!!!
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.
Como en un anterior tutorial hemos visto como usar y montar un circuito de relés para tu arduino/pinguino pic, aquí os dejo un sencillo tutorial para poder conectar módulos de relés que ya se compran montados a nuestros proyectos.
El módulo que voy a emplear es uno muy típico que podéis encontrar por ebay a un precio realmente muy atractivo, se trata de este:
Como podéis ver, en este módulo (que es el que he empleado para el tutorial) trae dos entradas para poder activar dos relés, pero podemos encontrar módulos con más relés e incluso de un solo relé, lo que necesitemos para nuestros proyectos.
Os dejo el esquema de conexión y paso a explicar un poco la conexión para que funcione todo correctamente:
Como podéis ver en la foto del módulo observamos que tenemos dos tiras de pines, una que es en la que esta el jumper, que tiene tres pines y podemos seleccionar alimentar todo el módulo de forma conjunta (es decir seleccionar con el jumper jd-vcc y vcc), o bien alimentar de forma independiente tanto optoacopladores como relés (quitando el jumper), yo he usado la forma de alimentar todo de manera conjunta, ya que me parece la forma más sencillo de hacerlo, así que he dejado el jumper uniendo jd-vcc y vcc. Y la otra tira de pines que es donde nos aparece en el siguiente orden: GND IN1 IN2 VCC, aquí es donde unimos la alimentación con nuestro arduino, es decir, GND del módulo con GND del arduino/pinguino pic, VCC del módulo con 5V del arduino/pinguino pic y las entradas IN1 e IN2 (se activan las bobinas de los relés cuando ponemos a GND dichas entradas) conectados a los pines que deseemos de nuestro arduino/pinguino pic, serán los encargados de activar las bobinas de los relés correspondientes. Como veis es una manera muy sencilla de poder emplear relés en nuestros proyectos sin necesidad de construirnos una pcb para realizar dicha tarea.
Por otro lado tenemos los conectores a los que conectaremos los aparatos eléctricos que queramos activar o desactivar mediante nuestro módulos de relés, como podéis observar en la imagen de arriba, tienen tres conectores cada relé, empezando por abajo observamos en este orden: Conector normalmente cerrado del relé 1 (está activo hasta que se activa la bobina del relé mediante la entrada IN1 poniéndola a LOW), el conector común del relé 1 y el conector normalmente abierto del relé 1 (está desactivado hasta que se activa la bobina del relé mediante la entrada IN1 y permanece activado hasta que se ponga a HIGH dicha entrada).
Os dejo un vídeo de funcionamiento utilizando el módulo con un arduino uno y una bombilla a 220V, donde se apaga/enciende con un intervalo de 5 segundos, empleando el ejemplo blink.
Código:
/*
Ejemplo de encendido/apagado de una bombilla de 220V con un módulo de relés
*/
void setup()
{
// Indicamos el pin que va a activar o desactivar la bobina del relé
pinMode(13, OUTPUT);
}
void loop()
{
//Ojo las bobinas de los relés se activan cuando a las entradas del módulo tienen GND
digitalWrite(13, HIGH); // Desactivamos la bobina del relé
delay(5000); // Esperamos 5 segundos
digitalWrite(13, LOW); // Activamos la bobina del relé
delay(5000); // Esperamos 5 segundos
}
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.
Los chicos de www.pinguino.cc han sacado una nueva versión del IDE para la programación de vuestros pinguinos, con opción de seleccionar entre distintas placas y con muchos más ejemplos y librerías que las versiones anteriores, os dejo una imagen de como es este nuevo IDE:
Una vez instalada la aplicación es recomendable actualizar el IDE a la última revisión disponible, para ello abrimos la aplicación y pincháis como indica la imagen, primero buscáis si hay nuevas revisiones y posteriormente en upgadre:
Con esto ya dispondréis del software pinguino actualizado a la última versión. Pronto nuevos tutoriales pinguino!!!
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.
En este tercer ejemplo, vamos a ver como escribir en una LCD con controlador HD44780 mediante Pinguino PIC. La comunicación emplea 4 bits de datos, dichos pines del Pinguino PIC serán el 0,1,2 y 3 pero se pueden elegir modificando estos en el código escrito. Y 2 pines , que serán el 8 y el 9, para enviar comandos al LCD y para el Enable (habilitación del mismo).
Además emplearemos la retroiluminación que traen los LCD de 16 patillas, conectando los pines 15 y 16 del LCD a VCC y GND respectivamente. Una descripción de los pines es la siguiente:
La conexión del LCD gráficamente la podemos ver aqui en el siguiente esquemático:
Una foto del funcionamiento del LCD con el programa cargado en el Pinguino PIC:
Aquí un video del funcionamiento:
Y por último os dejo el código, y como podréis observar es facilisimo empezar a trabajar con un lcd:
/* Programa realizado por Regata para tallerarduino.wordpress.com */
// Comenta esta linea si usas un pinguino con PIC18F2550
//#define PIC18F4550
void borrarlinea(uint8_t linea); //Declaracion de la función de borrado de linea
//Función de configuración, donde indicaremos que usamos modo 4 bits
void setup()
{
//Modo 8 bits
//lcd(8, 9, 0, 1, 2, 3, 4, 5, 6, 7); // RS, E, D0 ~ D7
//Modo 4 bits, no se emplean los últimos 4 bits
lcd(8, 9, 0, 1, 2, 3, 0, 0, 0, 0); // RS, E, D4 ~ D8
//Indicamos el formato del lcd, en este caso 20x4
lcd.begin(20,4);
}
//Función repetitiva
void loop()
{
//Posicionamos el cursor del lcd en posición 0,0 del lcd
lcd.setCursor(0,0);
lcd.print("Bienvenidos a:"); // Escribimos la cadena que deseamos
//Posicionamos el cursor del lcd en posición 3,1 del lcd
lcd.setCursor(3,1);
lcd.print("Taller Arduino"); // Escribimos la cadena que deseamos
//Posicionamos el cursor del lcd en posición 0,2 del lcd
lcd.setCursor(0,2);
lcd.print(" tu blog referencia"); // Escribimos la cadena que deseamos
//Posicionamos el cursor del lcd en posición 1,3 del lcd
lcd.setCursor(1,3);
lcd.print("Pinguino y Ardu"); // Escribimos la cadena que deseamos
//Escribimos a continuación de la última posición escrita
lcd.print("ino");
delay(1000);
//Esta es una función que he hecho para borrar una linea en concreto,
//donde el numero indicado es el número de linea del lcd
borrarlinea(0);
//También podemos usar lcd.clear(); para borrar todo el lcd
delay(500);
}
//Función creada por mi para cuando necesito borrar una linea entera del lcd
//y no todo el lcd
void borrarlinea(uint8_t linea)
{
int i; //Declaramos una variable que usaremos para contar el número de caracteres
lcd.setCursor(0,linea); //Posicionamos el cursor para comenzar a borrar en la posicion 0 de la linea que indicamos
for (i=0;i<20;i++) //Borramos desde el caracter 0 hasta el 19
lcd.print(" ");
}
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.