slave

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
brahimir
Date:
Sat Feb 09 13:03:22 2019 +0000
Commit message:
slave

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r e1ce6b0a884d TextLCD.lib
--- /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
diff -r 000000000000 -r e1ce6b0a884d main.cpp
--- /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
diff -r 000000000000 -r e1ce6b0a884d mbed.bld
--- /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