Temperatur Messung mit dem DS18B20 und Arduino Nano

Habe heute einen One-Wire DS18B20 Temperatursensor erhalten und ihn mit dem Arduino Nano verbunden. Der Messbereich des Sensors beträgt von -55°C bis +125°C bei ± 0,5°C Genauigkeit.

Mit den OneWire 2.2 und Dallas Temperature Control Library 3.7.2 Bibliotheken ist die
Temperaturmessung schnell zusammengebaut.

Hier das Foto des Aufbaus mit Schaltplan:

Arduino Nano Temp. Messung via 1-Wire
Arduino Nano Temp. Messung via 1-Wire

Das Programm (8038 byte) gibt zuerst die eindeutige ID des Sensors aus, (28-A2-9D-8A-04-00-00-2B) und dann jede Sekunde den neuen Messwert:


/* 
TWTemp Version 1.0 vom 14.06.2013 

8038 bytes

Thomas Wenzlaff http://www.wenzlaff.de

Temperature Sensor DS18B20 an Digitalen Port Pin 2 wie folgt verbunden
Links=Masse, 
Mitte=Data, 
Rechts=+5V, 
3300 to 4700 Ohm Widerstand von +5V nach Data.

Es wird erst die Adresse des 1-Wire-Device ausgegeben und dann wird die Temperaturmessung gestartet.

*/

/* Benötigte Bibliotheken importieren */
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2 /* Digitalport Pin 2 definieren */

OneWire ourWire(ONE_WIRE_BUS); /* Ini oneWire instance */

DallasTemperature sensors(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten */

void setup()
{
delay(1000);
Serial.begin(9600);
Serial.println("Temperatur Messprogramm");
Serial.println("TWTemp 1.0 vom 14.06.2013");
Serial.println("http://www.wenzlaff.de");
delay(1000);

sensors.begin();/* Inizialisieren der Dallas Temperature library */

adresseAusgeben(); /* Adresse der Devices ausgeben */

Serial.print("Starte Temperatur abfragen ...");
}

void loop()
{
Serial.println();

sensors.requestTemperatures(); // Temp abfragen

Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" Grad Celsius");
}

void adresseAusgeben(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Suche 1-Wire-Devices...\n\r");// "\n\r" is NewLine
  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;
}

Um die höchstmögliche Genauigkeit des Sensors auszulesen ist im Setup noch dieser Befehl nötig, damit dauert die Messung aber etwas länger: „Temperatur Messung mit dem DS18B20 und Arduino Nano“ weiterlesen

Das erste „Blink“ Programm für das Arduino Nano Board, es muss ja nicht immer „Hallo Welt“ sein.


/*
  TWBlink 
  
  Beschreibung: Die rote Leuchtdiode (LED) auf dem Arduino Board blinkt alle 10 Sekunden
  kurz für 50ms auf.
 
  Dieses Beispiel ist Freeware und basiert auf dem Beispielprogramm Blink.
  
  Thomas Wenzlaff 12.05.2013
  
  Größe des compilierten Binary: 1108 Byte
 */

// An Pin 13 ist eine LED angeschlossen, die auf den meisten Arduino Boards vorhanden ist
const int LED = 13;

// Die setup Methode wird nur einmal ausgeführt und bei reset
void setup() {
  // Digitaler PIN mit der LED ist ein Ausgang
  pinMode(LED, OUTPUT);
}

// Die Endlosschleife
void loop() {
  digitalWrite(LED, HIGH); // LED anschalten
  delay(50); // 50 ms warten
  digitalWrite(LED, LOW); // LED ausschalten
  delay(10000); // 10 Sekunden warten
}

Jar2UML Plugin für Eclipse

Cooles Plugin für Eclipse. Verwandelt ein JAR in ein UML.

Install: Per drag and drop diesen Button in den Workspace Juno Workspace (Console) verschieben.

Nach der Installation über das Menü: File-Import-Jar2Uml eines der vier import Filter wählen und die nötige UML Datei erzeugen lassen.

Weitere Details.

Wie können gemachte Änderungen in einen bestimmten Zeitraum in Subversion angezeigt werden?

svn log -r {2011-01-01}:{2013-01-30}

oder lang:

svn log –revision {2011-01-01}:{2013-01-30}

Gibt alle Änderungen in dem Zeitraum von/ bis aus.

Kann auch mit Limit kombiniert werden z.B.

svn log -r {2011-01-01}:{2013-01-30} -l 3

oder lang:

svn log -r {2011-01-01}:{2013-01-30} --limit 3

Zeigt nur 3 Änderungen an.

Geht natürlich auch mit verbose, um ausführliche Meldungen auszugeben:

svn log -r {2013-01-01}:{2013-01-12} -v

oder lang:

svn log -r {2013-01-01}:{2013-01-12} --verbose

Quick-Howto für die Coole Java Template-Erstellung (JaMoPP) mit CommentTemplate ldt. JavaMagazin 1-2013

Oder was ist JaMoPP? Damit es auch unter Eclipse Kepler SR1 läuft (Update: läuft auch unter Eclipse Luna 4.4.0 und Eclipse Mars 4.5.0), zuerst über Eclipse Marketplace den CommentTemplate 0.9.2 installieren:
Bildschirmfoto 2014-05-01 um 21.17.45
Dann diesen Beispiel Code ausführen:

package de.wenzlaff;

import java.util.Date;

import de.devboost.commenttemplate.CommentTemplate;

/**
* 1. Installieren über Eclipse Update oder Marketplace (suchen nach CommentTemplate)
* 2. New PlugIn Projekt
* 3. Add new Dependencies de.devboost.commenttemplate-Version.jar
* 4. Klasse mit Extension Source.java erstellen
* 5. Annotation @CommentTemplate an String Methode mit return null
* 6. JavaDoc Formatierung in Eclipse für das Projekt ausschalten
* 7. Save erzeugt in src-gen-comment-template die generierte Klasse
* 8. Run as
*
* Beispiel Video: http://jamopp.org/index.php/JaMoPP_CommentTemplate
* Anleitung: http://reuseware.org/publications/2012_ACME_CommentTemplate.pdf
*/
„Quick-Howto für die Coole Java Template-Erstellung (JaMoPP) mit CommentTemplate ldt. JavaMagazin 1-2013“ weiterlesen

Wie kann bei JAXB marshal verhindert werden das „ “ geschrieben wird?

Das geht mit der Property: Marshaller.JAXB_FRAGMENT
Wenn die auf true gesetzt wird, erscheint der XML Tag nicht mehr.

Hier ein komplettes Beispiel für die Serialisierung:


JAXBContext jaxbContext = JAXBContext.newInstance(Map.class);
Marshaller marshaller = jaxbContext.createMarshaller();

// Verhindern des tags:
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(freemindMap, outFile);

Zwei Eclipse Plugins für Juno installiert, Grep Konsole und Workspacemechanic.

Cooles Plugin für Eclipse. Die Konsole kann nach Wunsch mit RegEx eingefärbt und verändert werden. Weitere Infos zur Grep-Konsole hier.

Und mit dem Workspacemechanic können Einstellungen gesichert und in andere Workspaces importiert werden.

Die Einstellungen für die Grep-Konsole liegen unter .metadata/.plugins/org.eclipse.core.runtime/.settings/com.musgit.eclipse.grepconsole.prefs