arduino i2c + sht15
- Войдите на сайт для отправки комментариев
Ср, 12/12/2012 - 15:47
дообрый день, дорогие форумчане! вопрос таков:
есть датчик влажности и температуры 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);
}
Плохо ищите. Готовая либа с програмный I2C
codetemp & codehum явно бинарные константы, тогда надо их описывать как
const byte codetemp = b00000011;
Суть даже не в этом, чтения из датчика в коде выше не происходит.
Суть даже не в этом, чтения из датчика в коде выше не происходит.
присходит запись на слэйв тогоо что я хочу считать(ведь это так?) а как считать?
Плохо ищите. Готовая либа с програмный I2C
нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста
о спасибо. тоже важно. буду знать.
Плохо ищите. Готовая либа с програмный I2C
нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста
Вам нужно именно на аппаратном I2C - с использованием Wire.h ? Я вас правильно понял?
Плохо ищите. Готовая либа с програмный I2C
нужна библиотека wire =\ а это несколько нето. вопрос в том как послать и считать данные со слэйва. если не труднно объясни. желательно на пальцах. как будто пытаешься объяснить что-либо первокласснику) пожалуйста-пожалуйста
Вам нужно именно на аппаратном I2C - с использованием Wire.h ? Я вас правильно понял?
да.да.да...
К сожалению это скорее всего невозможно, так как датчик использует свой 2-wire итерфейс, он очень похож на I2C, но есть свои особенности.
К сожалению это скорее всего невозможно, так как датчик использует свой 2-wire итерфейс, он очень похож на I2C, но есть свои особенности.
т.е. скорее всего с помощью wire.h не получится запрограммировать датчик?
99.999% что нет, сильно не вникал чем конкретно отличаются... в общем отличия есть и сэмитировать аппаратным I2C эти особенности не выйдет.
99.999% что нет, сильно не вникал чем конкретно отличаются... в общем отличия есть и сэмитировать аппаратным I2C эти особенности не выйдет.
гениально! большое спасибо.