2009-10-10, 14:37
Ausgehend von Mats Vanselows getTemperatur()
Funktion (http://www.mats-vanselow.de/2009/03/25/temperaturen-messen-mit-arduino und einem Beispiel aus der Ethernet Library habe ich einen kleinen Client geschrieben, der alle 10 Minuten die Temperatur aus einem LM35 Sensor ausliest und per HTTP-Request an ein PHP-Skript auf meiner Homepage schickt. Da der LM35 nicht genau kalibriert ist und wohl sowieso maximal auf ein halbes Grad genau ist, habe ich mittels zwei anderer Thermometer (die wiederum selbst voneinander abweichen) die ungefähre Abweichung des LM35 bestimmt und ziehe die 2° Celsius einfach ab.
Hier der entsprechende Processing-Code:
#include <Ethernet.h>
bool connected = false;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
Client client(serverIP,80);
int inPin = 5; // input pin 1
float inValTotal;
int i;
int runs = 5; // Anzahl der Durchläufe
int waittime = 20; // ms zwischen Durchläufen
int delayVal = 1000; // Intervall für Serial Output
float getTemperatur() {
inValTotal = 0;
for(i = 0;i<runs;i++){
inValTotal = inValTotal + analogRead(inPin);
delay(waittime);
}
inValTotal = inValTotal / runs / 2;
return(inValTotal-2);
}
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
Serial.println("setup done");
}
void loop()
{
Serial.println("Entered loop");
if (!connected){
Serial.println("Not connected");
if (client.connect()){
connected = true;
Serial.println("Connected to Server");
Serial.println("Sending request to server");
client.print("GET /storetemp.php?t=");
client.print(getTemperatur());
client.println(" HTTP/1.1");
client.println("Host: www.mydomain.com");
client.println("User-Agent: Arduino");
client.println("Accept: text/html");
client.println();
} else {
Serial.println("Cannot connect to server");
}
}
else {
delay(500);
while (client.connected() && client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println();
client.stop();
connected=false;
}
Serial.println("Done now");
delay(600000);
} |
#include <Ethernet.h>
bool connected = false;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
Client client(serverIP,80);
int inPin = 5; // input pin 1
float inValTotal;
int i;
int runs = 5; // Anzahl der Durchläufe
int waittime = 20; // ms zwischen Durchläufen
int delayVal = 1000; // Intervall für Serial Output
float getTemperatur() {
inValTotal = 0;
for(i = 0;i<runs;i++){
inValTotal = inValTotal + analogRead(inPin);
delay(waittime);
}
inValTotal = inValTotal / runs / 2;
return(inValTotal-2);
}
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
Serial.println("setup done");
}
void loop()
{
Serial.println("Entered loop");
if (!connected){
Serial.println("Not connected");
if (client.connect()){
connected = true;
Serial.println("Connected to Server");
Serial.println("Sending request to server");
client.print("GET /storetemp.php?t=");
client.print(getTemperatur());
client.println(" HTTP/1.1");
client.println("Host: www.mydomain.com");
client.println("User-Agent: Arduino");
client.println("Accept: text/html");
client.println();
} else {
Serial.println("Cannot connect to server");
}
}
else {
delay(500);
while (client.connected() && client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println();
client.stop();
connected=false;
}
Serial.println("Done now");
delay(600000);
}
Hier der Code des PHP-Skripts, es schickt als Antwort Zeit und erhaltene Temperatur zurück zum Arduino und speichert die Temperatur mit Zeitstempel in einer Textdatei. Im nächsten Schritt werde ich wohl sicher eine MySQL-Datenbank hintersetzen, für den Moment reicht es aber völlig aus.
<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t']."\n");
fclose($fh);
?>
</php> |
<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t']."\n");
fclose($fh);
?>
</php>
Und abschließend ein Auszug aus der Textdatei:
04.10.2009-09:22:29 Temperatur= 21.00
04.10.2009-09:22:37 Temperatur= 21.00
04.10.2009-09:22:44 Temperatur= 21.00
04.10.2009-09:22:52 Temperatur= 21.00
04.10.2009-09:23:00 Temperatur= 21.00
04.10.2009-09:23:07 Temperatur= 20.90
04.10.2009-09:23:15 Temperatur= 21.00
04.10.2009-09:23:33 Temperatur= 21.00
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
Arduino Category:
Arduino |
Kommentare deaktiviert für Arduino übermittelt Temperaturen
2009-10-10, 14:31
Habe ein neues Buch zu Arduino & Co: Programming Interactivity: Unlock the Power of Arduino, Processing, and OpenFrameworks von Joshua Noble. Was mir an den über 700 Seiten sehr gut gefällt, ist das Hintergrundwissen, das in das Buch eingeflossen ist. Also nicht nur „Pack den Draht da hin und schließ ihn da an“ sondern auch eine Menge an Zusatzinformationen. Habe die fast 40 Euro nicht bereut.
Hier mal die Kapitelübersicht:
- Introducing Interaction Design
- Programming Basics
- Processing
- Arduino
- Programming Revisited
- openFrameworks
- Sound and Audio
- Physical Input
- Programming Graphics
- Bitmaps and Pixels
- Physical Feedback
- Protocols and Communication
- Graphics and OpenGL
- Detection and Gestures
- Movement and Location
- Interfaces and Controls
- Spaces and Environments
- Further Resources
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
Buch Category:
Arduino |
Kommentare deaktiviert für Programming Interactivity: Unlock the Power of Arduino, Processing, and OpenFrameworks
2009-10-09, 23:00
Im Garten meiner Eltern habe ich eine Raubfliege gefunden, die gerade Beute gemacht hatte.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2009-10-09, 20:14
Hab ich grad in den Weiten des Netzes gefunden:
Get-ChildItem \\bigboy\share -recurse | where {$_.PSIsContainer} | Get-Acl | Select-Object Path, Owner -ExpandProperty Access |
Get-ChildItem \\bigboy\share -recurse | where {$_.PSIsContainer} | Get-Acl | Select-Object Path, Owner -ExpandProperty Access
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
Powershell Category:
Powershell |
Kommentare deaktiviert für Mit Powershell Windows Shares auslesen
2009-10-04, 11:34
Apache Ant ist das Build-Tool der Wahl für Java. DokuTransData ( >= Homepage hat mit ant_latex ein Tool veröffentlicht, mit dessen Hilfe man LaTeX in den Build-Prozess integrieren kann.
<?xml version="1.0" encoding="UTF-8"?>
<project name="AntLaTeX" default="doLaTeX" basedir=".">
<description>Compiles a LaTeX file.</description>
<taskdef name="latex"
classname="de.dokutransdata.antlatex.LaTeX"
classpath="ant_latex.jar"/>
<property name="ltx2.file" value="Antrag071105.tex"/>
<target name="doLaTeX">
<latex
latexfile="${ltx2.file}"
verbose="on"
clean="on"
pdftex="off"
workingDir="${basedir}"
/>
</target>
</project> |
<?xml version="1.0" encoding="UTF-8"?>
<project name="AntLaTeX" default="doLaTeX" basedir=".">
<description>Compiles a LaTeX file.</description>
<taskdef name="latex"
classname="de.dokutransdata.antlatex.LaTeX"
classpath="ant_latex.jar"/>
<property name="ltx2.file" value="Antrag071105.tex"/>
<target name="doLaTeX">
<latex
latexfile="${ltx2.file}"
verbose="on"
clean="on"
pdftex="off"
workingDir="${basedir}"
/>
</target>
</project>
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
2009-10-04, 11:31
Typographie läßt sich in Makro- und Mikrotypographie unterteilen. Während sich Makrotypographie mit Dingen wie Satzspiegel und Layout beschäftigt, zählt man zur Mikrotypographie den richtigen Satz von Symbolen, Anführungszeichen und Zahlen. Folgende Dokumente geben einen guten Überblick:
- Mikrotypographie-Regeln, Teil I von Marion Neubauer PDF
- Mikrotypographie-Regeln, Teil II von Marion Neubauer PDF
- Typographische Grundregeln und ihre Umsetzung in LaTeX von Werner Struckmann PDF
- typokurz – Einige wichtige typografische Regeln von Christoph Bier PDF
Mikrotypografie1:
http://www.dante.de/dante/DTK/PDF/komoedie_1996_4.pdf
Seite 12ff
Mikrotypografie2:
http://www.dante.de/dante/DTK/PDF/komoedie_1997_1.pdf
Seite 25ff
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
LaTeX Category:
LaTeX,
Artikel |
Kommentare deaktiviert für Mikrotypographie
2009-10-04, 11:30
Eine kleine LaTeX-Broschüre, die auf zwei Seiten all die Vorzüge des Satzsystems beschreibt, findet man mit den Quellen unter http://latex.silmaril.ie/brochure.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
LaTeX Category:
Artikel |
Kommentare deaktiviert für Broschüre zu LaTeX
2009-10-04, 11:28
Mit pdfLaTeX lassen sich auch Formulare erstellen, die am Rechner ausgefüllt werden können. Eine gute deutschsprachige Zusammenfassung der verschiedenen Befehle findet man unter http://www.ctan.org/tex-archive/info/pdf-forms-tutorial/de/forms.pdf. Mit PHP lassen sich die Formulareingaben auch kostengünstig weiterverarbeiten, Details finden sich auf http://www.dynamic-webpages.de/php/ref.fdf.php.
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
LaTeX Category:
LaTeX |
Kommentare deaktiviert für Formulare mit pdfLaTeX
2009-10-04, 11:26
Mit der folgenden kleinen Batch-Datei lassen sich unter Windows alle LaTeX Dateien in einem Verzeichnis übersetzen.
For /F %%F IN ('DIR /B *.tex') DO (
CALL pdflatex %%F
)
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website
Schlagwörter:
LaTeX Category:
Tipps & Tricks |
Kommentare deaktiviert für Via Batch alle *.tex Dateien übersetzen
2009-10-04, 11:25
Einige Seiten einer Diplomarbeit sollen ausgeklappt werden, d.h. auf der rechten Seite einer DIN A3 Seite gedruckt werden, die dann gefaltet und eingebunden wird. Lösungsweg Nr. 1, mit Acrobat Pro eine leere Seite vorn einfügen und dann mit dem PDF-Drucker zwei Seiten auf eine drucken, schlug fehl. Acrobat zeigt in der neuen Datei den Rahmen der einzelnen Seiten. Lösungsweg Nr. 2 lief dann über LaTeX und das pdfpages-Paket.
Für jede der zu druckenden Seiten hatte ich mit Acrobat ein 2-Seiten-Dokument angelegt (wäre natürlich auch mit LaTeX gegangen, ging aber schneller). Seite 1 blieb leer, Seite 2 enthielt die auszuklappende Seite. Schritt 2 war folgendes kleines LaTeX-Dokument:
\documentclass[a3paper]{article}
\usepackage[a3paper,landscape]{geometry}
\usepackage{pdfpages}
\begin{document}
\includepdf[nup=2x1,pages=1-2]{79beide.pdf}
\end{document} |
\documentclass[a3paper]{article}
\usepackage[a3paper,landscape]{geometry}
\usepackage{pdfpages}
\begin{document}
\includepdf[nup=2x1,pages=1-2]{79beide.pdf}
\end{document}
Mit pdfpages lassen sich PDF-Seiten sehr einfach in ein bestehendes Dokument integrieren, damit war die Angelegenheit in knapp 10 Minuten erledigt. Das leere Dokument habe ich auch mit LaTeX erzeugt:
\documentclass[a4paper]{article}
\begin{document}
\phantom{foobar}\pagestyle{empty}
\end{document} |
\documentclass[a4paper]{article}
\begin{document}
\phantom{foobar}\pagestyle{empty}
\end{document}
Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined.
Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.
More Posts - Website