Maček Dorijan Miljković Dominik Napon i temperatura sa istog slave-a
Dependencies: Display1602 mbed-rtos mbed nRF24L01P
main.cpp@1:0f605b9eed83, 2016-01-27 (annotated)
- Committer:
- DorijanMacek
- Date:
- Wed Jan 27 18:18:00 2016 +0000
- Revision:
- 1:0f605b9eed83
- Parent:
- 0:d74d1d840f60
- Child:
- 2:d0f85a573b89
radi ali ne znam zakaj
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DorijanMacek | 0:d74d1d840f60 | 1 | #include "mbed.h" |
DorijanMacek | 1:0f605b9eed83 | 2 | #include "rtos.h" |
DorijanMacek | 0:d74d1d840f60 | 3 | #include "nRF24L01P.h" |
DorijanMacek | 0:d74d1d840f60 | 4 | #include "Display1602.h" |
DorijanMacek | 0:d74d1d840f60 | 5 | |
DorijanMacek | 1:0f605b9eed83 | 6 | Mutex stdio_mutex; |
DorijanMacek | 1:0f605b9eed83 | 7 | |
DorijanMacek | 0:d74d1d840f60 | 8 | |
DorijanMacek | 0:d74d1d840f60 | 9 | I2C MSP430G(p9, p10); //sda, sc1 |
DorijanMacek | 0:d74d1d840f60 | 10 | nRF24L01P odasiljac(p11,p12,p13,p14,p28,p27); //// mosi, miso, sck, csn, ce, irq |
DorijanMacek | 0:d74d1d840f60 | 11 | AnalogIn upDown(p15); |
DorijanMacek | 0:d74d1d840f60 | 12 | AnalogIn leftRight(p16); |
DorijanMacek | 0:d74d1d840f60 | 13 | Display1602 display(p19, p20, p21, p22, p23, p24,p25,p26,p29,p30,p18); |
DorijanMacek | 0:d74d1d840f60 | 14 | Serial pc(USBTX, USBRX); |
DorijanMacek | 0:d74d1d840f60 | 15 | |
DorijanMacek | 0:d74d1d840f60 | 16 | DigitalOut myled1(LED1); |
DorijanMacek | 0:d74d1d840f60 | 17 | DigitalOut myled2(LED2); |
DorijanMacek | 0:d74d1d840f60 | 18 | DigitalOut myled3(LED3); |
DorijanMacek | 0:d74d1d840f60 | 19 | DigitalOut myled4(LED4); |
DorijanMacek | 0:d74d1d840f60 | 20 | |
DorijanMacek | 0:d74d1d840f60 | 21 | void startLCD(void); |
DorijanMacek | 0:d74d1d840f60 | 22 | void startNRF(int); |
DorijanMacek | 1:0f605b9eed83 | 23 | |
DorijanMacek | 1:0f605b9eed83 | 24 | void printTempAndVoltOnLCD(void const *args); |
DorijanMacek | 1:0f605b9eed83 | 25 | void printJoystickOnLCD(void const *args); |
DorijanMacek | 1:0f605b9eed83 | 26 | |
DorijanMacek | 1:0f605b9eed83 | 27 | void readJoystick(void const *args); |
DorijanMacek | 1:0f605b9eed83 | 28 | void readTempFromMSP430G(void const *args); |
DorijanMacek | 1:0f605b9eed83 | 29 | void readVoltFromMSP430G(void const *args); |
DorijanMacek | 1:0f605b9eed83 | 30 | |
DorijanMacek | 1:0f605b9eed83 | 31 | //nrf |
DorijanMacek | 1:0f605b9eed83 | 32 | const int transfer_size = 4; |
DorijanMacek | 1:0f605b9eed83 | 33 | char txData[transfer_size],rxData[transfer_size]; |
DorijanMacek | 1:0f605b9eed83 | 34 | int txDataCnt = 0; |
DorijanMacek | 1:0f605b9eed83 | 35 | int rxDataCnt = 0; |
DorijanMacek | 1:0f605b9eed83 | 36 | |
DorijanMacek | 1:0f605b9eed83 | 37 | //joystick |
DorijanMacek | 1:0f605b9eed83 | 38 | float velocity=upDown; |
DorijanMacek | 1:0f605b9eed83 | 39 | float direction =leftRight; |
DorijanMacek | 1:0f605b9eed83 | 40 | |
DorijanMacek | 1:0f605b9eed83 | 41 | //MSP430g |
DorijanMacek | 1:0f605b9eed83 | 42 | const int addr= 0x94; |
DorijanMacek | 1:0f605b9eed83 | 43 | float temp=0.0; |
DorijanMacek | 1:0f605b9eed83 | 44 | float volt=0.0; |
DorijanMacek | 1:0f605b9eed83 | 45 | |
DorijanMacek | 1:0f605b9eed83 | 46 | int testT=0; |
DorijanMacek | 1:0f605b9eed83 | 47 | int testY=0; |
DorijanMacek | 1:0f605b9eed83 | 48 | |
DorijanMacek | 1:0f605b9eed83 | 49 | Semaphore semMSP430G(1); |
DorijanMacek | 1:0f605b9eed83 | 50 | Semaphore semLCD(1); |
DorijanMacek | 1:0f605b9eed83 | 51 | Semaphore semJoystick(1); |
DorijanMacek | 0:d74d1d840f60 | 52 | |
DorijanMacek | 0:d74d1d840f60 | 53 | int main() |
DorijanMacek | 0:d74d1d840f60 | 54 | { |
DorijanMacek | 1:0f605b9eed83 | 55 | |
DorijanMacek | 0:d74d1d840f60 | 56 | |
DorijanMacek | 0:d74d1d840f60 | 57 | |
DorijanMacek | 0:d74d1d840f60 | 58 | |
DorijanMacek | 0:d74d1d840f60 | 59 | startLCD(); |
DorijanMacek | 0:d74d1d840f60 | 60 | startNRF(transfer_size); |
DorijanMacek | 1:0f605b9eed83 | 61 | wait(1); |
DorijanMacek | 1:0f605b9eed83 | 62 | |
DorijanMacek | 1:0f605b9eed83 | 63 | //Thread t0(readJoystick, (void *)"readJoystick"); |
DorijanMacek | 1:0f605b9eed83 | 64 | //Thread t1(readTempFromMSP430G, (void *)"readTemp"); |
DorijanMacek | 1:0f605b9eed83 | 65 | ////Thread t2(readVoltFromMSP430G, (void *)"readVoltage"); |
DorijanMacek | 1:0f605b9eed83 | 66 | //Thread t3(printTempAndVoltOnLCD, (void *)"printTemp"); |
DorijanMacek | 1:0f605b9eed83 | 67 | //Thread t4(printJoystickOnLCD, (void *)"printJoytick"); |
DorijanMacek | 1:0f605b9eed83 | 68 | |
DorijanMacek | 1:0f605b9eed83 | 69 | |
DorijanMacek | 1:0f605b9eed83 | 70 | |
DorijanMacek | 1:0f605b9eed83 | 71 | while(1){ |
DorijanMacek | 1:0f605b9eed83 | 72 | //Thread t0(readJoystick, (void *)"readJoystick"); |
DorijanMacek | 1:0f605b9eed83 | 73 | //Thread t1(readTempFromMSP430G, (void *)"readTemp"); |
DorijanMacek | 1:0f605b9eed83 | 74 | //Thread t2(readVoltFromMSP430G, (void *)"readVoltage"); |
DorijanMacek | 1:0f605b9eed83 | 75 | //Thread t3(printTempAndVoltOnLCD, (void *)"printTemp"); |
DorijanMacek | 1:0f605b9eed83 | 76 | //Thread t4(printJoystickOnLCD, (void *)"printJoytick"); |
DorijanMacek | 1:0f605b9eed83 | 77 | |
DorijanMacek | 1:0f605b9eed83 | 78 | printTempAndVoltOnLCD((void *)"printemAndVolt"); |
DorijanMacek | 1:0f605b9eed83 | 79 | printJoystickOnLCD((void *)"printjoystick"); |
DorijanMacek | 1:0f605b9eed83 | 80 | readJoystick((void *)"readJoystick"); |
DorijanMacek | 1:0f605b9eed83 | 81 | readTempFromMSP430G((void *)"readTemp"); |
DorijanMacek | 0:d74d1d840f60 | 82 | |
DorijanMacek | 0:d74d1d840f60 | 83 | |
DorijanMacek | 1:0f605b9eed83 | 84 | //readVoltFromMSP430G((void *)"readVoltage"); |
DorijanMacek | 1:0f605b9eed83 | 85 | //Thread printOnLCD(temp,volt,1); |
DorijanMacek | 1:0f605b9eed83 | 86 | //Thread t2(test_thread, (void *)"Th 2"); |
DorijanMacek | 0:d74d1d840f60 | 87 | } |
DorijanMacek | 1:0f605b9eed83 | 88 | |
DorijanMacek | 0:d74d1d840f60 | 89 | } |
DorijanMacek | 0:d74d1d840f60 | 90 | |
DorijanMacek | 0:d74d1d840f60 | 91 | void startLCD() |
DorijanMacek | 0:d74d1d840f60 | 92 | { |
DorijanMacek | 0:d74d1d840f60 | 93 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 94 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 95 | display.printf("Dorijan Macek"); // print on screen |
DorijanMacek | 0:d74d1d840f60 | 96 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 97 | display.printf("TVZ 2015 / 2016"); |
DorijanMacek | 0:d74d1d840f60 | 98 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 99 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 100 | display.printf("Dobro dosli "); |
DorijanMacek | 0:d74d1d840f60 | 101 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 102 | display.printf("................"); |
DorijanMacek | 0:d74d1d840f60 | 103 | wait(0.5); |
DorijanMacek | 0:d74d1d840f60 | 104 | } |
DorijanMacek | 0:d74d1d840f60 | 105 | void startNRF(int size) |
DorijanMacek | 0:d74d1d840f60 | 106 | { |
DorijanMacek | 0:d74d1d840f60 | 107 | odasiljac.setTransferSize( size); |
DorijanMacek | 0:d74d1d840f60 | 108 | odasiljac.setTransmitMode(); |
DorijanMacek | 0:d74d1d840f60 | 109 | odasiljac.enable(); |
DorijanMacek | 0:d74d1d840f60 | 110 | |
DorijanMacek | 0:d74d1d840f60 | 111 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 112 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 113 | display.printf( "Odasiljac "); |
DorijanMacek | 0:d74d1d840f60 | 114 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 115 | pc.printf( " "); |
DorijanMacek | 0:d74d1d840f60 | 116 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 117 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 118 | |
DorijanMacek | 0:d74d1d840f60 | 119 | display.printf( "Frequency : "); |
DorijanMacek | 0:d74d1d840f60 | 120 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 121 | display.printf ("%d MHz",odasiljac.getRfFrequency() ); |
DorijanMacek | 0:d74d1d840f60 | 122 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 123 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 124 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 125 | |
DorijanMacek | 0:d74d1d840f60 | 126 | display.printf( "Output power : "); |
DorijanMacek | 0:d74d1d840f60 | 127 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 128 | display.printf("%d dBm", odasiljac.getRfOutputPower() ); |
DorijanMacek | 0:d74d1d840f60 | 129 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 130 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 131 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 132 | |
DorijanMacek | 0:d74d1d840f60 | 133 | display.printf( "Data Rate : "); |
DorijanMacek | 0:d74d1d840f60 | 134 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 135 | display.printf("%d kbps", odasiljac.getAirDataRate() ); |
DorijanMacek | 0:d74d1d840f60 | 136 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 137 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 138 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 139 | |
DorijanMacek | 0:d74d1d840f60 | 140 | display.printf( "TX Address : "); |
DorijanMacek | 0:d74d1d840f60 | 141 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 142 | display.printf("0x%010llX", odasiljac.getTxAddress() ); |
DorijanMacek | 0:d74d1d840f60 | 143 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 144 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 145 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 146 | |
DorijanMacek | 0:d74d1d840f60 | 147 | display.printf( "RX Address : "); |
DorijanMacek | 0:d74d1d840f60 | 148 | display.SetXY(0,1); |
DorijanMacek | 0:d74d1d840f60 | 149 | display.printf("0x%010llX", odasiljac.getRxAddress() ); |
DorijanMacek | 0:d74d1d840f60 | 150 | wait(1); |
DorijanMacek | 0:d74d1d840f60 | 151 | display.Clear(); |
DorijanMacek | 0:d74d1d840f60 | 152 | display.SetXY(0,0); |
DorijanMacek | 0:d74d1d840f60 | 153 | |
DorijanMacek | 0:d74d1d840f60 | 154 | wait(0.5); |
DorijanMacek | 0:d74d1d840f60 | 155 | |
DorijanMacek | 1:0f605b9eed83 | 156 | } |
DorijanMacek | 1:0f605b9eed83 | 157 | |
DorijanMacek | 1:0f605b9eed83 | 158 | void printTempAndVoltOnLCD(void const *args) |
DorijanMacek | 1:0f605b9eed83 | 159 | { |
DorijanMacek | 1:0f605b9eed83 | 160 | //while(true) |
DorijanMacek | 1:0f605b9eed83 | 161 | //{ |
DorijanMacek | 1:0f605b9eed83 | 162 | semLCD.wait(1); |
DorijanMacek | 1:0f605b9eed83 | 163 | |
DorijanMacek | 1:0f605b9eed83 | 164 | int znakgore=30; |
DorijanMacek | 1:0f605b9eed83 | 165 | int znakdolje=31; |
DorijanMacek | 1:0f605b9eed83 | 166 | int znaklijevo=174; |
DorijanMacek | 1:0f605b9eed83 | 167 | int znakdesno=175; |
DorijanMacek | 1:0f605b9eed83 | 168 | |
DorijanMacek | 1:0f605b9eed83 | 169 | display.SetXY(8,0); |
DorijanMacek | 1:0f605b9eed83 | 170 | display.printf("T = %.2f ",temp); |
DorijanMacek | 1:0f605b9eed83 | 171 | display.SetXY(8,1); |
DorijanMacek | 1:0f605b9eed83 | 172 | display.printf("V = %.2f ",volt); |
DorijanMacek | 1:0f605b9eed83 | 173 | pc.printf("printTempAndVoltOnLCD \n\r"); |
DorijanMacek | 1:0f605b9eed83 | 174 | |
DorijanMacek | 1:0f605b9eed83 | 175 | |
DorijanMacek | 1:0f605b9eed83 | 176 | Thread::wait(1000); |
DorijanMacek | 1:0f605b9eed83 | 177 | semLCD.release(); |
DorijanMacek | 1:0f605b9eed83 | 178 | //} |
DorijanMacek | 1:0f605b9eed83 | 179 | } |
DorijanMacek | 0:d74d1d840f60 | 180 | |
DorijanMacek | 1:0f605b9eed83 | 181 | void printJoystickOnLCD(void const *args) |
DorijanMacek | 0:d74d1d840f60 | 182 | { |
DorijanMacek | 1:0f605b9eed83 | 183 | //while(true) |
DorijanMacek | 1:0f605b9eed83 | 184 | //{ |
DorijanMacek | 1:0f605b9eed83 | 185 | semLCD.wait(1); |
DorijanMacek | 1:0f605b9eed83 | 186 | |
DorijanMacek | 1:0f605b9eed83 | 187 | display.SetXY(0,0); |
DorijanMacek | 1:0f605b9eed83 | 188 | display.printf("Up %.2f ",velocity); |
DorijanMacek | 1:0f605b9eed83 | 189 | display.SetXY(0,1); |
DorijanMacek | 1:0f605b9eed83 | 190 | display.printf("LR %.2f ",direction); |
DorijanMacek | 1:0f605b9eed83 | 191 | pc.printf("printJoystickOnLCD \n\r "); |
DorijanMacek | 1:0f605b9eed83 | 192 | |
DorijanMacek | 1:0f605b9eed83 | 193 | |
DorijanMacek | 1:0f605b9eed83 | 194 | Thread::wait(1000); |
DorijanMacek | 1:0f605b9eed83 | 195 | semLCD.release(); |
DorijanMacek | 1:0f605b9eed83 | 196 | //} |
DorijanMacek | 1:0f605b9eed83 | 197 | } |
DorijanMacek | 1:0f605b9eed83 | 198 | |
DorijanMacek | 1:0f605b9eed83 | 199 | |
DorijanMacek | 1:0f605b9eed83 | 200 | |
DorijanMacek | 1:0f605b9eed83 | 201 | void readJoystick(void const *args) |
DorijanMacek | 1:0f605b9eed83 | 202 | { |
DorijanMacek | 1:0f605b9eed83 | 203 | //while(true) |
DorijanMacek | 1:0f605b9eed83 | 204 | //{ |
DorijanMacek | 1:0f605b9eed83 | 205 | semJoystick.wait(1); |
DorijanMacek | 1:0f605b9eed83 | 206 | |
DorijanMacek | 1:0f605b9eed83 | 207 | velocity=upDown; |
DorijanMacek | 1:0f605b9eed83 | 208 | direction =leftRight; |
DorijanMacek | 1:0f605b9eed83 | 209 | pc.printf("readJoystick \n\r "); |
DorijanMacek | 1:0f605b9eed83 | 210 | |
DorijanMacek | 1:0f605b9eed83 | 211 | Thread::wait(50); |
DorijanMacek | 1:0f605b9eed83 | 212 | semJoystick.release(); |
DorijanMacek | 1:0f605b9eed83 | 213 | //} |
DorijanMacek | 1:0f605b9eed83 | 214 | |
DorijanMacek | 0:d74d1d840f60 | 215 | } |
DorijanMacek | 0:d74d1d840f60 | 216 | |
DorijanMacek | 1:0f605b9eed83 | 217 | void readTempFromMSP430G(void const *args) |
DorijanMacek | 0:d74d1d840f60 | 218 | { |
DorijanMacek | 1:0f605b9eed83 | 219 | //while(true) |
DorijanMacek | 1:0f605b9eed83 | 220 | //{ |
DorijanMacek | 1:0f605b9eed83 | 221 | semMSP430G.wait(1); |
DorijanMacek | 1:0f605b9eed83 | 222 | char config_t[2]; // transmitt buffer |
DorijanMacek | 1:0f605b9eed83 | 223 | char value_read[2]; // read buffer |
DorijanMacek | 1:0f605b9eed83 | 224 | config_t[0] = 0xC0; //config slave to int temp |
DorijanMacek | 1:0f605b9eed83 | 225 | wait(0.1); |
DorijanMacek | 1:0f605b9eed83 | 226 | config_t[1] = 0x55; // config data byte1, BOut |
DorijanMacek | 1:0f605b9eed83 | 227 | wait(0.1); |
DorijanMacek | 1:0f605b9eed83 | 228 | MSP430G.write(addr, config_t, 2); |
DorijanMacek | 1:0f605b9eed83 | 229 | wait(0.1); |
DorijanMacek | 1:0f605b9eed83 | 230 | |
DorijanMacek | 1:0f605b9eed83 | 231 | MSP430G.read(addr, value_read, 2); //read the two-byte temp data |
DorijanMacek | 1:0f605b9eed83 | 232 | temp = (value_read[0]+value_read[1]*256)/10.0; |
DorijanMacek | 1:0f605b9eed83 | 233 | pc.printf("readTempFromMSP430G \n\r "); |
DorijanMacek | 1:0f605b9eed83 | 234 | |
DorijanMacek | 1:0f605b9eed83 | 235 | Thread::wait(500); |
DorijanMacek | 1:0f605b9eed83 | 236 | semMSP430G.release(); |
DorijanMacek | 1:0f605b9eed83 | 237 | //} |
DorijanMacek | 0:d74d1d840f60 | 238 | } |
DorijanMacek | 0:d74d1d840f60 | 239 | |
DorijanMacek | 0:d74d1d840f60 | 240 | |
DorijanMacek | 1:0f605b9eed83 | 241 | void readVoltFromMSP430G(void const *args) |
DorijanMacek | 0:d74d1d840f60 | 242 | { |
DorijanMacek | 1:0f605b9eed83 | 243 | //while(true) |
DorijanMacek | 1:0f605b9eed83 | 244 | //{ |
DorijanMacek | 1:0f605b9eed83 | 245 | semMSP430G.wait(1); |
DorijanMacek | 1:0f605b9eed83 | 246 | |
DorijanMacek | 1:0f605b9eed83 | 247 | char config_t[2]; // transmitt buffer |
DorijanMacek | 1:0f605b9eed83 | 248 | char value_read[2]; // read buffer |
DorijanMacek | 1:0f605b9eed83 | 249 | config_t[0] = 0xC1; //config slave to int temp |
DorijanMacek | 1:0f605b9eed83 | 250 | wait(0.1); |
DorijanMacek | 1:0f605b9eed83 | 251 | config_t[1] = 0xff; // config data byte1, BOut |
DorijanMacek | 1:0f605b9eed83 | 252 | wait(0.1); |
DorijanMacek | 1:0f605b9eed83 | 253 | MSP430G.write(addr, config_t, 2); |
DorijanMacek | 1:0f605b9eed83 | 254 | wait(0.2); |
DorijanMacek | 1:0f605b9eed83 | 255 | |
DorijanMacek | 1:0f605b9eed83 | 256 | MSP430G.read(addr, value_read, 2); //read the two-byte temp data |
DorijanMacek | 1:0f605b9eed83 | 257 | volt = (value_read[0]+value_read[1]*256)*(1.5/1024); |
DorijanMacek | 1:0f605b9eed83 | 258 | pc.printf("readVoltFromMSP430G \n\r "); |
DorijanMacek | 1:0f605b9eed83 | 259 | Thread::wait(500); |
DorijanMacek | 1:0f605b9eed83 | 260 | semMSP430G.release(); |
DorijanMacek | 1:0f605b9eed83 | 261 | //} |
DorijanMacek | 0:d74d1d840f60 | 262 | } |