Вывод значения переменной
- Войдите на сайт для отправки комментариев
Здравствуйте!
Вкратце о проблеме, есть передатчик он передает два сигнала-один тестовый, другой рабочий.При приеме тестового сигнала начинает работать приемник т.е отсчитывать время до получения рабочего сигнала.Зная время прихода рабочего сигнала можно определить расстояние между приемником и передатчиком(в теории). С помошью функции отсчета време с начала программы можно найти время посылки.Проблема в том что тестовый сигнал и рабочий отправляются по 4 посылки т.е. 8 посылок, чтобы определить расстояние нужно знать разницу между 5 и 4 посылкой.В СОМ порте у меня вывести эти 8 посылок получается, но как сделать программно и с помощью переменных чтобы у меня одна переменная имела значения времени 4 посылки а другая значение 5 времени 5 посылки?
Есть идеи товарищи ?
Есть идеи товарищи ?
Есть. Первая идея - посмотреть, что Вы уже сделали. Показывайте Ваш код и объясняйте в чём затруднение.
Ещё есть идея изложить все внятно, с учетом законов Физики и распространения света, звуко, и прочих способов приема-передачи. Пока какой-то сумбур.
Ваш приемник ждет(!) тестовую посылку .. она идет "по отдельному каналу мгновенно" или там же, с той же задеркой, что и рабочий свисток? Если второе, то все что Вы сможете измерить это время между тестовой и рабочей посылкой на приемнике, и оно будет странным образом равно времени между тестом и свистком в передатчике. Не более.
Если канал тестовой посылки условно "мгновенен", то да: заранее зная задержку между тестом и рабочим свистком у передатчика и измерив задержку в приемнике в общем случае как-то можно оценить расстояние и может даже с достаточной точностью .. но, Вы ничего не сказали о характере каналов, сред передачи и т.д.
Судя по тому, что у Вас "8 посылок", то речь идет о узв. датчике HCSR-04 .. но это явно "не точно".
#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();} }В порте получаю
Все реализовано на модулях
http://robotclass.ru/tutorials/arduino-radio-433mhz/
Принцип такой:Тестовая посылка передается на приемник приемник получив посылку начинает отсчитывать время до прихода второй посылки,вторая посылка отправляется с известной задержкой,зная общее время и время задержки можно найти время передачи и обработки посылки.