Ви не увійшли.
Сторінки 1
есть приемник и передатчик передатчик передает числа от 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
Неактивний
вот код передатчика
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++;
}
Неактивний
... в чем ошибка? где подвох? ...
В некорректном алгоритме приемника, а точнее, в отсутствии синхронизации слов протокола.
Неактивний
а это как???
идея алгоритма приемника была такова:
мк дожидается высокого уровня сигнала и в зависимости от длинны прописывает байт со значением 0 или 1 в переменной и так 8 раз от 0-го и до 7-го байта и для чего мне тут нужна синхронизация?
даже если сигнал придет с запозданием на пару световых лет он должен быть правильно принят
Сторінки 1