вывод трех переменных сразу

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Ребят помогите. Запутался в двух ссоснах.

Serial.println(tempC1,2);
delay(6000);
Serial.println(tempC2,2);
delay(6000);
Serial.println(voltag2e,2);
delay(6000);

 

как это вывести сразу на экран -все еременные в одну строчку с сохранением формата ?

типо b ={(tempC1,2),(tempC2,2),(voltag2e,2)};

 

Serial.println(b);

 

Gagarin74
Offline
Зарегистрирован: 24.08.2013

что то не так сохронилось 

 

типо b ={(tempC1,2),(tempC2,2),(voltag2e,2)};

serial.println(b)

bwn
Offline
Зарегистрирован: 25.08.2014

У принт ln уберите и пробелы вставьте где надо.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

спасибо за ответ. но если не трудно можно полностью рабочий код.ПОЖАЛУЙСТА. Уже и уберал и вставлял. 3 часа бьюсь.

bwn
Offline
Зарегистрирован: 25.08.2014
 float a = 12.12;
 float b=15.15;
 float c=3.683;

void setup()
{
  Serial.begin(9600);
}
void loop()
{
Serial.print(a,1);
Serial.print("  ");
Serial.print(b,2);
Serial.print("  ");
Serial.print(c,1);
Serial.print("  ");
Serial.println();
delay(5000);
}

Да как-то так, наверно можно и красивше

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Спасибо друг выручил!!!!!

axill
Offline
Зарегистрирован: 05.09.2011

Вам без скобок или с ними? Для таких случаев куда лучше подходит старый добрый printf

char buf[32];
sprintf_P(buf, PSTR("%.2f %.2f %.2f"), a, b, c);
Serial.println(buf);

давно float не применял, но вроде именно так

bwn
Offline
Зарегистрирован: 25.08.2014

axill пишет:

Вам без скобок или с ними? Для таких случаев куда лучше подходит старый добрый printf

char buf[32];
sprintf_P(buf, PSTR("%.2f %.2f %.2f"), a, b, c);
Serial.println(buf);

давно float не применял, но вроде именно так

А можно подробней, что здесь к чему. Или где почитать. Спасибо.

axill
Offline
Зарегистрирован: 05.09.2011

теория общая в любом учебнике по Си, а конкретно по AVR здесь http://avr-libc.narod.ru/glibc-7.html#ss7.9

сам читал на английском, есть руководство по avr-glibc по библиотеке Си для AVR, эту ссылку на русском специально нашел для вас сейчас, за адекватность не ручаюсь, но вроде все там правильно

функция sprintf - это вариант вывода не в поток, а в строку

функция sprintf_P это вариант у которого строка формата располагается не в памяти, а во флэш - это грамотная экономия памяти

PSTR() - стандартный макрос для размещения строки во флэш (в памяти програм)

bwn
Offline
Зарегистрирован: 25.08.2014

Благодарствуйте, ознакомлюсь.

5N62V
Offline
Зарегистрирован: 25.02.2016

axill пишет:

Вам без скобок или с ними? Для таких случаев куда лучше подходит старый добрый printf

char buf[32];
sprintf_P(buf, PSTR("%.2f %.2f %.2f"), a, b, c);
Serial.println(buf);

давно float не применял, но вроде именно так

Оживлю.   На ардуино sprintf() не поддерживает float, собака. Приходится выделять целую часть, потом ставить точку, потом выводить дробную часть.