Archivo de la etiqueta: led

Sensor de nivel de liquido y arduino o pinguino pic


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.

donativo_paypal

led rgb, arduino y processing


Después de ver los videotutoriales de 0xDA_bit sobre Processing, me entró el gusanillo de probar de nuevo este maravilloso software, y decidí hacer el control de un led RGB conectado a Arduino pero modificando sus componentes de color mediante un programa realizado en Processing.

Para realizar dicho cometido me puse a buscar librerias de componentes para añadir a nuestros programas que vayamos realizando en Processing e ir haciendolos más profesionales y más complejos. Dicha librería la podéis descargar desde http://www.mediafire.com/?as8bnrkfk9v8kjf o bien desde la siguiente página web http://www.lagers.org.uk/g4p/.

Os dejo el esquemático de conexión del diodo led RGB a Arduino y también una imagen del software:

Aquí tenéis el video de funcionamiento:

Para el código basta con grabar en el Arduino el ejemplo que trae el IDE de Arduino que está en Firmata y es el StandardFirmata for Uno, y este es el código para processing (acordaros de copiar la librería guicomponents en processing):

//Añadimos las librerias necesarias
import processing.serial.*;
import cc.arduino.*;
import guicomponents.*;

Arduino arduino;
/*Programa simple que crea 3 selectores de color para controlar 
los componentes RGB de un diodo led conectado a Arduino.*/
GKnob knbRed, knbGreen, knbBlue;
int r, g, b; //variables donde guardaremos el valor correspondiente a cada componente de color
int kx, ky;

void setup() {
  size(400, 220);
  arduino = new Arduino(this,  Arduino.list()[2], 57600);  //Creamos el componente para trabajar con Arduino desde el programa 
  //Arriba donde pone Arduino.list()[], el 2 es donde me reconoce a mi el Arduino, puede ser 1 o 0, depende de las cosas conectadas
  //mediante puerto serie virtual
  r = g = b = 160;  //iniciamos cada componente a un valor de 160 (entre 0 y 255)
  arduino.analogWrite(10,r);  //Escribimos dichos valores en los 3 pines asignados para controlar nuestro diodo led RGB
  arduino.analogWrite(9,g);
  arduino.analogWrite(6,b);
  kx = 20;
  ky = 20;
  
  //Creacción y control del programa en processing, viene todo hecho en los ejemplos de la libreria guicomponents
  G4P.setMouseOverEnabled(true);
  G4P.cursor(HAND, CROSS);

  knbRed = new GKnob(this, kx, ky, 150, 150, 270);
  knbRed.setControlMode(GKnob.CTRL_ANGULAR);
  knbRed.setRotArcOnly(true);
  knbRed.setLimits(r, 0, 255);
  knbRed.setNbrTickMarks(9);
  knbRed.localColor = GCScheme.getColor(this, GCScheme.RED_SCHEME);

  knbGreen = new GKnob(this, kx + 8, ky, 150, 270, 20);
  knbGreen.setControlMode(GKnob.CTRL_ANGULAR);
  knbGreen.setRotArcOnly(true);
  knbGreen.setLimits(g, 0, 255);
  knbGreen.setNbrTickMarks(9);
  knbGreen.localColor = GCScheme.getColor(this, GCScheme.GREEN_SCHEME);

  knbBlue = new GKnob(this, kx + 4, ky + 9, 150, 20, 150);
  knbBlue.setControlMode(GKnob.CTRL_ANGULAR);
  knbBlue.setRotArcOnly(true);
  knbBlue.setLimits(b, 0, 255);
  knbBlue.setNbrTickMarks(9);

  stroke(0);
  strokeWeight(3);
  rectMode(CORNERS);
}

void draw() {
  background(220, 220, 255);
  fill(r, g, b);
  rect(kx + 190, 40, width - 40, height - 40);
  fill(0);
  text("Drag mouse in circular movement around the knobs centre", 10, height-10);
}


//En esta función es donde mando el valor pwm al arduino para cada color del led RGB
void handleKnobEvents(GKnob knob) {
  if (knob == knbRed){ 
    r = knob.getValue();
    arduino.analogWrite(10,r);}
  else if (knob == knbGreen){
    g = knob.getValue();
    arduino.analogWrite(9,g);}
  else if (knob == knbBlue){
    b = knob.getValue();
    arduino.analogWrite(6,b);}
}

Espero que os guste!!

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

Puerto Serie con Arduino y VB 6.0


He estado cacharreando algo estos días con el arduino y me he puesto a aprender a controlar y comunicar el arduino con el portátil, os subo un ejemplo de como encender y apagar el led 13 mediante una aplicación realizada en visual basic 6.

Esta es una imagen de la aplicación:

Esta aplicación consiste en controlar el arduino mediante el puerto serie (en mi caso es el COM6, ya lo puse directo en el control del VB 6.0, también se podría hacer para seleccionar el puerto), lo primero que debemos hacer es darle al botón CONECTAR para que se abra el puerto serie y se habiliten los botones de LED ON y LED OFF. Al presionar el botón LED ON el led 13 se encenderá y al presionar el botón LED OFF el led se apagará, para cerrar el puerto serie basta con presionar el botón DESCONECTAR (deshabilitando los botones de encendido y apagado de los leds). Está pequeña aplicación sirve de aprendizaje para futuros proyectos en los que queramos controlar determinados actuadores o sensores. Espero que os sirva de ayuda, a continuación os dejo los códigos y un video del funcionamiento.

Aquí os dejo el código del Arduino:

void setup() {
 //Definimos la velocidad de transferencia a 9600 baudios
 //y el pin 13 como salida
 pinMode(13,OUTPUT);
 Serial.begin(9600);
}

void loop() {
 //Mientras el puerto serie este accesible
 while (Serial.available())
 {
 //Guardamos en dato el valor leido del puerto serie
 byte dato = Serial.read();
 switch (dato){
 //Si es '1' encendemos el led
 case '1':
 digitalWrite(13,HIGH);
 break;
 //Si es '2' apagamos el led
 case '2':
 digitalWrite(13,LOW);
 break;
 }
 }
}

Aquí el código de la aplicación en VB 6.0:

Option Explicit

'Boton de conectar
Private Sub cmdConectar_Click()
 Serie.PortOpen = True   'Abrimos el puerto serie
 cmdON.Enabled = True    'Habilitamos los botones para trabajar con el led
 cmdOFF.Enabled = True
End Sub

Private Sub cmdDesconectar_Click()
 Serie.PortOpen = False  'Cerramos el puerto serie
 cmdON.Enabled = False   'Deshabilitamos los botones
 cmdOFF.Enabled = False
End Sub

Private Sub cmdOFF_Click()
 Serie.Output = "2"      'Mandamos un "2" para apagar el led
End Sub

Private Sub cmdON_Click()
 Serie.Output = "1"      'Mandamos un "1" para encender el led
End Sub

Y aquí os dejo el video del funcionamiento:

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