Преобразование типов данных
- Войдите на сайт для отправки комментариев
Ср, 06/07/2016 - 11:55
Помогите пожалуйста, не могу понять как преобразовать значения передаваемые Ультразвуковым дальномером, что бы данные передавались по MQTT.
Компилятор выдаёт ошибку:
invalid conversion from 'int' to 'const char*' [-fpermissive]
Вот сам код:
#include <SPI.h> //SPI библиотека #include <Ethernet.h> //Ethernet библиотека #include <PubSubClient.h> //MQTT библиотека #include <Ultrasonic.h> //Ультразвуковой дальномер, библиотека //Установка mac и ip адресов byte mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 74); IPAddress server(192, 168, 1, 70); //Создаём свою функция CallBack void CallBack(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } EthernetClient ethClient; PubSubClient client(ethClient); Ultrasonic ultrasonic(8, 9); //подкл. 8 и 9 пинов для Дальномера //Создаём свою функция reconnect void reconnect() { // Повторять цикл пока мы не переподключимся while (!client.connected()) { Serial.print("Podklychenie Yspeshno..."); //ВЫВОД СООБЩЕНИЯ: //Подкл. успешно // Попытка подключиться if (client.connect("arduinoClient")) { Serial.println("PODKLUCHENO"); //вывод сообщ.: Подключено // После подключения к сети, опубликовать объявление ... client.publish("outTopic", "Poshla voda v Haty!"); //просто вывод сообщения // ... и подписаться client.subscribe("inTopic"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println("Povtor cherez 5 second"); // Ожидание 5 секунд delay(5000); } } } void setup() { Serial.begin(9600); client.setServer(server, 1883); client.setCallback(CallBack); Ethernet.begin(mac, ip); // Задержка на 1,5 секунды delay(1500); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); Serial.print(ultrasonic.Ranging(CM)); client.publish("outTopic", "Сюда должно быть преоблазованное значение с СМ"); Serial.println("cm"); delay(4000); }
Мне кажется тут есть лишний, бесполезный код. Пытаюсь понять как пользоваться MQTT, новичок...
1. Сообщение об ошибке давайте полностью (там должен быть номер строки и т.п.)
2. Уберите лирику типа "как преобразовать значения передаваемые Ультразвуковым дальномером, что бы данные передавались по MQTT" и скажите из какого типа данных в какой Вам надо преобразовать.
Поставлю по другому вопрос. Как правильно сделать, что бы значения расстояния с Ультразвукового дальномера передавались по MQTT на брокер раз в 4 секунды ?
Поставлю по другому вопрос. Как правильно сделать, что бы значения расстояния с Ультразвукового дальномера передавались по MQTT на брокер раз в 4 секунды ?
Снова лирика.
В программировании нет такого понятия как "значения расстояния с Ультразвукового дальномера", и "передавались по MQTT на брокер" тоже нет.
Вы в каком виде читаете свои "значения расстояния"? Как целые? Как "с плавающей точкой"? Еще как. Укажите нормальный тип данных. Тоже самое про передачу. Вам как надо передавать "как байт"? "как целое"? "как строку"? Опять же укажите нормальный тип данных.