Dependencies:   mbed

Fork of DS1820_HelloWorld by jack zen

Files at this revision

API Documentation at this revision

Comitter:
jack__zen
Date:
Wed Sep 06 07:38:39 2017 +0000
Parent:
5:c27ca1ae3915
Commit message:

Changed in this revision

DS18B20.lib Show diff for this revision Revisions of this file
DS18S20.lib Show diff for this revision Revisions of this file
DebugTrace.lib Show diff for this revision Revisions of this file
OneWire.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
max6675.cpp Show annotated file Show diff for this revision Revisions of this file
max6675.h Show annotated file Show diff for this revision Revisions of this file
--- a/DS18B20.lib	Wed Sep 06 05:37:29 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/jack__zen/code/DS18B20/#cf42e1112753
--- a/DS18S20.lib	Wed Sep 06 05:37:29 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/jack__zen/code/DS18S20/#d7eea3b21e1d
--- a/DebugTrace.lib	Wed Sep 06 05:37:29 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/jack__zen/code/DebugTrace/#1934d9b9fd80
--- a/OneWire.lib	Wed Sep 06 05:37:29 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://developer.mbed.org/users/jack__zen/code/OneWire/#a47e8ec71a4e
--- a/main.cpp	Wed Sep 06 05:37:29 2017 +0000
+++ b/main.cpp	Wed Sep 06 07:38:39 2017 +0000
@@ -1,61 +1,20 @@
-/*
-* OneWireCRC/OneWireThermometer demo.
-*
-* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk>
-*
-* This file is part of OneWireCRC/OneWireThermometer.
-*
-* OneWireCRC/OneWireThermometer is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation, either version 3 of the License, or
-* (at your option) any later version.
-* 
-* OneWireCRC/OneWireThermometer is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with OneWireCRC/OneWireThermometer0.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-////////////////////////////////////////////////////////////////////
-// Test code to read temperature from a Maxim DS18B20 or DS18S20
-// 1-wire device 
-////////////////////////////////////////////////////////////////////
-
-#include <mbed.h>
-#include "DS18S20.h"
-#include "DS18B20.h"
-#include "OneWireDefs.h"
-
-//#define THERMOMETER DS18S20
-#define THERMOMETER DS18B20
-//Serial pc(USBTX, USBRX);
-int main()
-{
-    // device( crcOn, useAddress, parasitic, mbed pin )
-    THERMOMETER device(true, true, false, PA_9);
-    //pc.baud(9600);
-    while (!device.initialize());    // keep calling until it works
-    
-    while (true)
-    {
-        // changing the resolutions only affects the DS18B20. The DS18S20 is fixed.
-        device.setResolution(nineBit);
-        device.readTemperature(); 
-        wait(2);
- /*       device.setResolution(tenBit);
-        device.readTemperature(); 
-        wait(2);
-        device.setResolution(elevenBit);
-        device.readTemperature(); 
-        wait(2);
-        device.setResolution(twelveBit);
-        device.readTemperature(); 
-        wait(2);
- */      
-    }
-     
-    return EXIT_SUCCESS;
-}
+#include "mbed.h"
+#include "max6675.h"
+ 
+SPI spi(PA_7,PA_6,PA_5);
+max6675 max(spi,PB_6);
+ 
+Serial pc(USBTX,USBRX);
+ 
+int main() {
+    pc.baud(9600);
+    while (1) {
+    
+        float temp = max.read_temp();
+        pc.printf("\n\rT: %f",temp );
+       
+        wait(.25);
+    }
+ 
+ 
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/max6675.cpp	Wed Sep 06 07:38:39 2017 +0000
@@ -0,0 +1,42 @@
+
+#include <mbed.h>
+#include "max6675.h"
+
+max6675::max6675(SPI& _spi, PinName _ncs) : spi(_spi), ncs(_ncs) {
+
+}
+
+float max6675::read_temp() {
+    short value = 0;
+    float temp = 0;
+    
+    uint8_t highByte=0;
+    uint8_t lowByte=0;
+    
+    select();
+    wait(.25); //This delay is needed else it does'nt seem to update the temp
+
+    highByte = spi.write(0);
+    lowByte = spi.write(0);
+    deselect();
+
+
+    if (lowByte & (1<<2)) {
+        error("No Probe");
+    } else {
+        value = (highByte << 5 | lowByte>>3);
+    }
+
+    temp = (value*0.25); // Multiply the value by 0.25 to get temp in ˚C or
+                         //  * (9.0/5.0)) + 32.0;   // Convert value to ˚F (ensure proper floats!)
+
+return temp;
+}
+
+void max6675::select() {
+    ncs = 0;
+}
+
+void max6675::deselect() {
+    ncs = 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/max6675.h	Wed Sep 06 07:38:39 2017 +0000
@@ -0,0 +1,25 @@
+#ifndef MAX6675_h
+#define MAX6675_h
+
+#include "mbed.h"
+
+class max6675
+{
+    SPI& spi;
+    DigitalOut ncs;
+  public:
+  
+    max6675(SPI& _spi, PinName _ncs);
+    void select();
+    void deselect();
+    
+    float read_temp();
+  private:
+    PinName _CS_pin;
+    PinName _SO_pin;
+    PinName _SCK_pin;
+    int _units;
+    float _error;
+};
+
+#endif