the program have one sensor acs712 and moduleds1302

Dependencies:   FATFileSystem mbed

Committer:
RUBENTEC
Date:
Thu Jun 08 20:17:34 2017 +0000
Revision:
0:b82abca089ac
ds1302-bluetooth-acs712

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RUBENTEC 0:b82abca089ac 1 //The license: Its on the internet, have fun with it.
RUBENTEC 0:b82abca089ac 2
RUBENTEC 0:b82abca089ac 3 #ifndef DS1302_H
RUBENTEC 0:b82abca089ac 4 #define DS1302_H
RUBENTEC 0:b82abca089ac 5
RUBENTEC 0:b82abca089ac 6 #include "mbed.h"
RUBENTEC 0:b82abca089ac 7
RUBENTEC 0:b82abca089ac 8 /**
RUBENTEC 0:b82abca089ac 9 * Library to make use of the DS1302 timekeeping IC
RUBENTEC 0:b82abca089ac 10 *
RUBENTEC 0:b82abca089ac 11 * The library functions the same as the standard mbed time function,
RUBENTEC 0:b82abca089ac 12 * only now you have to first make a DS1302 object and apply the
RUBENTEC 0:b82abca089ac 13 * functions on the object.
RUBENTEC 0:b82abca089ac 14 *
RUBENTEC 0:b82abca089ac 15 * Example code:
RUBENTEC 0:b82abca089ac 16 * @code
RUBENTEC 0:b82abca089ac 17 * #define SCLK PTC5
RUBENTEC 0:b82abca089ac 18 * #define IO PTC4
RUBENTEC 0:b82abca089ac 19 * #define CE PTC3
RUBENTEC 0:b82abca089ac 20 *
RUBENTEC 0:b82abca089ac 21 * //Comment this line if the DS1302 is already running
RUBENTEC 0:b82abca089ac 22 * #define INITIAL_RUN
RUBENTEC 0:b82abca089ac 23 *
RUBENTEC 0:b82abca089ac 24 * #include "mbed.h"
RUBENTEC 0:b82abca089ac 25 * #include "DS1302.h"
RUBENTEC 0:b82abca089ac 26 *
RUBENTEC 0:b82abca089ac 27 * DS1302 clk(SCLK, IO, PTC3);
RUBENTEC 0:b82abca089ac 28 *
RUBENTEC 0:b82abca089ac 29 * int main() {
RUBENTEC 0:b82abca089ac 30 * #ifdef INITIAL_RUN
RUBENTEC 0:b82abca089ac 31 * clk.set_time(1256729737);
RUBENTEC 0:b82abca089ac 32 * #endif
RUBENTEC 0:b82abca089ac 33 *
RUBENTEC 0:b82abca089ac 34 * char storedByte = clk.recallByte(0);
RUBENTEC 0:b82abca089ac 35 * printf("Stored byte was %d, now increasing by one\r\n", storedByte);
RUBENTEC 0:b82abca089ac 36 * clk.storeByte(0, storedByte + 1);
RUBENTEC 0:b82abca089ac 37 *
RUBENTEC 0:b82abca089ac 38 * while(1) {
RUBENTEC 0:b82abca089ac 39 * time_t seconds = clk.time(NULL);
RUBENTEC 0:b82abca089ac 40 * printf("Time as a basic string = %s\r", ctime(&seconds));
RUBENTEC 0:b82abca089ac 41 * wait(1);
RUBENTEC 0:b82abca089ac 42 * }
RUBENTEC 0:b82abca089ac 43 * }
RUBENTEC 0:b82abca089ac 44 * @endcode
RUBENTEC 0:b82abca089ac 45 *
RUBENTEC 0:b82abca089ac 46 * See for example http://mbed.org/handbook/Time for general usage
RUBENTEC 0:b82abca089ac 47 * of C time functions.
RUBENTEC 0:b82abca089ac 48 *
RUBENTEC 0:b82abca089ac 49 * Trickle charging is not supported
RUBENTEC 0:b82abca089ac 50 **/
RUBENTEC 0:b82abca089ac 51 class DS1302
RUBENTEC 0:b82abca089ac 52 {
RUBENTEC 0:b82abca089ac 53 public:
RUBENTEC 0:b82abca089ac 54 /**
RUBENTEC 0:b82abca089ac 55 * Register map
RUBENTEC 0:b82abca089ac 56 */
RUBENTEC 0:b82abca089ac 57 enum {
RUBENTEC 0:b82abca089ac 58 Seconds = 0x80,
RUBENTEC 0:b82abca089ac 59 Minutes = 0x82,
RUBENTEC 0:b82abca089ac 60 Hours = 0x84,
RUBENTEC 0:b82abca089ac 61 Dates = 0x86,
RUBENTEC 0:b82abca089ac 62 Months = 0x88,
RUBENTEC 0:b82abca089ac 63 Days = 0x8A,
RUBENTEC 0:b82abca089ac 64 Years = 0x8C,
RUBENTEC 0:b82abca089ac 65 WriteProtect = 0x8E,
RUBENTEC 0:b82abca089ac 66 Charge = 0x90,
RUBENTEC 0:b82abca089ac 67 ClockBurst = 0xBE,
RUBENTEC 0:b82abca089ac 68 RAMBase = 0xC0
RUBENTEC 0:b82abca089ac 69 };
RUBENTEC 0:b82abca089ac 70
RUBENTEC 0:b82abca089ac 71 /**
RUBENTEC 0:b82abca089ac 72 * Create a new DS1302 object
RUBENTEC 0:b82abca089ac 73 *
RUBENTEC 0:b82abca089ac 74 * @param SCLK the pin to which SCLK is connectd
RUBENTEC 0:b82abca089ac 75 * @param IO the pin to which IO is connectd
RUBENTEC 0:b82abca089ac 76 * @param CE the pin to which CE is connected (also called RST)
RUBENTEC 0:b82abca089ac 77 */
RUBENTEC 0:b82abca089ac 78 DS1302(PinName SCLK, PinName IO, PinName CE);
RUBENTEC 0:b82abca089ac 79
RUBENTEC 0:b82abca089ac 80 /** Set the current time
RUBENTEC 0:b82abca089ac 81 *
RUBENTEC 0:b82abca089ac 82 * Initialises and sets the time of the DS1302
RUBENTEC 0:b82abca089ac 83 * to the time represented by the number of seconds since January 1, 1970
RUBENTEC 0:b82abca089ac 84 * (the UNIX timestamp).
RUBENTEC 0:b82abca089ac 85 *
RUBENTEC 0:b82abca089ac 86 * @param t Number of seconds since January 1, 1970 (the UNIX timestamp)
RUBENTEC 0:b82abca089ac 87 *
RUBENTEC 0:b82abca089ac 88 */
RUBENTEC 0:b82abca089ac 89 void set_time(time_t t);
RUBENTEC 0:b82abca089ac 90
RUBENTEC 0:b82abca089ac 91 /** Get the current time
RUBENTEC 0:b82abca089ac 92 *
RUBENTEC 0:b82abca089ac 93 * Use other functions to convert this value, see: http://mbed.org/handbook/Time
RUBENTEC 0:b82abca089ac 94 *
RUBENTEC 0:b82abca089ac 95 * @param t ignored, supply NULL
RUBENTEC 0:b82abca089ac 96 * @return number of seconds since January 1, 1970
RUBENTEC 0:b82abca089ac 97 */
RUBENTEC 0:b82abca089ac 98 time_t time(time_t *t = NULL);
RUBENTEC 0:b82abca089ac 99
RUBENTEC 0:b82abca089ac 100 /**
RUBENTEC 0:b82abca089ac 101 * Store a byte in the battery-backed RAM
RUBENTEC 0:b82abca089ac 102 *
RUBENTEC 0:b82abca089ac 103 * @param address address where to store the data (0-30)
RUBENTEC 0:b82abca089ac 104 * @param data the byte to store
RUBENTEC 0:b82abca089ac 105 */
RUBENTEC 0:b82abca089ac 106 void storeByte(char address, char data);
RUBENTEC 0:b82abca089ac 107
RUBENTEC 0:b82abca089ac 108 /**
RUBENTEC 0:b82abca089ac 109 * Recall a byte from the battery-backed RAM
RUBENTEC 0:b82abca089ac 110 *
RUBENTEC 0:b82abca089ac 111 * @param address address where to retrieve the data (0-30)
RUBENTEC 0:b82abca089ac 112 * @return the stored data
RUBENTEC 0:b82abca089ac 113 */
RUBENTEC 0:b82abca089ac 114 char recallByte(char address);
RUBENTEC 0:b82abca089ac 115
RUBENTEC 0:b82abca089ac 116 /**
RUBENTEC 0:b82abca089ac 117 * Read a register
RUBENTEC 0:b82abca089ac 118 *
RUBENTEC 0:b82abca089ac 119 * Only required to for example manually set trickle charge register
RUBENTEC 0:b82abca089ac 120 *
RUBENTEC 0:b82abca089ac 121 * @param reg register to read
RUBENTEC 0:b82abca089ac 122 * @return contents of the register
RUBENTEC 0:b82abca089ac 123 */
RUBENTEC 0:b82abca089ac 124 char readReg(char reg);
RUBENTEC 0:b82abca089ac 125
RUBENTEC 0:b82abca089ac 126 /**
RUBENTEC 0:b82abca089ac 127 * Write a register
RUBENTEC 0:b82abca089ac 128 *
RUBENTEC 0:b82abca089ac 129 * Only required to for example manually set trickle charge register
RUBENTEC 0:b82abca089ac 130 *
RUBENTEC 0:b82abca089ac 131 * @param reg register to write
RUBENTEC 0:b82abca089ac 132 * @param val contents of the register to write
RUBENTEC 0:b82abca089ac 133 */
RUBENTEC 0:b82abca089ac 134 void writeReg(char reg, char val);
RUBENTEC 0:b82abca089ac 135
RUBENTEC 0:b82abca089ac 136 protected:
RUBENTEC 0:b82abca089ac 137
RUBENTEC 0:b82abca089ac 138 void writeByte(char data);
RUBENTEC 0:b82abca089ac 139 char readByte(void);
RUBENTEC 0:b82abca089ac 140
RUBENTEC 0:b82abca089ac 141 DigitalOut _SCLK;
RUBENTEC 0:b82abca089ac 142 DigitalInOut _IO;
RUBENTEC 0:b82abca089ac 143 DigitalOut _CE;
RUBENTEC 0:b82abca089ac 144 bool writeProtect;
RUBENTEC 0:b82abca089ac 145
RUBENTEC 0:b82abca089ac 146
RUBENTEC 0:b82abca089ac 147 };
RUBENTEC 0:b82abca089ac 148
RUBENTEC 0:b82abca089ac 149
RUBENTEC 0:b82abca089ac 150
RUBENTEC 0:b82abca089ac 151 #endif