Показать сообщение отдельно
Старый 01.03.2018, 20:01   #23
3230_nokia_92 Меню Пользователя
Гость клуба
 
Регистрация: 17.02.2018
Сообщений: 7
По умолчанию Re: не получается по скетчу для ардуинки...помогиитее))

Цитата:
Сообщение от Waik
Поправил на коленке. До сих пор ужасно, но уже не так
Код:
/// v3
#define rxPin 2 // сюда у нас подключен приемник
#define txPin A3 // а сюда передатчик
#define MAX_DELTA 200 // это максимальное отклонение от длительности Pe при приеме
#define Pe 413
#define Pe2 Pe*2
 
void setup() {
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  Serial.begin(9600);
  //while (!Serial);
  Serial.println("AN MOTORS наклонятор запущен");
  randomSeed(analogRead(0));
}
 
void loop() {
  SendANMotors(0x69F5CE23);
  delay(5000);
  
  SendANMotors(0x69F5CE22);
  delay(5000);
    
  SendANMotors(0x69F5CE21);
  delay(5000);
  
  SendANMotors(0x69F5CE24);
  delay(5000);
}
 
 
void SendANMotors(long c2)
{
  noInterrupts(); // временно отключаем перехват пакетов, чтобы не перехватывать собственные отправки
  for (int j = 0; j < 4; j++)
  {
    // отправляем 12 начальных импульсов 0-1
    for (int i = 0; i < 12; i++) {
      delayMicroseconds(Pe);
      digitalWrite(txPin, HIGH);
      delayMicroseconds(Pe);
      digitalWrite(txPin, LOW);
    }
    delayMicroseconds(Pe * 10);
    // отправляем первую половину
    for (int i = 4 * 8; i > 0; i--) SendBit(bitRead(0x20220000 + 0x101 * random(0xff), i - 1));
    // вторую половину
    for (int i = 4 * 8; i > 0; i--) SendBit(bitRead(c2, i - 1));
    // и еще пару ненужных бит, которые означают батарейку и флаг повтора
    SendBit(1);
    SendBit(1);
    delayMicroseconds(Pe * 39);
    Serial.println("ОТПРАВЛЕНО");
    Serial.println(c2, HEX);
  }
  interrupts();
}
 
void SendBit(byte b) {
  if (b == 0) {
    digitalWrite(txPin, HIGH); // 0
    delayMicroseconds(Pe2);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe);
  }
  else {
    digitalWrite(txPin, HIGH); // 1
    delayMicroseconds(Pe);
    digitalWrite(txPin, LOW);
    delayMicroseconds(Pe2);
  }
}

из этого кода я понял только одно)) что оно будет отправлять коды, но только вторую часть будет менять. это полюбому не пойдет. пример кода будет ниже, но! на каждый шлакбаум идет своя кнопка на пульте, т.е. если это третья кнопка, то в части С1 - в коде будет 4е число - номер кнопки, соответственно в части С2 - последнее значение тоже номер кнопки. значит, что 2022afaf и вторая часть должна быть 69F5CE22. если вторая часть будет 69F5CE24 , а первая 2022**** то из за несовпадения четвертой и последней цифер в коде - шлак не откроется.
3230_nokia_92 вне форума   Ответить с цитированием