Нарыл в интернете библиотеку, подключил, вроде бы как все заработало, по лог.анализатору вижу адекватную работу с датчиком, данные считываются и меняются если дыхнуть. Тож самое показывает если на ардуине собрать и посмотреть лог.анализатором. Но вывод на экранчик одно и тоже число -50 и 0 влажность, не соответствующее достоверности. Библиотеку приложил, основной код в main.cpp вот выложил.
Код: Выделить всё
#include "main.h"
#include "millis_micros.cpp"
#include "USI_TWI_Master.cpp"
#include "TinyWireM.cpp"
#include "SPARKFUN_AHT20.cpp"
#include "TinyOzOLED.cpp"
#define AHT20_VCC PB4
float t_f,h_f;
AHT20 AHT;
int main(void)
{
PORTB|=(1<<AHT20_VCC);
AHT.begin();
OzOled.init(); //инициализация дисплей
OzOled.setNormalDisplay(); //нормальный режим
OzOled.setPageMode(); //адресация страничная
OzOled.sendCommand(0xA1); //выбор ориентации сверху - вниз
OzOled.sendCommand(0xC8); //слева - направо
while (1)
{
t_f = AHT.getTemperature(); // Читаем новые значения температуры
h_f = AHT.getHumidity(); // и влажности
OzOled.clearDisplay();
OzOled.printNumber(t_f,1, 0, 0);
_delay_ms(1000);
OzOled.clearDisplay();
OzOled.printNumber(h_f,2, 0, 10);
_delay_ms(1000);
}
}Добавлено after 1 hour 27 minutes 36 seconds:
Код: Выделить всё
float AHT20::getTemperature()
{
if (sensorQueried.temperature == true)
{
//We've got old data so trigger new measurement
triggerMeasurement();
delay(75); //Wait for measurement to complete
uint8_t counter = 0;
while (isBusy())
{
delay(1);
if (counter++ > 100)
return (false); //Give up after 100ms
}
readData();
}
//From datasheet pg 8
float tempCelsius = ((float)sensorData.temperature / 1048576) * 200 - 50;
//Mark data as old
sensorQueried.temperature = true;
return tempCelsius;
}
Вот к примеру функция из библиотеки возвращает значение температуры, всё обшарил ума не приложу что тут может не работать!
моя писанина пока так на коленке, потом приведу в божеский вид.
Один вопрос остался, 

