Maček Dorijan Miljković Dominik Napon i temperatura sa istog slave-a

Dependencies:   Display1602 mbed-rtos mbed nRF24L01P

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?

UserRevisionLine numberNew 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 }