Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

митяй распиздяй
2018-08-17 22:04:44

идея алгоритма приемника  была такова:
мк дожидается высокого уровня сигнала и в зависимости от длинны прописывает байт со значением 0 или 1  в переменной  и так 8 раз от 0-го и до 7-го байта и для чего мне тут нужна синхронизация?
даже если сигнал придет с запозданием на пару световых лет он должен быть правильно принят

митяй распиздяй
2018-08-17 20:05:20

а это как???

Вячеслав Азаров
2018-08-17 12:00:04
митяй распи пише:

... в чем ошибка? где подвох? ...

В некорректном алгоритме приемника, а точнее, в отсутствии синхронизации слов протокола.

митяй распи
2018-08-16 23:22:54

вот код передатчика
int out=13;
int i;
void setup(){
  pinMode(out,OUTPUT);
}
void loop(){
  for (int nb=0;nb<255;nb++){
    for (i=0;i<8;i++){
      if(bitRead(nb,i)==1){tire();} else{to();}
    }
    delay(300);
  }
}
void tire(){
  digitalWrite(out,1);
  delayMicroseconds(100);
  digitalWrite(out,0);
  delayMicroseconds(50);
  //i++;
}
void to(){
  digitalWrite(out,1);
  delayMicroseconds(50);
  digitalWrite(out,0);
  delayMicroseconds(50);
// i++;
}

митяй распи
2018-08-16 23:21:06

есть приемник и передатчик передатчик передает числа от 0 до 255
передатчик выдает что получает только 170
в чем ошибка? где подвох?
вот скетч приемника

unsigned long dlinnaS=0;//продолжительность сигнала
unsigned long time0=0;// точка отсчета
int InByte=0;// входящий байт
int LastByte=0;
int RadioPin=13;//radio pin
void setup(){
  pinMode(RadioPin,INPUT);
  Serial.begin(9600);
}
void loop(){
  if (digitalRead(RadioPin)==1)
  {
    Pbread();
  }
  //Serial.print("  ");
  //Serial.println(LastByte);
}//loop

void PdlS(){
  if(digitalRead(RadioPin)==1){
    if(time0<=0){time0=micros();}
  }else
  {
    if(time0>0){dlinnaS=micros()-time0;
                time0=0;
  }
}}//Pdls

void Pbread(){
  Serial.println();
  for (int i=0;i<7;){
    PdlS();
    if(40<dlinnaS<60){
      bitWrite(InByte,i,0);
      i++;
      dlinnaS=0;
      Serial.print(0);
    }
    if(70<dlinnaS<120){
      bitWrite(InByte,i,1);
      i++;
      dlinnaS=0;
      Serial.print(1);
    }
    //if (i>=8){LastByte=InByte;InByte=0;}
  }//for
  Serial.print("  ");
  Serial.println(InByte);
}//Pbread

Підвал форуму