Archivo de la categoría: Pinguino PIC

pinguino pic ejemplo 3. Escribiendo en una LCD


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.

donativo_paypal

pinguino pic ejemplos 1 y 2. Encender un led mediante pulsador y pwm con led


Hoy inicio esta serie de ejemplos para que comprobeis lo sencillo que es programar con Pinguino PIC (muy parecido, por no decir igual, que el lenguaje que venimos usando con Arduino). Como ya hemos visto en anteriores entradas de que se trataba Pinguino PIC y como se instalaba: https://tallerarduino.wordpress.com/2011/06/10/pinguino-pic , vamos a pasar a explicar un par de ejemplos.

El primer ejemplo es básico de todo, se trata de encender un diodo led (conectado al pin 0 de pinguino PIC) mediante el accionamiento de un pulsador (conectado en el pin 1). Por tanto tenemos el siguiente esquema:

Además he hecho una foto del montaje en la protoboard:

Aquí tenemos el código:

//Programa en PINGUINO PIC para encender un led al accionar un pulsador
//Realizado por Regata para tallerarduino.wordpress.com

int led=0;			//Usamos etiquetas para trabajar mas comodos, en el pin 0
						//como tenemos conectado el led le llamamos así
int pulsador=1;	//Usamos etiquetas para trabajar mas comodos, en el pin 1
						//como tenemos conectado el pulsador le llamamos así

void setup() //Función de configuración del pinguino PIC
{
	pinMode(led,OUTPUT); //Declaramos el led como salida
	pinMode(pulsador,INPUT);	//Declaramos el pulsador como entrada
}

void loop() //Función que se repite una y otra vez
{
	if (digitalRead(pulsador)==HIGH) //Comprobamos si el pulsador está pulsado
	{											 //Si lo está
		digitalWrite(led,HIGH);		//Encendemos el led
	}
	else										//Si no lo está
	{	
		digitalWrite(led,LOW);			//Apagamos el led
	}
}

Y por último el video de funcionamiento:

En el segundo ejemplo, como dije anteriormente, voy a mostrar como encender y apagar un led progresivamente mediante el PWM del pinguino PIC, para ello vamos a necesitar un led (conectado al pin 11, ya que es con salida PWM), y dos pulsadores, uno con el que vamos a ir aumentando la luminosidad del led (conectado al pin 1) y otro con el que bajaremos la luminosidad al led (conectado al pin 2).

Os dejo el esquema de montaje:

Aquí está el código:

//Programa en PINGUINO PIC para encender un led al accionar un pulsador
//Realizado por Regata para tallerarduino.wordpress.com

int led=11;			//Usamos etiquetas para trabajar mas comodos, en el pin 11
						//como tenemos conectado el led le llamamos así
int subir=1;		//Usamos etiquetas para trabajar mas comodos, en el pin 1
						//como tenemos conectado el pulsador que va a aumentar el
						//brillo del led le llamamos así
int bajar=2;		//Usamos etiquetas para trabajar mas comodos, en el pin 2
						//como tenemos conectado el pulsador que va a disminuir el
						//brillo del led le llamamos así
int valor=0;		//Creamos una variable en la que vamos a guardar el valor
						//con el que encendemos el led

void setup() //Función de configuración del pinguino PIC
{
	//Para trabajar con el pin 11 como PWM no lo declaramos aqui como salida
	//Ya la toma automáticamente el chip como salida
	pinMode(subir,INPUT);	//Declaramos el pulsador como entrada
	pinMode(bajar,INPUT);	//Declaramos el pulsador como entrada
	Serial.begin(9600);
}

void loop() //Función que se repite una y otra vez
{
	//Comprobamos si esta el pulsador de subir pulsado y que valor no sea mayor o igual que 255
	//El PWM va desde 0 hasta 255
	if (digitalRead(subir)==HIGH && valor<255)
	{
		valor=valor+5; //Aumentamos el contenido de la variable valor en 5
		analogWrite(led,valor);	//Indicamos el valor de luminosidad que queremos aplicar al led
	}
	//Comprobamos si esta el pulsador de subir pulsado y que valor no sea menor o igual que 0
	//El PWM va desde 0 hasta 255
	if (digitalRead(bajar)==HIGH && valor>0)
	{
		valor=valor-5;  //Disminuimos el contenido de la variable valor en 5
		analogWrite(led,valor);	//Indicamos el valor de luminosidad que queremos aplicar al led
	}
}

Y por último el video de funcionamiento (al principio se ve oscuro por que tengo la luz apagada para ver mejor el efecto PWM en el led):

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.

donativo_paypal

Consigue tu Pinguino PIC


Pues eso si eres de España y no te apatece montar o hacerte una placa Pinguino PIC, pongo a la venta 2 de las PCBs ya montadas que me sobran. Interesados pasaros por la sección venta del blog, allí podeis ver unas fotos y dejar los comentarios de los interesados en las placas.

Pon un PINGUINO PIC en tu vida!!!!

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.

donativo_paypal

cheat sheet para pinguino pic


Pues navegando por ahí me he encontrado con unas cheat sheet (hojas de ayuda de código) para Pinguino Pic, muy parecidas a la que he posteado anteriormete sobre Arduino en este blog. Espero que os sirva de ayuda para vuestros proyectos.

Estas Cheat Sheet han sido diseñadas por la gente de www.pinguino.org.ve, gracias al proyecto PinguinoVE.

Cheat Sheet en A4:


Cheat Sheet en Formato Cubo:


Y aquí os dejo el enlace para descargar las cheat sheet tanto en pdf como en formato svg:

http://www.mediafire.com/?vs6d6cw1zb39sci

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.

donativo_paypal

pinguino pic y processing el comienzo


Estoy empezando a aprender a utilizar processing, para poder realizar aplicaciones para el Pinguino PIC, así que en esta entrada explicaré una aplicación que he modificado y he ido comentando para poder entenderla mucho mejor para los que como yo estan empezando en esto de unir Pinguino PIC con Processing.

Empiezo contando un poco lo que es processing:

Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab diriguido por John Maeda.

Processing es desarrollado por artistas y diseñadores como una herramienta alternativa al software propietario. Puede ser utilizado tanto para aplicaciones locales así como aplicaciones para la web (Applets).

Se distribuye bajo la licencia GNU GPL. Además al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.

Aquí podeis ver que el IDE de Processing es similar al de Arduino y al de Pinguino PIC:

La programación es bastante sencilla en un principio y bastante fácil de entender, de momento lo que he mirado ha sido así, según vaya aprendiendo más iré contando mis experiencias. Ahora os muestro un ejemplo para comunicar el Pinguino PIC mediante USB y una aplicación en Processing (es una modificación de una aplicación realizada por http://pinguino.walii.es).

Este es la aplicación gráfica realizada en Processing:

Gracias a esta aplicación podemos controlar tanto las entradas digitales y analógicas como las salidas digitales mediante el USB del Pinguino PIC, en una descripción breve lo que se puede hacer es lo siguiente:

  • Activar o desactivar las salidas digitales (‘1’o ‘0’) mediante los cuadrados rojos pulsando con el ratón sobre ellos.
  • Activar o desactivar las salidas digitales (‘1’o ‘0’) mediante las teclas correspondientes del teclado del ordenador ‘0’ a ‘9’.
  • Visualización de los cambios de las entradas digitales (’10’, ’11’ y ’12’) , activadas mediante pulsadores en la protoboard.
  • Visualización de las entradas analógicas, en mi caso 2 de ellas modificables mediante potenciometro y la otra mediante una ldr.

Os dejo el video de funcionamiento:

Aquí os dejo los archivos de la aplicación y del programa para el Pinguino PIC:

http://www.mediafire.com/?dvtujt6i4gsr66e

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.

donativo_paypal