PMKIND

Dependencies:   rohm-rpr0521 rohm-sensor-hal Servo TextLCD

Files at this revision

API Documentation at this revision

Comitter:
pavledjo
Date:
Sun Jun 27 17:38:31 2021 +0000
Parent:
0:51001d8fdeff
Commit message:
PMK_m1;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
rohm-rpr0521.lib Show annotated file Show diff for this revision Revisions of this file
rohm-sensor-hal.lib Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Jun 24 15:11:30 2021 +0000
+++ b/main.cpp	Sun Jun 27 17:38:31 2021 +0000
@@ -5,32 +5,46 @@
 
 #include "mbed.h"
 #include "platform/mbed_thread.h"
-#include "Servo.h"
-#include "color.h"
 #include <string>
 #include <MQTTClientMbedOs.h>
+#include "TextLCD.h"
+#include "rohm-sensor-hal/rohm-sensor-hal/rohm_hal.h"       //mbed.h, types, DEBUG_print*
+#include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h"
+
+#include "rohm-rpr0521/rohm-rpr0521/rpr0521_driver.h"
+#include "rohm-rpr0521/rohm-rpr0521/rpr0521.h"
 
 // Blinking rate in milliseconds
 #define BLINKING_RATE_MS                                                    500
 
-Servo servo0(D3);
-Servo servo1(D4);
+Serial pc(USBTX,USBRX);
 InterruptIn button(USER_BUTTON);
 int arrivedcount = 0;
 TCPSocket socket;
 MQTTClient client(&socket);
 MQTT::Message message;
 int button_pressed=0;
-char* topic_pub = "PMK-client-temperature";
-char* topic_sub = "PMK_industrija/micro2/#";
 
+char* topic_sub = "PMK_industrija/micro1/#";
+char* topic_pub1 = "PMK_industrija/micro1/proxy1";
+char* topic_pub2 = "PMK_industrija/micro2/proxy1";
+char* topic_pub3 = "PMK_industrija/micro2/servo0";
 WiFiInterface *wifi;
+
+TextLCD lcd(D2,D3,D4,D5,D6,D7);
+DigitalOut vdd(D8);
+
 volatile int mems_event = 0;
 uint32_t previous_tick = 0;
 uint32_t current_tick = 0;
 uint8_t high = 0, low = 0;
 float temperature = 0.0f;
 char buffer[32];
+int plava = 0;
+int zuta = 0;
+int zelena = 0;
+int crvena = 0;
+int drugaBoja = 0;
 static char *print_double(char *str, double v, int decimalDigits = 2)
 {
     int i = 1;
@@ -120,18 +134,50 @@
     MQTT::Message &message = md.message;
     printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
     printf("Payload %.*s\r\n", message.payloadlen, (char*)message.payload);
-    char* poruka = (char*)message.payload;
-    if(topic_name.find("servo0")!=std::string::npos) {
-         printf("blblabla\n"); 
-         for(float p=0; p<1.0; p += 0.1) {
-        servo0 = p;
+    string poruka = (char*)message.payload;
+    if(topic_name.find("proxy1")!=std::string::npos) {
+        printf("Ima cepa!!! \r\n"); 
+        
+        char buf[100];
+        sprintf(buf, "Daj mi boju tu je cep");
+        message.qos = MQTT::QOS0;
+        message.retained = false;
+        message.dup = false;
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf)+1;
+        client.publish(topic_pub2, message);    
+                
+    }
+    if(topic_name.find("color")!=std::string::npos) {
+        printf("Vidi boje!!! \r\n"); 
+        bool levo = false;
         
+        if (poruka.find("CRVENA") !=std::string::npos){
+                levo = true;
+                crvena++;
         }
-        wait(2);
-        for(float p=1.0; p>0.0; p -= 0.1) {
-        servo0 = p;
-        
+        else if (poruka.find("ZELENA") !=std::string::npos){
+                zelena++;
+        }
+        else if (poruka.find("PLAVA") !=std::string::npos){
+                plava++;
         }
+        else if (poruka.find("ZUTA") !=std::string::npos){
+                zuta++;
+        }else {
+                drugaBoja++;
+            }
+        char buf[100];
+                
+        sprintf(buf, "Otvaraj taj servo PS =%b",levo );
+        message.qos = MQTT::QOS0;
+        message.retained = false;
+        message.dup = false;
+        message.payload = (void*)buf;
+        message.payloadlen = strlen(buf)+1;
+        client.publish(topic_pub3, message);    
+        lcd.cls();
+        lcd.printf("c:%d  p:%d z:%d\ny:%d dr:%d",crvena,plava,zelena,zuta,drugaBoja);
     }
     ++arrivedcount;
 }
@@ -141,16 +187,38 @@
     button_pressed=1;   
 }
 
+void rpr0521_print_one_value(){
+    bool error;
+    uint16_t data[3];
+    
+    error = rpr0521_read_data(&data[0]);
+    if (!error) {
+        printf("PS[%4u], Als0[%4u], Als1[%4u]\n\r", data[0], data[1], data[2]);
+        }
+    else {
+        printf("\n\r");
+        }
+}
 int main()
 {
     // Initialise the digital pin LED1 as an output
-    
-    ColorSensor cs(PA_5,PA_6,PA_7,PB_6,PC_7);
-    DigitalOut led(LED1);
-    servo0.calibrate(0.0005,90);
+    bool error;
+    uint16_t dataProx[3];
+    DigitalOut led(LED1); 
     button.rise(&buttonFunction);
     const char* hostname = "broker.mqttdashboard.com";
     int port = 1883;    
+    DigitalOut d8(D8);
+    d8 = 1;
+    DigitalOut d12(D12);
+    d12 = 0;
+    DigitalOut d13(D13);
+    d13 = 1;
+    
+    I2CCommonBegin();
+    rpr0521_wait_until_found();
+    pc.printf("\nSensor found.\n\r");
+    rpr0521_initial_setup();
     
     wifi = WiFiInterface::get_default_instance();
     if (!wifi) {
@@ -201,18 +269,33 @@
     while (true) {
         led = !led;
         thread_sleep_for(BLINKING_RATE_MS);
+     
+    
+        error = rpr0521_read_data(&dataProx[0]);
+        if (!error){
+            if(dataProx[0] > 50) {
+                printf("Pristigao je cep na lokaciju O.O O:'( \r\n ");
+                char buf[100];
+                sprintf(buf, "Cep je pristigao na proxy1 PS = %d",dataProx[0]);
+                message.qos = MQTT::QOS0;
+                message.retained = false;
+                message.dup = false;
+                message.payload = (void*)buf;
+                message.payloadlen = strlen(buf)+1;
+                client.publish(topic_pub1, message);    
+                
+                }
+        
+        }
         if (button_pressed==1) {
             button_pressed=0;    
             printf("Publishing data\r\n");    
             // QoS 0
             char buf[100];
-            printf("r: %d", cs.getRed());
-            
-            printf("g: %d", cs.getGreen());
-            printf("b: %d", cs.getBlue());
+          
             //sprintf(buf, "RGB: %7s C\r\n", print_double(buffer, cs.getRed()*100000000+cs.getGreen()*10000+cs.getBlue()));
             
-            //message.qos = MQTT::QOS0;
+           //message.qos = MQTT::QOS0;
             //message.retained = false;
             //message.dup = false;
             //message.payload = (void*)buf;
@@ -220,8 +303,8 @@
             //client.publish(topic_pub, message);
             
         }
-        printf("Yielding"); 
+       // printf("Yielding"); 
         client.yield(1000);
-        printf(" -> Yielded\r\n"); 
+        //printf(" -> Yielded\r\n"); 
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rohm-rpr0521.lib	Sun Jun 27 17:38:31 2021 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/Rohm/code/rohm-rpr0521/#145f11782373
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rohm-sensor-hal.lib	Sun Jun 27 17:38:31 2021 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/Rohm/code/rohm-sensor-hal/#38c206f19bb7