Archiv für DS1620

Temperatur mit dem Arduino erfassen und auf dem Computer ausgeben

Posted in Arduino, Maxim/Dallas, Processing with tags , , , , on 9. Juli 2009 by crackburg

Ich moechte mit dem Freeduino und einen DS1620 die Temperatur messen und diese dann auf dem Computer ausgeben. Die Ausgabe der Temperatur erfolgt ueber Seria.println auf der seriellen Schnittstelle.  Im Video sieht man dann erst die Ausgabe in Minicom und dann in Processing.

Der DS1620 wird ueber die Library von John P. Mulligan angesprochen.

ds1620 004

Processing Code:

// basiert auf dem Beispiel von Tom Igoe

import processing.serial.*;

Serial myPort;  //Die Serielle Schnittstelle
PFont fontA;
String tempBuffer = null;
int lf = 10;    // Linefeed in ASCII

void setup() {

size(200, 200);
background(210);
//Gib eine Liste der seriellen Interfaces aus
println(Serial.list());

// Serielle Schnittstelle festlegen
myPort = new Serial(this, Serial.list()[0], 9600);
// Die Schrift.  Der Font muss im Data Verzeichnis vom Sketch liegen
// Um einen Font zu erstellen, verwende  Tools > Create Font
fontA = loadFont(„ArialRoundedMTBold-48.vlw“);

// Textgroesse definieren (in pixeln)
textFont(fontA, 20);
}

void draw() {

while (myPort.available() > 0) {
redraw();
String inBuffer = myPort.readStringUntil(lf);

if (inBuffer != null && tempBuffer != inBuffer) {
background(210);
println(inBuffer);
fill(51);
text („Temp:“, 1, 20);
fill(51);
text (inBuffer, 1, 40);
fill(51);
text („°C“, 35, 40);
String tempBuffer = inBuffer;

}
}
}

Arduino Code:

*/

#include „DS1620.h“

// Pins fuer die 3-wire-serial definieren
int dq = 5;
int clk = 4;
int rst = 3;

// Aufruf des DS1620 Konstruktors
DS1620 d = DS1620(dq, clk, rst);

void setup()
{
// Beginne serielle Kommunikation mit 9600 Baud
Serial.begin(9600);

// Schreibe TH und TL ins EEPROM des DS1620

d.write_th(30);
d.write_tl(15);

// Schreibe configuration/status register
// Dezimal 10 = Binary 00001010
// Aktiviert CPU-Mode und deaktiviert 1-Shot Mode.
// das Datenblatt erzaehlt mehr
d.write_config(10);
d.start_conv();

}

void loop()
{
//  Temperatur auslesen und aud der seriellen Schnittstelle ausgeben
Serial.println(d.read_temp());

// eine Sekunde Pause vor dem naechsten Lesezyklus
delay(1000);
}

Advertisements