slave
Revision 0:e1ce6b0a884d, committed 2019-02-09
- Comitter:
- brahimir
- Date:
- Sat Feb 09 13:03:22 2019 +0000
- Commit message:
- slave
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Sat Feb 09 13:03:22 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat Feb 09 13:03:22 2019 +0000
@@ -0,0 +1,124 @@
+#include "mbed.h"
+#include "TextLCD.h"
+//slave
+
+AnalogIn pot(PTB1); // postavi pin
+InterruptIn button(PTD4);
+DigitalOut mod1(PTD0);
+DigitalOut mod2(PTD2);
+DigitalOut mod3(PTD3);
+Timer debounce;
+I2CSlave i2c_slave(PTC11, PTC10); //sda, scl
+TextLCD lcd(PTB8,PTB9,PTB10,PTB11,PTE2,PTE3,TextLCD::LCD16x2); // LCD
+Serial pc(USBTX,USBRX);
+
+float temp;
+float temp_k;
+float temp_f;
+int rec;
+char podaci[2];
+char temp_read[2];
+const int addr_slave = 0x80;
+int state = 0;
+int old = 0;
+//int buttonPoll = 0;
+
+float pretvori_temp(){
+ temp = 0.0625 * (((temp_read[0] << 8) + temp_read[1]) >> 4); //konverzija u float vrijednost deg C
+ return temp;
+ }
+
+void isr1(){
+ if (debounce.read_ms() > 200) {
+ state = old + 1;
+ old = state;
+ debounce.reset();
+ }
+}
+
+
+int main(){
+ mod1 = 1;
+ mod2 = 0;
+ mod3 = 0;
+
+ lcd.cls();
+ wait(0.01);
+ i2c_slave.frequency(100000);
+ i2c_slave.address(addr_slave<<1);
+
+ debounce.start();
+ button.rise(&isr1);
+
+ while(1){
+ float Ain = pot.read();
+ float temp_ref = 17.0 + ((float)Ain*10.0); // 17 - 27 C T_ref
+ short temp_ref_100 = temp_ref*100;
+
+ rec = i2c_slave.receive();
+
+ switch(rec){
+ case 0: break;
+ case 1:
+ wait_us(50); //clock-stretching
+ podaci[0] = temp_ref_100>>8; //MSB
+ podaci[1] = temp_ref_100; //LSB
+ i2c_slave.write(podaci,2);
+ break;
+ case 2:
+ case 3:
+ i2c_slave.read(temp_read,2);
+ pretvori_temp();
+ temp_k= temp + 273.15; // T(K) = t(C);
+ temp_f= (temp*1.8)+32; //(0°C × 9/5) + 32 = 32°F
+ lcd.cls();
+ wait(0.01);
+ switch(state){
+ case 1: //celsius
+ mod1 = 1;
+ mod2 = 0;
+ mod3 = 0;
+ lcd.printf("Mod 1 - Celsius\nT = %.2f C", temp);
+ //pc.printf("Primljena temp: %2f C\n\r", temp);
+ wait(0.5);
+ break;
+ case 2: //kelvin
+ mod1 = 0;
+ mod2 = 1;
+ mod3 = 0;
+ lcd.printf("Mod 2 - Kelvin\nT = %.2f K", temp_k);
+ //pc.printf("Primljena temp: %2f K\n\r", temp_k);
+ wait(0.5);
+ break;
+ case 3: //fahrenheit
+ mod1 = 0;
+ mod2 = 0;
+ mod3 = 1;
+ lcd.printf("Mod 3 - Fahr\nT = %.2f F", temp_f);
+ //pc.printf("Primljena temp: %2f F\n\r", temp_f);
+ wait(0.5);
+ break;
+ case 4:
+ mod1 = 0;
+ mod2 = 0;
+ mod3 = 0;
+ lcd.printf("Temp ref:\nT = %.2f C", temp_ref);
+ //pc.printf("Poslana temp_ref: %2f C\n\r", temp_f);
+ wait(0.5);
+ break;
+ default: //celsius
+ old = 1;
+ mod1 = 1;
+ mod2 = 0;
+ mod3 = 0;
+ lcd.printf("Mod 1 - Celsius\nT = %.2f C", temp);
+ //pc.printf("Primljena temp: %2f C\n\r", temp);
+ wait(0.5);
+ break;
+ }
+ break;
+ default:break;
+ }
+
+ }
+ }
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Feb 09 13:03:22 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc \ No newline at end of file