Cześć.
Chciałem zrobić sobie taki prosty termometr i wszystko jest w nim ok do momentu, gdy temperatura na wyświetlaczu jest w przedziale 7-33 stopnie... Otóż, gdy spada poniżej 7 to na wyświetlaczy pojawia się ponad 30 a gdy podnosi się ponad 33 to na wyświetlaczu jest ok 7...
Błąd raczej musi być w poniższym kodzie tylko nie wiem, w którym miejscu...
Rzućcie na to okiem w wolnej chwili;)
Chciałem zrobić sobie taki prosty termometr i wszystko jest w nim ok do momentu, gdy temperatura na wyświetlaczu jest w przedziale 7-33 stopnie... Otóż, gdy spada poniżej 7 to na wyświetlaczy pojawia się ponad 30 a gdy podnosi się ponad 33 to na wyświetlaczu jest ok 7...
Błąd raczej musi być w poniższym kodzie tylko nie wiem, w którym miejscu...
Rzućcie na to okiem w wolnej chwili;)
#ifndef CYF_DISP_H_
#define CYF_DISP_H_
#define ADCW_0 936
#define ADCW_100 680
uint8_t * convert_to_temp( uint16_t );
#endif /* CYF_DISP_H_ */
#include <avr/io.h>
#include "wys_7.h"
#include "convert_to_temp.h"
#include "_adc_.h"
uint8_t * convert_to_temp(uint16_t adcw)
{
int16_t temp = 0;
temp = (-1000 * adcw)/(ADCW_0 - ADCW_100) + (1000 * ADCW_0)/(ADCW_0 - ADCW_100);
if(temp < 0)
{
cyf[3] = MINUS;
temp *= -1;
}
else if(temp < 0)
{
cyf[3] = EMPTY;
}
else
cyf[2] = temp / 100;
cyf[1] = (temp - cyf[2]*100) / 10;
cyf[0] = temp - cyf[2]*100 - cyf[1]*10;
return cyf;
}