arduino i2c + sht15

serejka6666
Offline
Зарегистрирован: 12.12.2012

дообрый день, дорогие форумчане! вопрос таков:

есть датчик влажности и температуры sht 15 (даташит), ии arduino uno. нужно считать с датчика показатели и вывести их на ком-порт. 

после прочтения и разборки непосредственно i2c принцип понятен, но при написании программы непонятно ничерта =D вот "программа". логика: отправляю на устройство команду, говорящую о том, что я хочу считать температуру. 

вопрос: как считать эту температуру в переменную для последующей корректировки.  полныый ноль в этом вопросе... в интернете толком ничего не нашел, кроме как описание библиотеки wire и i2c-интерфейса.



#include <Wire.h>

byte val = 0;
byte codetemp = 00000011;
byte codehum = 00000101;
int temp = 0;
int hum = 0;
float Tres = 0;
float RHres = 0;
float RHl = 0;

void setup()
{
  Wire.begin(); //connect 2 iic
  Serial.println('датчик температуры и влажности sht15');
}
void loop()
{

    Wire.beginTransmission(000); //передача для устройства 
    Wire.write(codetemp); //код для считывания температуры
    Wire.endTransmission();

  //сюда не обращайте внимания
    Tres = temp*0.01 -3.97; 
    RHl = -2.0468 + (0.0367*hum) + (hum*hum*(-1.5955)*0.000001);
    RHres = (Tres - 25)*(0.01+0.00008*hum) + RHl;
    Serial.println('температура воздуха=', Tres);
    Serial.println('влажность воздуха=', RHres);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

Плохо ищите. Готовая либа с програмный I2C

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

codetemp & codehum явно бинарные константы, тогда надо их описывать как
const byte codetemp = b00000011;

maksim
Offline
Зарегистрирован: 12.02.2012

Суть даже не в этом, чтения из датчика в коде выше не происходит.

serejka6666
Offline
Зарегистрирован: 12.12.2012

maksim пишет:

Суть даже не в этом, чтения из датчика в коде выше не происходит.

присходит запись на слэйв тогоо что я хочу считать(ведь это так?) а как считать?

serejka6666
Offline
Зарегистрирован: 12.12.2012

maksim пишет:

Плохо ищите. Готовая либа с програмный I2C

нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста

serejka6666
Offline
Зарегистрирован: 12.12.2012

kisoft пишет:
codetemp & codehum явно бинарные константы, тогда надо их описывать как const byte codetemp = b00000011;

о спасибо. тоже важно. буду знать.

maksim
Offline
Зарегистрирован: 12.02.2012

serejka6666 пишет:

maksim пишет:

Плохо ищите. Готовая либа с програмный I2C

нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста

Вам нужно именно на аппаратном I2C - с использованием Wire.h ? Я вас правильно понял? 

serejka6666
Offline
Зарегистрирован: 12.12.2012

maksim пишет:

serejka6666 пишет:

maksim пишет:

Плохо ищите. Готовая либа с програмный I2C

нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста

Вам нужно именно на аппаратном I2C - с использованием Wire.h ? Я вас правильно понял? 

да.да.да... 

maksim
Offline
Зарегистрирован: 12.02.2012

К сожалению это скорее всего невозможно, так как датчик использует свой 2-wire итерфейс, он очень похож на I2C, но есть свои особенности.

serejka6666
Offline
Зарегистрирован: 12.12.2012

maksim пишет:

К сожалению это скорее всего невозможно, так как датчик использует свой 2-wire итерфейс, он очень похож на I2C, но есть свои особенности.

т.е. скорее  всего с помощью wire.h  не получится запрограммировать датчик?

maksim
Offline
Зарегистрирован: 12.02.2012

99.999% что нет, сильно не вникал чем конкретно отличаются... в общем отличия есть и сэмитировать аппаратным I2C эти особенности не выйдет.

serejka6666
Offline
Зарегистрирован: 12.12.2012

maksim пишет:

99.999% что нет, сильно не вникал чем конкретно отличаются... в общем отличия есть и сэмитировать аппаратным I2C эти особенности не выйдет.

гениально! большое спасибо.