![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
0527
Diff: main.cpp
- Revision:
- 60:c0c04325453c
- Parent:
- 59:9bbcc1b368ba
--- a/main.cpp Tue Apr 23 09:45:23 2019 +0000 +++ b/main.cpp Mon May 27 05:38:15 2019 +0000 @@ -1,19 +1,3 @@ -/* WiFi Example - * Copyright (c) 2018 ARM Limited - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - //MQTT+WIFI @@ -30,7 +14,8 @@ #include "mbed.h" #include "TCPSocket.h" - +#include "VL53L1X.h" +#include <string> #define WIFI_IDW0XX1 2 #if (defined(TARGET_DISCO_L475VG_IOT01A) || defined(TARGET_DISCO_F413ZH)) @@ -52,7 +37,7 @@ MQTT::Message &message = md.message; logMessage("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id); logMessage("Payload %.*s\r\n", message.payloadlen, (char*)message.payload); - ++arrivedcount; + //++arrivedcount; } @@ -146,14 +131,205 @@ // Close the socket to return its memory and bring down the network interface socket.close(); } +bool s1_init = true; +bool s2_init = true; +bool s3_init = true; +bool s4_init = true; +VL53L1X sensor1(PC_1,PC_0, PC_2); +VL53L1X sensor2(PC_1,PC_0, PC_3); +VL53L1X sensor3(PC_1,PC_0, PC_4); +VL53L1X sensor4(PC_1,PC_0, PC_5); +SPI acc (PA_7,PA_6,PA_5); +DigitalOut cs(PB_8); +char buffer[6]; +int16_t data[3]; +float x,y,z,w; +Timer t; +AnalogIn analog_value1(PA_2); +AnalogIn analog_value2(PA_4); +AnalogIn analog_value3(PB_1); +AnalogIn analog_value4(PA_3); +AnalogIn analog_value5(PB_0); +Serial pc(USBTX,USBRX); + +void sensor(void) +{ + double meas_a; + double meas_a1; + double meas_b; + double meas_b1; + double meas_c; + double meas_c1; + double meas_d; + double meas_d1; + double meas_e; + double meas_e1; + double outputv; + + double D1; + double D2; + double D3; + double D4; + + + + + sensor1.initReading(0x52,50000); + sensor2.initReading(0x27,50000); + sensor3.initReading(0x35,50000); + sensor4.initReading(0x37,50000); + sensor1.setDistanceMode(VL53L1X::Short); + sensor2.setDistanceMode(VL53L1X::Short); + sensor3.setDistanceMode(VL53L1X::Short); + sensor4.setDistanceMode(VL53L1X::Short); + cs=1; + acc.format(8,3); + acc.frequency(2000000); + cs=0; + acc.write(0x31); + acc.write(0x0B); + cs=1; + cs=0; + acc.write(0x2D); + acc.write(0x08); + cs=1; + + D1 = sensor1.readFromOneSensor(); + wait(0.1); + D2 = sensor2.readFromOneSensor(); + wait(0.1); + D3 = sensor3.readFromOneSensor(); + wait(0.1); + D4 = sensor4.readFromOneSensor(); + wait(0.1); + + cs=0; + acc.write(0x80|0x40|0x32); + for (int i=0;i<=5;i++) + { + buffer[i]=acc.write(0x00); + } + cs= 1; + data[0]=buffer[1]<<8|buffer[0]; + data[1]=buffer[3]<<8|buffer[2]; + data[2]=buffer[5]<<8|buffer[4]; + x=0.004*data[0]; + wait(0.1); + y=0.004*data[1]; + wait(0.1); + z=0.004*data[2]; + wait(0.1); + w=atan2(x,y)*(57.4); + wait(0.1); + meas_a = analog_value1.read(); + meas_a1 = meas_a * 3*25; + meas_b = analog_value2.read(); + meas_b1 = meas_b * 3*25; + meas_c = analog_value3.read(); + meas_c1 = meas_c * 3*25; + meas_d = analog_value4.read(); + meas_d1 = meas_d * 3*25; + meas_e = analog_value5.read(); + meas_e1 = meas_e * 3*25; + + + + + } + int main() -{ +{ + + + pc.baud (115200) ; + + double meas_a; + double meas_a1; + double meas_b; + double meas_b1; + double meas_c; + double meas_c1; + double meas_d; + double meas_d1; + double meas_e; + double meas_e1; + double outputv; + + double D1; + double D2; + double D3; + double D4; + + + + + sensor1.initReading(0x52,50000); + sensor2.initReading(0x27,50000); + sensor3.initReading(0x35,50000); + sensor4.initReading(0x37,50000); + sensor1.setDistanceMode(VL53L1X::Short); + sensor2.setDistanceMode(VL53L1X::Short); + sensor3.setDistanceMode(VL53L1X::Short); + sensor4.setDistanceMode(VL53L1X::Short); + cs=1; + acc.format(8,3); + acc.frequency(2000000); + cs=0; + acc.write(0x31); + acc.write(0x0B); + cs=1; + cs=0; + acc.write(0x2D); + acc.write(0x08); + cs=1; + + D1 = sensor1.readFromOneSensor(); + wait(0.1); + D2 = sensor2.readFromOneSensor(); + wait(0.1); + D3 = sensor3.readFromOneSensor(); + wait(0.1); + D4 = sensor4.readFromOneSensor(); + wait(0.1); + + cs=0; + acc.write(0x80|0x40|0x32); + for (int i=0;i<=5;i++) + { + buffer[i]=acc.write(0x00); + } + cs= 1; + data[0]=buffer[1]<<8|buffer[0]; + data[1]=buffer[3]<<8|buffer[2]; + data[2]=buffer[5]<<8|buffer[4]; + x=0.004*data[0]; + wait(0.1); + y=0.004*data[1]; + wait(0.1); + z=0.004*data[2]; + wait(0.1); + w=atan2(x,y)*(57.4); + wait(0.1); + meas_a = analog_value1.read(); + meas_a1 = meas_a * 3*25; + meas_b = analog_value2.read(); + meas_b1 = meas_b * 3*25; + meas_c = analog_value3.read(); + meas_c1 = meas_c * 3*25; + meas_d = analog_value4.read(); + meas_d1 = meas_d * 3*25; + meas_e = analog_value5.read(); + meas_e1 = meas_e * 3*25; + + + int count = 0; printf("WiFi example\n\n"); count = scan_demo(&wifi); + if (count == 0) { printf("No WIFI APNs found - can't continue further.\n"); return -1; @@ -182,7 +358,7 @@ // MQTT Example Start float version = 0.6; - char* topic = "test1"; + char* topic = "192.168.0.164"; logMessage("HelloMQTT: version is %.2f\r\n", version); @@ -195,7 +371,7 @@ MQTT::Client<MQTTNetwork, Countdown> client(mqttNetwork); - const char* hostname = "192.168.0.120"; + const char* hostname = "192.168.0.164"; int port = 1883; logMessage("Connecting to %s:%d\r\n", hostname, port); int rc = mqttNetwork.connect(hostname, port); @@ -212,48 +388,33 @@ if ((rc = client.subscribe(topic, MQTT::QOS2, messageArrived)) != 0) logMessage("rc from MQTT subscribe is %d\r\n", rc); - + MQTT::Message message; - + //pc.printf("%d,%d,%d,%d,%+1.2f,%+1.2f,%+1.2f,%+1.2f,%1.0f,%1.0f,%1.0f,%1.0f,%1.0f\n\r", +//sensor1.readFromOneSensor(), sensor2.readFromOneSensor(), sensor3.readFromOneSensor(), sensor4.readFromOneSensor(), +//x,y,z,w, meas_a1, meas_b1, meas_c1, meas_d1, meas_e1); // QoS 0 + char buf[100]; - sprintf(buf, "Hello World! QoS 0 message from app version %f\r\n", version); - message.qos = MQTT::QOS0; + sprintf(buf, "100"); + + + //sprintf(buf, "%d,%d,%d,%d,%+1.2f,%+1.2f,%+1.2f,%+1.2f,%1.0f,%1.0f,%1.0f,%1.0f,%1.0f\n\r", +//sensor1.readFromOneSensor(), sensor2.readFromOneSensor(), sensor3.readFromOneSensor(), sensor4.readFromOneSensor(), +//x,y,z,w, meas_a1, meas_b1, meas_c1, meas_d1, meas_e1); + + + + message.qos = MQTT::QOS1; message.retained = false; message.dup = false; message.payload = (void*)buf; message.payloadlen = strlen(buf)+1; rc = client.publish(topic, message); - while (arrivedcount < 1) - client.yield(100); - - // QoS 1 - sprintf(buf, "Hello World! QoS 1 message from app version %f\r\n", version); - message.qos = MQTT::QOS1; - message.payloadlen = strlen(buf)+1; - rc = client.publish(topic, message); - while (arrivedcount < 2) - client.yield(100); - - // QoS 2 - sprintf(buf, "Hello World! QoS 2 message from app version %f\r\n", version); - message.qos = MQTT::QOS2; - message.payloadlen = strlen(buf)+1; - rc = client.publish(topic, message); - while (arrivedcount < 3) - client.yield(100); - - if ((rc = client.unsubscribe(topic)) != 0) - logMessage("rc from unsubscribe was %d\r\n", rc); - - if ((rc = client.disconnect()) != 0) - logMessage("rc from disconnect was %d\r\n", rc); - - mqttNetwork.disconnect(); - - logMessage("Version %.2f: finish %d msgs\r\n", version, arrivedcount); - - return 0; - - + client.yield(100); + + + + + }