You are on page 1of 6

Microcontroladores

Prctica: Termmetro construido en procesing.














Cd. Victoria, Tam.
Introduccin.
En esta prctica se elabor un termmetro digital en el programa proporcionado por el
profesor procesing. Los materiales necesarios para llevar acabo la prctica fueron
arduino mega, una computadora, el software procesing, un termistor LM35 y cables para
conexin.
Los pasos para obtener los resultados esperados fueron en primer lugar generar la
pantalla en la cual se mostrara el termmetro y los grados Celsius en el ambiente,
despus de implement la grfica que consta de dos cuadros para generar la simulacin
de incremento de temperatura, en seguida se utiliz una sentencia for para incluir la
graduacin de la grfica de barra. Despus se realiz otra grafica que marca el voltaje de
entrada al arduino que manda el termistor y al final se implementaron indicadores que
cuentas de dos elipses para generar la simulacion de encendido de un led.


Desarrollo.
La prctica efectuada se llev a cabo en el programa processing, construyendo en este las
instrucciones con las cuales se realiz el termmetro digital.
Para lograr el envio de datos por el serial del arduino a processing se compilo y cargo el
programa FIRMATA al arduino y de esta manera generar la comunicacion serial.
El cdigo utilizado fue el siguiente:

Import processing. Serial.*;
Import cc.arduino.*;
int[] xvals; // Array que almacenara los valores ledos
int val; // Valor ledo
int arrayindex = 0; // Puntero o ndice del array
Arduino arduino;
int potPin=0;
PShape square, indicador1, indicador2, indicador3;
float Temp=0;
void setup(){
size(510, 535,P2D);
//cuadro para relleno de grafica de barra
square = createShape(RECT, 0, 0, 50, 50);
square.setFill(color(0, 0, 255));
square.setStroke(false);
//indicador 1
indicador1 = createShape(ELLIPSE, 0, 0, 50, 50);
indicador1.setFill(color(0, 0, 255));
indicador1.setStroke(false);
//indicador 2
indicador2 = createShape(ELLIPSE, 0, 0, 50, 50);
indicador2.setFill(color(0, 0, 255));
indicador2.setStroke(false);
//indicador 3
indicador3 = createShape(ELLIPSE, 0, 0, 50, 50);
indicador3.setFill(color(0, 0, 255));
indicador3.setStroke(false);
xvals = new int[width];
arduino = new Arduino(this, Arduino.list()[0], 57600);
}

void draw(){
noStroke();
background(0);
//definicion de valor de entrada del arduino a la variable "val"
val = arduino.analogRead(potPin);
xvals[width-1] = val/4;
Temp = val;
//Formula para obtener la temperatura
Temp = (5.0 * Temp * 100.0)/1024.0;
//linea para la grafica de entrada de voltaje
for(int i=1; i<width; i++) {
xvals[i-1] = xvals[i];
}
for(int i=1; i<width; i++) {
stroke(0,0,255);
point(i, 528-xvals[i]);
}
for (int e=0; e<=5;e++){
text(e+"V --",255, 533-(e*51));
}
//textos
text("Grafica de voltaje de entrada al arduino",130, 255);
text("Valor analogico: "+val, 130, 230);
text("Voltaje: "+5.0*(xvals[width-1]/255.0)+"V",265,230);
text("Sensor de temperatura con LM35",170,15);
text("TEMPERATURA:"+Temp+"C",15, 45);
//grafica de barra
noStroke();
rect(50,55, 30,205);
shape(square, 50, 55,30,(205-(Temp*2.7)));
square.setFill(color(255,0,0));
for(int s=0;s<=80;s+=20){
text(s+"C -",10,260-(s*2.5));
}
//indicadores
noStroke();
ellipse(182,82,25,25);
if(Temp>=0 && Temp<18){
shape(indicador1, 170, 70,25,25);
indicador1.setFill(color(0,0,255));
}
ellipse(282,82,25,25);
if(Temp>=18 && Temp<40){
shape(indicador2, 270, 70,25,25);
indicador2.setFill(color(0,255,0));
}
ellipse(382,82,25,25);
if(Temp>=40 && Temp<=80){
shape(indicador3, 370, 70,25,25);
indicador3.setFill(color(255,0,0));
}

Conclusiones.
En esta prctica se comprob el funcionamiento de processing con interfaz arduino y de
esta manera generar en la pantalla una simulacin la cual represent un termmetro con
varias formas bsicas de muestreo de dicho aparto de medicin, como lo son muestreo
digita, en una grfica e indicadores.