IR Sensor, PanicButton, OneWireTempSensor
[svn42.git] / rf433ctl / OneWire / examples / sample / sample.pde
diff --git a/rf433ctl/OneWire/examples/sample/sample.pde b/rf433ctl/OneWire/examples/sample/sample.pde
new file mode 100644 (file)
index 0000000..9124f52
--- /dev/null
@@ -0,0 +1,64 @@
+#include <OneWire.h>
+
+/* DS18S20 Temperature chip i/o */
+
+OneWire  ds(8);  // on pin 10
+
+void setup(void) {
+  Serial.begin(9600);
+}
+
+void loop(void) {
+  byte i;
+  byte present = 0;
+  byte data[12];
+  byte addr[8];
+  
+  if ( !ds.search(addr)) {
+    Serial.print("No more addresses.\n");
+    ds.reset_search();
+    delay(250);
+    return;
+  }
+  
+  Serial.print("R=");
+  for( i = 0; i < 8; i++) {
+    Serial.print(addr[i], HEX);
+    Serial.print(" ");
+  }
+
+  if ( OneWire::crc8( addr, 7) != addr[7]) {
+      Serial.print("CRC is not valid!\n");
+      return;
+  }
+  
+  if ( addr[0] != 0x10) {
+      Serial.print("Device is not a DS18S20 family device.\n");
+      return;
+  }
+
+  // The DallasTemperature library can do all this work for you!
+
+  ds.reset();
+  ds.select(addr);
+  ds.write(0x44,1);         // start conversion, with parasite power on at the end
+  
+  delay(1000);     // maybe 750ms is enough, maybe not
+  // we might do a ds.depower() here, but the reset will take care of it.
+  
+  present = ds.reset();
+  ds.select(addr);    
+  ds.write(0xBE);         // Read Scratchpad
+
+  Serial.print("P=");
+  Serial.print(present,HEX);
+  Serial.print(" ");
+  for ( i = 0; i < 9; i++) {           // we need 9 bytes
+    data[i] = ds.read();
+    Serial.print(data[i], HEX);
+    Serial.print(" ");
+  }
+  Serial.print(" CRC=");
+  Serial.print( OneWire::crc8( data, 8), HEX);
+  Serial.println();
+}