Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 EthernetInterface LM75B MMA7660 MQTT mbed-rtos mbed
Fork of IBMIoTClientEthernetExample by
Diff: LM75B/LM75B.h
- Revision:
- 9:58eb378727d9
- Parent:
- 8:80d49dd91542
- Child:
- 10:0b5e0dfee08e
--- a/LM75B/LM75B.h Wed Oct 01 13:27:35 2014 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/* LM75B Driver Library
- * Copyright (c) 2013 Neil Thiessen
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef LM75B_H
-#define LM75B_H
-
-#include "mbed.h"
-
-/** LM75B class.
- * Used for controlling an LM75B temperature sensor connected via I2C.
- *
- * Example:
- * @code
- * #include "mbed.h"
- * #include "LM75B.h"
- *
- * //Create an LM75B object at the default address (ADDRESS_0)
- * LM75B sensor(p28, p27);
- *
- * int main()
- * {
- * //Try to open the LM75B
- * if (sensor.open()) {
- * printf("Device detected!\n");
- *
- * while (1) {
- * //Print the current temperature
- * printf("Temp = %.3f\n", (float)sensor);
- *
- * //Sleep for 0.5 seconds
- * wait(0.5);
- * }
- * } else {
- * error("Device not detected!\n");
- * }
- * }
- * @endcode
- */
-class LM75B
-{
-public:
- /** Represents the different I2C address possibilities for the LM75B
- */
- enum Address {
- ADDRESS_0 = (0x48 << 1), /**< A[2:0] pins = 000 */
- ADDRESS_1 = (0x49 << 1), /**< A[2:0] pins = 001 */
- ADDRESS_2 = (0x4A << 1), /**< A[2:0] pins = 010 */
- ADDRESS_3 = (0x4B << 1), /**< A[2:0] pins = 011 */
- ADDRESS_4 = (0x4C << 1), /**< A[2:0] pins = 100 */
- ADDRESS_5 = (0x4D << 1), /**< A[2:0] pins = 101 */
- ADDRESS_6 = (0x4E << 1), /**< A[2:0] pins = 110 */
- ADDRESS_7 = (0x4F << 1) /**< A[2:0] pins = 111 */
- };
-
- /** Represents the power mode of the LM75B
- */
- enum PowerMode {
- POWER_NORMAL, /**< Chip is enabled and samples every 100ms */
- POWER_SHUTDOWN /**< Chip is in low-power shutdown mode */
- };
-
- /** Represents OS pin mode of the LM75B
- */
- enum OSMode {
- OS_COMPARATOR, /**< OS is asserted when the temperature reaches the alert threshold, and de-asserted when the temperature drops below the alert hysteresis threshold */
- OS_INTERRUPT /**< OS is asserted when the temperature reaches the alert threshold, or drops below the alert hysteresis threshold, and only de-asserted when a register has been read */
- };
-
- /** Represents OS pin polarity of the LM75B
- */
- enum OSPolarity {
- OS_ACTIVE_LOW, /**< OS is a logic low when asserted, and a logic high when de-asserted */
- OS_ACTIVE_HIGH /**< OS is a logic high when asserted, and a logic low when de-asserted */
- };
-
- /** Represents OS pin fault queue length of the LM75B
- */
- enum OSFaultQueue {
- OS_FAULT_QUEUE_1, /**< OS is asserted after 1 fault */
- OS_FAULT_QUEUE_2, /**< OS is asserted after 2 consecutive faults */
- OS_FAULT_QUEUE_4, /**< OS is asserted after 4 consecutive faults */
- OS_FAULT_QUEUE_6 /**< OS is asserted after 6 consecutive faults */
- };
-
- /** Create an LM75B object connected to the specified I2C pins with the specified I2C slave address
- *
- * @param sda The I2C data pin.
- * @param scl The I2C clock pin.
- * @param addr The I2C slave address (defaults to ADDRESS_0).
- * @param hz The I2C bus frequency (defaults to 400kHz).
- */
- LM75B(PinName sda, PinName scl, Address addr = ADDRESS_0, int hz = 400000);
-
- /** Probe for the LM75B and indicate if it's present on the bus
- *
- * @returns
- * 'true' if the device exists on the bus,
- * 'false' if the device doesn't exist on the bus.
- */
- bool open();
-
- /** Get the current power mode of the LM75B
- *
- * @returns The current power mode as a PowerMode enum.
- */
- LM75B::PowerMode powerMode();
-
- /** Set the power mode of the LM75B
- *
- * @param mode The new power mode as a PowerMode enum.
- */
- void powerMode(PowerMode mode);
-
- /** Get the current OS pin mode of the LM75B
- *
- * @returns The current OS pin mode as an OSMode enum.
- */
- LM75B::OSMode osMode();
-
- /** Set the OS pin mode of the LM75B
- *
- * @param mode The new OS pin mode as an OSMode enum.
- */
- void osMode(OSMode mode);
-
- /** Get the current OS pin polarity of the LM75B
- *
- * @returns The current OS pin polarity as an OSPolarity enum.
- */
- LM75B::OSPolarity osPolarity();
-
- /** Set the OS pin polarity of the LM75B
- *
- * @param polarity The new OS pin polarity as an OSPolarity enum.
- */
- void osPolarity(OSPolarity polarity);
-
- /** Get the current OS pin fault queue length of the LM75B
- *
- * @returns The current OS pin fault queue length as an OSFaultQueue enum.
- */
- LM75B::OSFaultQueue osFaultQueue();
-
- /** Set the OS pin fault queue length of the LM75B
- *
- * @param queue The new OS pin fault queue length as an OSFaultQueue enum.
- */
- void osFaultQueue(OSFaultQueue queue);
-
- /** Get the current alert temperature threshold of the LM75B
- *
- * @returns The current alert temperature threshold in °C.
- */
- float alertTemp();
-
- /** Set the alert temperature threshold of the LM75B
- *
- * @param temp The new alert temperature threshold in °C.
- */
- void alertTemp(float temp);
-
- /** Get the current alert temperature hysteresis threshold of the LM75B
- *
- * @returns The current alert temperature hysteresis threshold in °C.
- */
- float alertHyst();
-
- /** Set the alert temperature hysteresis threshold of the LM75B
- *
- * @param temp The new alert temperature hysteresis threshold in °C.
- */
- void alertHyst(float temp);
-
- /** Get the current temperature measurement of the LM75B
- *
- * @returns The current temperature measurement in °C.
- */
- float temp();
-
-#ifdef MBED_OPERATORS
- /** A shorthand for temp()
- *
- * @returns The current temperature measurement in °C.
- */
- operator float();
-#endif
-
-private:
- //I2C register addresses
- enum Register {
- REG_TEMP = 0x00,
- REG_CONF = 0x01,
- REG_THYST = 0x02,
- REG_TOS = 0x03
- };
-
- //Member variables
- I2C m_I2C;
- const int m_ADDR;
-
- //Internal functions
- char read8(char reg);
- void write8(char reg, char data);
- unsigned short read16(char reg);
- void write16(char reg, unsigned short data);
- float readAlertTempHelper(char reg);
- void writeAlertTempHelper(char reg, float temp);
-};
-
-#endif
