Re: POWER MONITOR на Arduino
Добавлено: Пт фев 12, 2016 10:58 pm
Хех... это ж какие возможности открываются!
На этой шине в АМС висят часы. Ваше изобретение совместимо с другими устройствами? Будет ли это работать параллельно с другими устройствами?короче,ребята,это гениально!!=))все сработало!любопытство победило и я присоединил второй слейв...просто назначил ему другой адрес,ну и с мастера обращался по очереди сначала к одному,потом ко второму и получал значения и с одного и со второго))мелочь,а приятно...
мне,конечно,очень приятно,но к сожалению,изобретение не мое=))...просто,вероятно,среди нас AMSшников я первый это попробовал в практике..а так то для этого шина i2c и разработана...Alex писал(а): На этой шине в АМС висят часы. Ваше изобретение совместимо с другими устройствами? Будет ли это работать параллельно с другими устройствами?
Код: Выделить всё
////////////////////////////////////
// I2C SCANER
////////////////////////////////////
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
При случае можно будет воспользоваться. Как я понял, это для специфического случая, когда два контроллера находятся рядом.мне,конечно,очень приятно,но к сожалению,изобретение не мое=))...просто,вероятно,среди нас AMSшников я первый это попробовал в практике..а так то для этого шина i2c и разработана...
немножко не понял про "другие устройства"...
а в целом,конечно,у меня так и работает в моем проекте и часы и про мини сидит на шине,ну вот пару постов выше еще одну дуинку подсоединял,все работает...с часами мы работаем через библиотеку и если в ней поколупаться,то наверняка найдем,что обращаемся к ним мы по адресу(просто он на всех часах один и тот же)...загрузите скетч i2c-сканер,подключите часы и вы увидите,что на самом деле ардуина найдет два устройства(ну,это что касается заводских часов DS1307 и DS3231),первое это часы,а второе-eeprom 24c32(c которой я работаю на due)....
так и живем...
Для шины I2C существуют специальные буферы, P82B96 и P82B715, с помощью которых расстояние можно увеличить до 20 м (при подтяжке к 5В) или даже до 100 м (при подтяжке к 12В).pastry777 писал(а):если бы шина i2c работала на большие дистанции
Общий принцип такой: вы публикуете здесь решение и каждый желающий может им воспользоваться. Как только у меня дойдут руки, то можно совместными усилиями интегрировать что-то в АМС.Алексу-может
интегрировать это в следующюю версию АМС ?