Добрый день. Делаю систему ИК- пульта . Для этого использую ячейки памяти EEPROM. Столкнулся с проблемой когда нужно прочитать значение из конкретной ячейки память EEPROM с помощью последовательного порта. Подскажите как это лучше сделать. Записываю в ячейку памяти EEPROM значение и это конкретное значение нужно прочитать уже на другой плате Arduino UNO.
Скетч платы передающей значения на две другие платы.
#include <EEPROM.h>
#include <SoftwareSerial.h>
#define RX 12
#define TX 13
SoftwareSerial mySerial(RX,TX);
const int BUT = 10;
const int BUT2 = 11;
const int BUT3 = 7;
int State;
int State2;
int State3;
int a,n,c;
void setup()
{
pinMode(BUT, INPUT_PULLUP);
pinMode(BUT2,INPUT_PULLUP);
pinMode(BUT3,INPUT_PULLUP);
int State = 1;
int State2 = 1;
int State3 = 1;
Serial.begin(1200);
mySerial.begin(1200);
randomSeed(analogRead(0));
}
void loop()
{
State3 = digitalRead(BUT3);
if(State3 == LOW)
{
a = random(2,255);
EEPROM.update(0,a);
n = EEPROM[0];
}
State = digitalRead(BUT);
if(State == LOW)
{
Serial.println(n);
Serial.setTimeout(1000);
}
State2 = digitalRead(BUT2);
if(State2 == LOW)
{
mySerial.println(n);
mySerial.setTimeout(1000);
}
if(Serial.available()>0)
{
EEPROM.write(1,Serial.read());
c = EEPROM[1];
if(c = 1)
{
Serial.println("Пользователь 1. Доступ открыт");
Serial.setTimeout(1000);
}
}
}
Скетч ИК-передатчика
#define cr_pin 9
#define RX 12
#define TX 13
#include <EEPROM.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(RX,TX);
const int BUT = 10;
int State = 1;
int n;
int a;
void setup()
{
pinMode(BUT,INPUT_PULLUP);
Serial.begin(1200);
mySerial.begin(1200);
tone(cr_pin,38000);
}
void loop()
{
if(mySerial.available()>0)
{
EEPROM.write(1,mySerial.read());
n = EEPROM [1];
mySerial.println(n);
mySerial.setTimeout(1000);
}
State = digitalRead(BUT);
if(State == LOW)
{
EEPROM.write(3,10);
a = EEPROM[3];
Serial.println(a);
Serial.println(n);
Serial.setTimeout(1000);
}
}
Скетч приемника
#include <EEPROM.h>
#include <SoftwareSerial.h>
#define RX 12
#define TX 13
SoftwareSerial mySerial(RX,TX);
char a , b , c;
char target1[1];
char target2(2,255);
const int ledPin = 10;
void setup()
{
Serial.begin(1200);
mySerial.begin(1200);
pinMode(ledPin, OUTPUT);
}
void loop()
{
if(mySerial.available()>0)
{
EEPROM.write(0,mySerial.read());
a = EEPROM [0];
mySerial.println(a);
mySerial.setTimeout(1000);
}
if(Serial.available()>0)
{
if(Serial.find(target2))
{
EEPROM.write(1,Serial.read());
b = EEPROM [1];
Serial.println(b);
Serial.setTimeout(1000);
}
if(Serial.find(target1))
{
EEPROM.write(2,Serial.read());
c = EEPROM[2];
mySerial.println(c);
mySerial.setTimeout(1000);
}
}
if(a == b, a != 0, b != 0)
{
digitalWrite(ledPin, HIGH);
}
}