evg

Здесь мы поработаем с передатчиком RF433/315MHz.

В передатчике 3 вывода:

  • vcc
  • gnd
  • data

Подаем на vcc питание +5V, на gnd ессесно 0V, на data подаем данные.

В общем все очень просто. Отправляем посылку состоящую из длительностей высокого и низкого уровней, которыми кодируется "1" и "0".

В нашей посылке будет содержатьс 25 пар

HIGH0000101010 1010100001 11111
LOW1111010101 0101011110 00000

Т.е. Мы отправляем пары значений HIGH/LOW, с длительностью "0" - 1 мс, "1" - 3 мс (как пример):

0 1 0 1 0 1 0 1 1 0 0 1 1 0



int vcc = 6; // pin питания
int gnd = 7; // pin земли
int data = 5; // pin данных

void setup() {
  // put your setup code here, to run once:

  Serial.begin(9600);
  pinMode(vcc,OUTPUT); digitalWrite(vcc, HIGH);
  pinMode(gnd,OUTPUT); digitalWrite(gnd, LOW);
  pinMode(data,OUTPUT); digitalWrite(data,LOW);

}

//наша посылка
#define COL 25
//высокий уровень
int hP[COL]={0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,1,1,1,1,1,1,1};
//низкий уровень
int lP[COL]={1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0};
//длительность 0 и единицы
int DL[2] = {1,3};


void send(void)
{  int rxd;

//настраиваем выводы на передачу
  pinMode(vcc,OUTPUT); digitalWrite(vcc, HIGH);
  pinMode(gnd,OUTPUT); digitalWrite(gnd, LOW);
  pinMode(data,OUTPUT); digitalWrite(data,LOW);

  for(int i=0;i<COL;i++)
  {
    digitalWrite(data,HIGH);
    delay(DL[hP[i]]); //high part
    digitalWrite(data,LOW);
    delay(DL[lP[i]]); //low part
  }
//отключаем передатчик для экономии 
  pinMode(vcc,INPUT);
  pinMode(gnd,INPUT);
  pinMode(data,INPUT);
}



void loop() {
  // put your main code here, to run repeatedly:
  send();
  delay(1000) ;
}

Коментарии