Связь трёх arduino
- Войдите на сайт для отправки комментариев
Втр, 24/05/2016 - 12:21
Всем доброго дня или другого времени суток!
Помогите пожалуйста разобраться с кодом. Есть три ардуины, две из которых выполняют функцию измерения тока, сравнения его с заданным и включения/отключения нагрузки, а третья задаёт ток для сравнения, и выводит данные на LCD 2004. Связать платы нужно по I2C.
Вот примерный код одной из плат измерения, она же "SLAVE":
#include <Wire.h>
int InCurent=0; //ввод с датчика тока
int Curent=0; //сравниваемое значение тока
const int LedOn=7; //питание вкл/выкл
int RealCurent; //реальное значение номинального тока
void setup()
{
Serial.begin(9600);
pinMode(LedOn, OUTPUT);
}
void loop()
RealCurent = analogRead(InCurent);считываем значение с датчика тока
//Запрос по Wire значения "Curent" и выхода "Ledon" (HIGH или LOW)
if(RealCurent > Curent)//Сравнение установленного тока с реальным
{
digitalWrite(LedOn, LOW);//Гасим светодиод LedOn (подача питания)
Serial.println("Curent more than setup");
}
Насколько помню, SLAVE режимы I2C в wiring не реализованы или как-то криво, но могу и ошибиться ... не помню ужо.
Я для этого пробовал соединять три платы, на одну заливал скетч "MASTER", на две других "SLAVE". Код где-то в интернете нашёл. Платы между собой "перемигиваются", в сериал монитор с мастера уходят значения "Х". Но вот продвинуться дальше, переделать код под свои нужды не смог пока...
Код Мастера:
Код Слэйва: