![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Sistema de monitoramento de controle e temperatura - GEPOC
Dependencies: DHT MODSERIAL ModbusSlave mbed
Fork of FRDM_RGBLED by
main.cpp@3:dd9b3bcbd36a, 2015-11-09 (annotated)
- Committer:
- luizpietta
- Date:
- Mon Nov 09 18:59:28 2015 +0000
- Revision:
- 3:dd9b3bcbd36a
- Parent:
- 2:03e5c29343d1
- Child:
- 4:7bdab599ad88
Programa Termopares.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 0:cf8a48b1fb23 | 1 | #include "mbed.h" |
luizpietta | 3:dd9b3bcbd36a | 2 | #include <string.h> |
luizpietta | 3:dd9b3bcbd36a | 3 | #include <stdio.h> |
luizpietta | 3:dd9b3bcbd36a | 4 | |
luizpietta | 3:dd9b3bcbd36a | 5 | #include "ModbusSlave.h" |
luizpietta | 3:dd9b3bcbd36a | 6 | |
luizpietta | 3:dd9b3bcbd36a | 7 | #include "MODSERIAL.h" |
luizpietta | 3:dd9b3bcbd36a | 8 | |
luizpietta | 3:dd9b3bcbd36a | 9 | MODSERIAL Modbus(USBTX,USBRX); |
luizpietta | 3:dd9b3bcbd36a | 10 | |
luizpietta | 3:dd9b3bcbd36a | 11 | SPI myspi(PTD2, PTD3, PTD1); // mosi, miso, sclk |
luizpietta | 3:dd9b3bcbd36a | 12 | |
luizpietta | 3:dd9b3bcbd36a | 13 | //////////////// TERMOCOUPLERS ////////////////////////////// |
luizpietta | 3:dd9b3bcbd36a | 14 | |
luizpietta | 3:dd9b3bcbd36a | 15 | DigitalOut T1(PTC9); |
luizpietta | 3:dd9b3bcbd36a | 16 | DigitalOut T2(PTA13); |
luizpietta | 3:dd9b3bcbd36a | 17 | DigitalOut T3(PTD0); |
luizpietta | 3:dd9b3bcbd36a | 18 | DigitalOut T4(PTB3); |
luizpietta | 3:dd9b3bcbd36a | 19 | |
luizpietta | 3:dd9b3bcbd36a | 20 | DigitalOut ENABLE(PTC1); |
luizpietta | 3:dd9b3bcbd36a | 21 | |
luizpietta | 3:dd9b3bcbd36a | 22 | //DigitalOut LED(LED_RED); |
chris | 0:cf8a48b1fb23 | 23 | |
luizpietta | 3:dd9b3bcbd36a | 24 | float temp1 = 0; |
luizpietta | 3:dd9b3bcbd36a | 25 | float temp2 = 0; |
luizpietta | 3:dd9b3bcbd36a | 26 | float temp3 = 0; |
luizpietta | 3:dd9b3bcbd36a | 27 | float temp4 = 0; |
luizpietta | 3:dd9b3bcbd36a | 28 | |
chris | 0:cf8a48b1fb23 | 29 | |
luizpietta | 3:dd9b3bcbd36a | 30 | //////////////// MODBUS Registers (Slave) /////////////////// |
luizpietta | 3:dd9b3bcbd36a | 31 | enum |
luizpietta | 3:dd9b3bcbd36a | 32 | { |
luizpietta | 3:dd9b3bcbd36a | 33 | // just add or remove registers and your good to go... |
luizpietta | 3:dd9b3bcbd36a | 34 | // The first register starts at address 0 |
luizpietta | 3:dd9b3bcbd36a | 35 | TERM_1, // Pot analog read |
luizpietta | 3:dd9b3bcbd36a | 36 | TERM_2, // Temp analog read |
luizpietta | 3:dd9b3bcbd36a | 37 | TERM_3, // Light analog read |
luizpietta | 3:dd9b3bcbd36a | 38 | TERM_4, // Moisture analog read |
luizpietta | 3:dd9b3bcbd36a | 39 | HOLDING_REGS_SIZE |
luizpietta | 3:dd9b3bcbd36a | 40 | // total number of registers for function 3 and 16 share the same register array |
luizpietta | 3:dd9b3bcbd36a | 41 | }; |
luizpietta | 3:dd9b3bcbd36a | 42 | |
luizpietta | 3:dd9b3bcbd36a | 43 | unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array |
luizpietta | 3:dd9b3bcbd36a | 44 | |
luizpietta | 3:dd9b3bcbd36a | 45 | //////////////////////////////////////////////////////////// |
luizpietta | 3:dd9b3bcbd36a | 46 | |
luizpietta | 3:dd9b3bcbd36a | 47 | |
chris | 1:eabc6f5b51d6 | 48 | |
luizpietta | 3:dd9b3bcbd36a | 49 | uint16_t thermoparRead(void) |
luizpietta | 3:dd9b3bcbd36a | 50 | { |
luizpietta | 3:dd9b3bcbd36a | 51 | uint16_t high = 0; |
luizpietta | 3:dd9b3bcbd36a | 52 | uint16_t low = 0; |
luizpietta | 3:dd9b3bcbd36a | 53 | |
luizpietta | 3:dd9b3bcbd36a | 54 | bool scToVcc; |
luizpietta | 3:dd9b3bcbd36a | 55 | bool scToGnd; |
luizpietta | 3:dd9b3bcbd36a | 56 | bool opened; |
luizpietta | 3:dd9b3bcbd36a | 57 | bool fail; |
luizpietta | 3:dd9b3bcbd36a | 58 | |
luizpietta | 3:dd9b3bcbd36a | 59 | high = ((myspi.write(0)<<8)&0xff00) + (myspi.write(0)&0x00ff); |
luizpietta | 3:dd9b3bcbd36a | 60 | low = ((myspi.write(0)<<8)&0xff00) + (myspi.write(0)&0x00ff); |
luizpietta | 3:dd9b3bcbd36a | 61 | |
luizpietta | 3:dd9b3bcbd36a | 62 | // Get errors from data |
luizpietta | 3:dd9b3bcbd36a | 63 | scToVcc = low & 0x0004; |
luizpietta | 3:dd9b3bcbd36a | 64 | scToGnd = low & 0x0002; |
luizpietta | 3:dd9b3bcbd36a | 65 | opened = low & 0x0001; |
luizpietta | 3:dd9b3bcbd36a | 66 | fail = high & 0x0001; |
luizpietta | 3:dd9b3bcbd36a | 67 | |
luizpietta | 3:dd9b3bcbd36a | 68 | if(opened) return 2; |
luizpietta | 3:dd9b3bcbd36a | 69 | if(fail) return 1; |
luizpietta | 3:dd9b3bcbd36a | 70 | return high&0xfffc; |
luizpietta | 3:dd9b3bcbd36a | 71 | } |
luizpietta | 3:dd9b3bcbd36a | 72 | |
luizpietta | 3:dd9b3bcbd36a | 73 | |
luizpietta | 3:dd9b3bcbd36a | 74 | int main() |
luizpietta | 3:dd9b3bcbd36a | 75 | { |
luizpietta | 3:dd9b3bcbd36a | 76 | //CONFIGURE MODBUS |
luizpietta | 3:dd9b3bcbd36a | 77 | modbus_configure(&Modbus, 9600, 1, 2, &ENABLE, HOLDING_REGS_SIZE, holdingRegs); |
luizpietta | 3:dd9b3bcbd36a | 78 | |
luizpietta | 3:dd9b3bcbd36a | 79 | while (true) |
luizpietta | 3:dd9b3bcbd36a | 80 | { |
luizpietta | 3:dd9b3bcbd36a | 81 | modbus_update(); |
luizpietta | 3:dd9b3bcbd36a | 82 | |
luizpietta | 3:dd9b3bcbd36a | 83 | T1 = 0; |
luizpietta | 3:dd9b3bcbd36a | 84 | holdingRegs[TERM_1] = thermoparRead(); |
luizpietta | 3:dd9b3bcbd36a | 85 | T1 = 1; |
luizpietta | 3:dd9b3bcbd36a | 86 | |
luizpietta | 3:dd9b3bcbd36a | 87 | T2 = 0; |
luizpietta | 3:dd9b3bcbd36a | 88 | holdingRegs[TERM_2] = thermoparRead(); |
luizpietta | 3:dd9b3bcbd36a | 89 | T2 = 1; |
luizpietta | 3:dd9b3bcbd36a | 90 | |
luizpietta | 3:dd9b3bcbd36a | 91 | T3 = 0; |
luizpietta | 3:dd9b3bcbd36a | 92 | holdingRegs[TERM_3] = thermoparRead(); |
luizpietta | 3:dd9b3bcbd36a | 93 | T3 = 1; |
luizpietta | 3:dd9b3bcbd36a | 94 | |
luizpietta | 3:dd9b3bcbd36a | 95 | T4 = 0; |
luizpietta | 3:dd9b3bcbd36a | 96 | holdingRegs[TERM_4] = thermoparRead(); |
luizpietta | 3:dd9b3bcbd36a | 97 | T4 = 1; |
luizpietta | 3:dd9b3bcbd36a | 98 | } |
luizpietta | 3:dd9b3bcbd36a | 99 | } |
luizpietta | 3:dd9b3bcbd36a | 100 | |
luizpietta | 3:dd9b3bcbd36a | 101 | |
luizpietta | 3:dd9b3bcbd36a | 102 |