Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INTRODUCCIN
Se presentarn cuatro sensores distribuidos al azar en una superficie
plana, cada uno medir la temperatura de la zona en la que se
encuentra.
Con Arduino DUE se monitorear varios sensores de
temperatura al mismo tiempo y mediante Processing se mostrar
cundo la temperatura sube o baja.
OBJETIVO
La idea principal es mostrar que Arduino DUE, al igual que todos los
Arduinos, puede manejar varios sensores de temperatura al mismo
tiempo y cambiar las fluctuaciones.
MATERIALES
VENTAJAS Y DESVENTAJAS
POSIBLES APLICACIONES
FRITZING
Esta es parte del circuito que implementaremos el cual ser con el
arduino DUE y con 4 sensores y el modulo Bluetooth hc05 que ser el
que nos permite comunicar con el mvil a travs de Android.
CODIGO ARDUINO
El programa en la parte de arduino queda de la siguiente forma:
#include <OneWire.h>
//Se importan las libreras
#include <DallasTemperature.h>
//** Definiciones **//
#define Pin 5
DATA
OneWire ourWire(Pin);
//Se establece el pin declarado como
bus para la comunicacin OneWire
DallasTemperature sensors(&ourWire); //Se llama a la librera
DallasTemperature
//** Programa **//
void setup() {
delay(1000);
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
Serial.println(sensors.getTempCByIndex(1));
Serial.println(" Grados Centigrados - Sensor 2 \n");
Serial.println(sensors.getTempCByIndex(2));
Serial.println(" Grados Centigrados - Sensor 3 \n");
Serial.println(sensors.getTempCByIndex(3));
Serial.println(" Grados Centigrados - Sensor 4 \n");
delay(1000);
//Se provoca una parada de 1 segundo
antes de la prxima lectura
*/
double temp1 = sensors.getTempCByIndex(0);
double temp2 = sensors.getTempCByIndex(1);
double temp3 = sensors.getTempCByIndex(2);
double temp4 = sensors.getTempCByIndex(3);
Serial.print(String(temp1)+"-"+String(temp2)+","+String(temp3)+"-"
+String(temp4)+"*");
}
El cdigo para coger los datos del puerto serie y mostrarlos por
pantalla es el siguiente:
//Importamos la librera para el uso del puerto serie,
//en arduino se carga sola, aqu hay que llamarla.
import processing.serial.*;
//Definimos todas las variables
Serial port;
String parte1="";
String parte2="";
String temp1 = "";
String temp2 = "";
String temp3 = "";
String temp4 = "";
String Data="";
PFont font;
int index=0;
int i=0;
int j=0;
//Este void setup() es similar al de arduino solo se ejecuta al inicio
void setup()
{
//Aqu definimos el tamao de la ventana que
//mostraremos por pantalla
size(900,600);
//Inicializamos el puerto serie y decimos
//que se haga lectura hasta encontrar el punto
port = new Serial(this, "COM3", 9600);
port.bufferUntil('*');
//Esto es para cargar la fuente por defecto que usaremos en el
programa,
//la fuente tendr que estar en la carpeta data del proyecto
//font = loadFont("AgencyFB-Reg-200.vlw");
//textFont(font, 200);
}
//Este evento se llama cuando hay entrada en el puerto serie
void serialEvent (Serial port)
{
//Leemos hasta que se encuentre un punto y guardamos lo leido en
Data
Data = port.readStringUntil('*');
//Este comando nos sirve para eliminar
//el punto del final ya que si no nos lo mostrara por pantalla
Data = Data.substring(0,Data.length()-1);
//buscamos la posicin de la coma que separa
//los dos valores y guardamos la posicin en index
index = Data.indexOf(",");
//almacenamos la primera parte del texto en tempC
parte1= Data.substring(0,index);
//Almacenamos la segunda parte en tempF
parte2= Data.substring(index+1,Data.length());
i = parte1.indexOf("-");
temp1 = parte1.substring(0,i);
temp2 = parte1.substring(i+1,parte1.length());
j = parte2.indexOf("-");
temp3 = parte2.substring(0,j);
temp4 = parte2.substring(j+1,parte2.length());
}
//ste sera el equivalente a void loop() de arduino,
//se ejecuta como un loop constante
void draw()
{
//definimos el color del fondo negro 0,0,0 es el color negro en RGB
background (0,0,0);
fill(255,255,255);
textSize(26);
text("CONTROLADOR DE SENSORES DE TEMPERATURA",145,50);
fill(255, 255, 255);
textSize(18);
text("SENSOR 1",165,100);
text(temp1 + " C",165,150);
text("SENSOR 2",635,100);
text(temp2 + " C",635,150);
text("SENSOR 3",165,350);
text(temp3 + " C",165,400);
text("SENSOR 4",635,350);
text(temp4 + " C",635,400);
strokeWeight(2);
rectMode(CORNERS);
fill(114,117,111);
rect(45.0,205.0,405.0,245.0,20.0,20.0);
stroke(255);
text("-55",30, 270);
text("0",155, 270);
text("225",390, 270);
//stro
fill(114,117,111);
rect(495.0,205.0,855.0,245.0,20.0,20.0);
text("-55",480, 270);
text("0",605, 270);
text("225",830, 270);
rect(45.0,455.0,405.0,495.0,20.0,20.0);
text("-55",30, 520);
text("0",155, 520);
text("225",390, 520);
rect(495.0,455.0,855.0,495.0,20.0,20.0);
text("-55",480, 520);
text("0",605, 520);
text("225",830, 520);
dibujarTemp();
}
void dibujarTemp(){
float t1 = float(temp1);
if(t1 >= 0){
t1 = (t1*2) + 110;
}
else{
t1 = 110 - (t1*2);
}
fill(255,162,0);
rect(45.0,205.0,t1 + 45.0,245.0);
float t2 = float(temp2);
if(t2 >= 0){
t2 = (t2*2) + 110;
}
else{
t2 = 110 - (t2*2);
}
fill(255,162,0);
rect(495.0,205.0,t2 + 495.0 ,245.0);
float t3 = float(temp3);
Y asi se mostrara