Что надо: показывать целую часть температуры.
Один индикатор повесил на порт В, второй на порт D. Хочу измерить температуру ds18b20_temperature(0). Получим число (например 20 т.е 20 градусов). Число перевести в строку. Взять первое значение (2) перевести обратно в число и отобразить на 7 сегм. индик. Потом взять второе число (0) и т.д.
Никак не могу разобраться. Перерыл уже все примеры на Си - ни один не работает.
Что делаю (CVAVR):
Код: Выделить всё
...........
int temp;
char temp_str;
char Indicator_1 [10] = { // массив для отображения на индикаторе
0b01111110, // 0
0b00001100, // 1
0b10110110, // 2
0b10011110, // 3
0b11001100, // 4
0b11011010, // 5
0b11111010, // 6
0b00001110, // 7
0b11111110, // 8
0b11011110, // 9
};
char Indicator_2 [10] = { // массив для отображения на индикаторе
0b01111110, // 0
0b00001100, // 1
0b10110110, // 2
0b10011110, // 3
0b11001100, // 4
0b11011010, // 5
0b11111010, // 6
0b00001110, // 7
0b11111110, // 8
0b11011110, // 9
};
...
w1_init();
ds18b20_init(0,-30,120,0);
.........
while (1)
{
temp=ds18b20_temperature(0);
//itoa(temp, temp_str);
itoa(temp,temp_str,10);
//PORTB=Indicator_1 [2];
//PORTD=Indicator_2 [5];
};
char *temp_str = new char[17]; - не знает что такое new
Посмотрел библиотеку DS18B20 - там у функции ds18b20_temperature тип float. Посмотрел справку CVAVR - там есть ftoa - что с ней только не делал, безполезно.
Что ещё сделать не знаю. Поэтому обращаюсь к мудрейшим.






