Как убрать нули после запятой в ds18b20
- Войдите на сайт для отправки комментариев
Пт, 04/12/2015 - 05:23
Здравствуйте, подскажите, как убрать нули после запятой в показаниях датчика температуры. Показывает 26.00, а нужно просто 26
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> // https://github.com/maniacbug/RF24 #include <OneWire.h> const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба" RF24 radio(7, 8); // CE, CSN OneWire ds(9); void setup() { radio.begin(); delay(2); radio.setChannel(9); // канал (0-127) radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe); // открываем трубу на передачу. } void loop() { ////////////// 18b20 ////////////// byte addr[8]; byte data[12]; if (!ds.search(addr)) { // если 18b20 не найден float temperature = -128; radio.write(&temperature, sizeof(temperature)); delay(5000); } ds.reset_search(); ds.reset(); ds.select(addr); ds.write(0x44); delay(1000); ds.reset(); ds.select(addr); ds.write(0xBE); for (int i = 0; i < 9; i++) data[i] = ds.read(); int raw = (data[1] << 8) | data[0]; if (data[7] == 0x10) raw = (raw & 0xFFF0) + 12 - data[6]; float temperature = raw / 16.0; /////////////////////////////// // отправляем данные и указываем сколько байт пакет radio.write(&temperature, sizeof(temperature)); }
Я вам уже писал про это совсем недавно. 46-50 строку вырезаете, вставляете это:
Результат лежит в байте Temp
замени float на int в скетче
Спасибо! Но я видимо неправильно сформировал свой вопрос. Думаю исходный код передатчика не нужно было трогать. А нужно было убирать нули на выходе приемника
приемник:
как здесь ноли лишнии отсечь?
результат тот же, спасибо
как здесь ноли лишнии отсечь?
ну, я же тебе сказал, как - юзай целочисленные переменные.
все, разобрался, спасибо!
Если по какой то причине float должен быть, то: Serial.print(data[0] , 0); , вроде так.