Вывод значения переменной

vonka155
Offline
Зарегистрирован: 02.10.2018

Здравствуйте!

Вкратце о проблеме, есть передатчик он передает два сигнала-один тестовый, другой рабочий.При приеме тестового сигнала начинает работать приемник т.е отсчитывать время до получения рабочего сигнала.Зная время прихода рабочего сигнала можно определить расстояние между приемником и передатчиком(в теории). С помошью функции отсчета време с начала программы можно найти время посылки.Проблема в том что тестовый сигнал и рабочий отправляются по 4 посылки т.е. 8 посылок, чтобы определить расстояние нужно знать разницу между 5 и 4 посылкой.В СОМ порте у меня вывести эти 8 посылок получается, но как сделать программно и с помощью переменных чтобы у меня одна переменная имела значения времени 4 посылки а другая значение 5 времени 5 посылки?

Есть идеи товарищи ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vonka155 пишет:

Есть идеи товарищи ?

Есть. Первая идея - посмотреть, что Вы уже сделали. Показывайте Ваш код и объясняйте в чём затруднение.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ещё есть идея изложить все внятно, с учетом законов Физики и распространения света, звуко, и прочих способов приема-передачи. Пока какой-то сумбур.

Ваш приемник ждет(!) тестовую посылку .. она идет "по отдельному каналу мгновенно" или там же, с той же задеркой, что и рабочий свисток? Если второе, то все что Вы сможете измерить это время между тестовой и рабочей посылкой на приемнике, и оно будет странным образом равно времени между тестом и свистком в передатчике. Не более.

Если канал тестовой посылки условно "мгновенен", то да: заранее зная задержку между тестом и рабочим свистком у передатчика и измерив задержку в приемнике в общем случае как-то можно оценить расстояние и может даже с достаточной точностью .. но, Вы ничего не сказали о характере каналов, сред передачи и т.д.

Судя по тому, что у Вас "8 посылок", то речь идет о узв. датчике HCSR-04 .. но это явно "не точно".

vonka155
Offline
Зарегистрирован: 02.10.2018
#include <RCSwitch.h>//передатчик
RCSwitch mySwitch = RCSwitch();
int i=0;
void setup() {
  Serial.begin(9600);
mySwitch.enableTransmit(2);}
void loop() {
 if(digitalRead(4)==HIGH&&i<1){
mySwitch.send(B0100, 4);
delay(1000);
mySwitch.send(B1111, 4);
i++;}
Serial.println(i);}  
#include <RCSwitch.h>//приемник
unsigned long time;
RCSwitch mySwitch = RCSwitch();
void setup() {
 pinMode( 3, OUTPUT );
mySwitch.enableReceive(0);
Serial.begin(9600);
}
void loop() {
 if( mySwitch.available() ){
  Serial.print("Time: ");
  time = micros();
  Serial.println(time);
 mySwitch.resetAvailable();}
}

В порте получаю 

Time: 6532000
Time: 6565860
Time: 6599616
Time: 6633368(первая переменная)
Time: 7695096(вторая переменная)
Time: 7728848
Time: 7762612
Time: 7796368
 мне нужно переменные достать из порта как-то так
 
vonka155
Offline
Зарегистрирован: 02.10.2018

Все реализовано на  модулях 

http://robotclass.ru/tutorials/arduino-radio-433mhz/

Принцип такой:Тестовая посылка передается на приемник приемник получив посылку начинает отсчитывать время до прихода второй посылки,вторая посылка отправляется с известной задержкой,зная общее время и время задержки можно найти время передачи и обработки посылки.