Ребята помогите подключить датчики парковки от парктроника к ардуино

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Прочитать успеет, это точно. Надо писать, готового решения я не видел, так как так обычно не делают. Но если очень хочется... разберитесь, как сигнал заводится в ардуино, как подключаются кнопки.(подскажу, есть два варианта, когда кнопка коммутируется на 5в и когда на gnd), тут будет похоже. Посмотрите как работать не с отдельными кнопками а с портом ардуино (одновременно 8 пинов).

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

ОК гляну.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

А давайте еще вот так попробуем:

Подключение DAT на 2 вход ардуино. Програмка осцилографа у вас есть

код для Arduino слудующий. (я вывод на цифровой изменил, может что получиться). Надо 4  - 6 пакетов подряд(можно на разных экранах). И что бы на 1 экране было 2 пакета

byte head[3]={170,204,195};

byte MyBuff[800];
unsigned int i=0;

void setup()  
{ 
Serial.begin(115200);  
}  
void loop()  
{  
  for (i=0;  i < 800; i++)  
  {  
   MyBuff[i] = digitalRead(2); 
  }
    Serial.write(head,3);
    Serial.write(MyBuff,800);
}
 

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Я попробую. но вы же говорили что частоты мало у дуни(

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Вообще 0 ниче не ловит. но у меня завтра будет возможность но нормальном осциле посмотреть. Просто бесит уже вотчувствую что ниче гениального здесь нет и не думаю что мк на плате лучше чем атмега 328)

 

А вот еще идея а что если снимать как нить данные перед Мк в основном блоке? там стоит такой же МК что и на индикаторе который как я понял шифрует все дело это. Есть идеи?

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Вот фото платы вообщем состоит из 2ух основных частейгенератора и мультиплексора который передает и принимает эхо и МК на вывод который шифрует данные. Из схемы понятно что МК смотрит по 2 каналам только с мультиплесора на Мк выходят 2 линии. они на фото не видны они снизу.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Я же написал, на второй выход. Второй цифровой. Это в скетче видно же... У цифрового частота выше , с запасом хватит. Только разметка шкалы осцилографа будет не верной, но это не столь принципиально сейчас

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Все сделал вообще не ловит не прикаких параметрах линия пустая.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Сорру, там действительно у меня ошибочка небольшая.

вместо  

MyBuff[i] = digitalRead(2);

напишите

MyBuff[i] = digitalRead(2) * 255;  

(просто изначально в проге 5 в - это 255)

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Вот то что успеваю поимать первая картинка без препятствий вторая с упор препятствия. ниче разобрать не получается так как куоск того куоск того в целом не хвататет даже деления и масштаба.

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Видно что пачки по пять милисекунд и по 1 милисекунде а связать не могу никакой закономерности.( Стоит на осцилографффе смотреть нормальном? и что именно смотреть завтра к другу на работу заиду у енго есть осцил нормальный.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

не по пять, сейчас шкала неправильная.  пока не заморачивайтесь на датчики и растояния. Надо понять как 0 и 1 закодировано, и как идут паузы между пачками импульсов идут...

я вижу что 0 - это короткий, 1 - длинный, но что между пачками импульсов и как выглядит пачка полностью, я не пойму....

По данным пульсин - в начале идет синхросигнал, но на ваших последних графиках я его не вижу.

Попробуйте еще поймать начало пачки импульсов и конец.  (так что бы пачка имульсов была на пол экрана)

inspiritus
Offline
Зарегистрирован: 17.12.2012

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

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Если вы не понимаете то я подавно(. завтра могу на осциле обычном нормальном глянуть. Стоит?

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

inspiritus прав. По вашим последним графикам это как раз таки и непонятно. 

Попробуйте еще поймать начало пачки импульсов и конец.  (так что бы пачка имульсов была на пол экрана)

Сделаете фотки с осцилографа, будет вообще шикарно... Только начало пачки явно покажите... (скорее всего там будет +5 около 1000 мкС) ну и конец.

 

XsanderS
Offline
Зарегистрирован: 21.04.2014

Попробуй вот этот скеч, он выведет в порт точные тайменги и по ним можно будет понять где синхро импульс. В данной конфигурации этот код замеряет тайменги низкого уровня, если хочешь можешь заменить RISING на FALLING и замерять тайминги высокого уровня.

Вопрос к Роману: Не подскажите как организовать массив на 12 байт и записывать туда при 5мс - 1 и при 2мс - 0 и при сигнале 8мс обнулить буфер, так что бы был масив с которым можно было уже работать, назначать действия, и отправить в комп в виде пакета.

 

#include <TimerOne.h>

#define BTNPIN 2 // Вход сигнала
#define TEST 13 // Тест

volatile uint16_t startImpuls;
volatile uint16_t lengthImpuls;
volatile uint16_t timerCount=0;

void setup()
{  

/* LOW — вызов прерывания всякий раз, 
    когда на порту низкий уровень напряжения;
    CHANGE – прерывание вызывается при изменении 
    значения на входе;
    RISING – вызов прерывания при изменении уровня 
    напряжения с низкого (LOW) на высокое(HIGH)
    FALLING – вызов прерывания при изменении уровня 
    напряжения с высокого (HIGH) на низкое (LOW)*/
  
  startImpuls=0;
  lengthImpuls=0; 
  
  pinMode (TEST, OUTPUT);
  Serial.begin(115200);

  Timer1.initialize(1000);                // Интервал срабатывания таймера 1мс
  Timer1.attachInterrupt(callback);

  attachInterrupt(0, fireUp, FALLING); // Запуск таймера при наличии сигнала LOW
                                       // Замеряем только низкий уровень сигнала
}
void callback() {  timerCount++; }

void loop()
{
   if (lengthImpuls > 0) 
  {
     uint16_t li = lengthImpuls; 
     lengthImpuls=0;
  
     if (li > 7  && li < 9)   // При сигнале длинной 8мс начало пакета
     digitalWrite(13, LOW);
     
     if (li > 1  && li < 3)   // При сигнале длинной 2мс соответствует - 0
     digitalWrite(13, LOW);
     
     if (li > 4  && li < 6)   // При сигнале длинной 5мс соответствует - 1
     digitalWrite(13, HIGH);
  
     Serial.println (li, DEC);    // Отправляем в порт для тестового просмотра

}
 } 

// Функция обработки прерывания на подъем
void fireUp()
{

  detachInterrupt(0);
  startImpuls = timerCount;
  attachInterrupt(0, fireDown, RISING);
}

// Функция обработки прерывания на падение
void fireDown()
{
  detachInterrupt(0);
  lengthImpuls = timerCount - startImpuls;
  startImpuls=0;
  timerCount=0;
  attachInterrupt(0, fireUp, FALLING);
}

 

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Прикольно сделали. не думал что так можно :) В прерывании переключить тип прерывание это круто :) можно сэкономить на чтение значения порта.

К сожадению у Seltvik частота следования импульсов 400 мкС. Так что ваш код не подойдет. Вы мереете кажду 1 мС. 

Мысль в целом верная. 

По поводу массива. я бы сделал так:

обьявить массив (к примеру) mas 

обьявить переменную (к примеру) t 

счетчик - я бы использовала micros()

 

прерывание на + -> обнулить счетчик

прерывание на - -> если значение счетчика от 1000 до 3000 то mas[t] = 0; ++t

                                                                          от 4000 до 6000 то mas[t] = 1; ++t

                                                                          от 7000 до 9000 то t = 0 

                                                                        

у Seltvik аналогично, только тайминги другие.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Да не подоидет мне код(. У меня частота другая(.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Я коненчо гляну. А что народ думает про тот вариант чтобы снять показания до МК который в основном блоке стоит? может проще. будет. Как вы думает с мультиплексора какой сигнал заводится на мК?

XsanderS
Offline
Зарегистрирован: 21.04.2014

Нет никаких проблем изменить частоту, там где у меня стоит 1000 (1мс) измени частоту на 100 и посмотри что придет в порт а там уже в таком виде в каком в порт придет можешь подставлять свои значения в код где сравнение сигналов 

ps: таймер работает с частотой от 1 мкс, но это не нужный расход машинного времени, 100 в твоем случае самое оно

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

С мультиплексором будет сложней :) Варианты по сложности: 1) снять инфу с дисплея 2) протокол (чем тут и занимаемся) 3) напрямую с датчиков.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Ок попробую завтро все проделать. Отпишу. Спасибо.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А кстати в коде ошибку выдает не помню какую что то по поводу индефикатора но бибила есть на таимер. Странно глянь код еще раз свои че то может не хватает?

XsanderS
Offline
Зарегистрирован: 21.04.2014

Seltvik пишет:

А кстати в коде ошибку выдает не помню какую что то по поводу индефикатора но бибила есть на таимер. Странно глянь код еще раз свои че то может не хватает?

 

Нужна библиотека TimerOhne скачай здесь, распакуй и убери лишние символы из названия папки должно остаться TimerOne http://arduino-timerone.googlecode.com/files/TimerOne-r11.zip

Андрей1974
Offline
Зарегистрирован: 28.04.2014
roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

С этого начали :)

Кстати, можно и без библиотеки таймера. так как в данном случае это аналогично функциям micros() и millis() (токак код поправить надо)

 

Андрей1974
Offline
Зарегистрирован: 28.04.2014
Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Вот это тема. Я щас все прочитаю и тоже буду тестить

 

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

похоже на протокол, который у XsanderS. ТАйминги похожи на ваши... Где данные с осцилографа ? 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Пока нет не дошел до друга планы по работе изменились завтра только.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Пока попробую скетч который предложил мне XsanderS

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Попробуйте лучше этот. Тут тайминги правильные для вашего случая. (это с форума взято, с 4 страницы)

#include <TimerOne.h> 

#define LEDPIN 13        // Вывод светодиода 
#define BTNPIN 2  

#define BUFFER_LENGTH 100 

volatile uint16_t startImpuls; 
volatile uint16_t lengthImpuls; 
volatile uint16_t timerCount=0; 

byte buffPos = 0; 
byte Buffer[BUFFER_LENGTH]; 

byte packet[4]; 
byte posInPacket=0; 

byte startBYTE = 15; 

void setup() 
{  /* 
    LOW — вызов прерывания всякий раз, когда на порту низкий уровень напряжения; 
    CHANGE – прерывание вызывается при изменении значения на входе; 
    RISING – вызов прерывания при изменении уровня напряжения с низкого (LOW) на высокое(HIGH) 
    FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкое (LOW) 
  */ 
  startImpuls=0; 
  lengthImpuls=0; 
   
  pinMode(BTNPIN, INPUT);   
   
  for(int i=0; i< BUFFER_LENGTH; i++) 
    Buffer[i]=0; 
     
  Serial.begin(115200); 
   
  Timer1.initialize(20); 
  Timer1.attachInterrupt(callback);  // attaches callback() as a timer overflow interrupt 

  attachInterrupt(0, fireUp, RISING); 
} 
void callback() {  timerCount++; } 

void loop() 
{ 
  if (lengthImpuls > 0) 
  { 
    uint16_t temp=0; 
    uint16_t li = lengthImpuls; 
    lengthImpuls=0; 
     
    //--------------------------// 
    // получена приамбула "1 1 1 1" 
    if (li >50 && li <60) 
    { 
       posInPacket =0; 
    } 
    // Расчитываю позицию массиве 
    temp = posInPacket / 8; 
    uint16_t bitPos = posInPacket; 
    // Разворачиваю позицию для метода bitSet(x,n) 
    bitPos = 7 - bitPos; 
    if (bitPos >= 8) 
    { 
      bitPos =  posInPacket - (8*temp); 
    } 
    
    // Получен "0" 
    if (li >4 && li <6) 
    { 
      posInPacket ++; 
    } 

     // Получен "1" 
    else if (li >10 && li <15) 
    { 
      bitSet(packet[temp],bitPos); 
      posInPacket ++; 
    } 
    //digitalWrite(13,LOW); 
    // Отправить пакет "большему брату" 
    if (posInPacket > 15) 
    { 
      detachInterrupt(0); 
      Serial.println("------"); 

      for(int i=0; i<4; i++) 
      { 
        Serial.print(packet[i], DEC); 
        Serial.print(" "); 
        packet[i]=0; 
      } 
      Serial.println("------"); 
      posInPacket = 0; 
      attachInterrupt(0, fireUp, RISING); 
    } 
     
    //--------------------------// 
  } 
 } 

// Функция обработки прерывания на подъем 
void fireUp() 
{ 

  detachInterrupt(0); 
  startImpuls = timerCount; 
  attachInterrupt(0, fireDown, FALLING); 
} 

// Функция обработки прерывания на подъем 
void fireDown() 
{ 
  detachInterrupt(0); 
  lengthImpuls = timerCount - startImpuls; 
  startImpuls=0; 
  timerCount=0; 
  attachInterrupt(0, fireUp, RISING); 
}  

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Вообщем сделал вот результат со скетча с интервалом в 1000 мкс XsanderS.

11
1
1
1
34
1
1
1
34
1
1
1
34
1
1
34
1
1
1
34
1
1
34
1
1
1
34
1
34
1
1
34
1
34
1
1
34
1
1
34
1
1
34
1
34
1
1
34
1
1
34
1
1
34
1
1
34
1
1
34
1
1
34
1
1
1
34
1
1
34
1
1
34
1
1
34
1
1
1
34
1
1
34
1
1
34
1
1
33
1
1
1
33
1
1
1
33
1
1
1
33
1
1
33
1
1
33
1
1
1
33
1
1
33
1
1
1
33
1
1
1
33
1
1
1
33
1
1
1
33
1
1
1
1
33
1
1
1
1
33
1
1
1
1
33
1
1
1
1
33
1
1
1
1
1
33
1
1
1
1
33
1
1
1
33
1
1
1
1
33
1
1
1
1
33
1
1
1
Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А вот тот же скетч только с интервалом в 100мкс 

1
3
1
3
3
2
2
3
3
1
1
1
2
2
2
1
1
334
1
3
2
3
3
1
3
1
1
1
1
2
2
2
1
1
1
334
1
3
2
3
3
1
3
3
1
1
1
2
2
1
1
1
1
334
1
3
2
3
2
1
3
1
3
1
2
2
1
1
1
1
1
334
2
3
2
2
3
1
3
3
3
2
2
1
1
1
1
1
1
334
2
2
1
3
3
1
3
2
2
2
1
1
1
1
1
1
2
334
2
2
1
3
3
1
3
3
2
2
1
1
1
1
1
1
2
334
1
3
1
3
3
1
3
2
3
1
1
1
1
1
1
2
2
334
1
3
1
3
3
2
3
3
2
1
1
1
1
1
2
2
1
335
1
3
1
3
3
2
2
1
1
1
1
1
2
2
2
1
1
335
1
3
1
3
3
2
2
3
1
1
1
1
2
2
2
1
1
334
1
3
2
3
3
1
3
1
3
1
1
2
2
2
1
1
1
334
1
3
2
3
2
1
3
3
3
1
2
2
1
1
1
1
1
334
2
3
2
2
3
1
3
1
2
2
2
1
1
1
1
1
1
334
2
3
2
2
3
1
3
3
2
2
2
1
1
1
1
1
1
334
2
2
1
3
3
1
3
2
3
2
1
1
1
1
1
1
2
334
1
3
1
3
3
1
3
3
3
1
1
1
1
1
1
2
2
334
1
3
1
3
3
2
3
1
1
1
1
Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А вот скетч который под споилером с тои ссылки с 4 странице.

ўя------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
73 127 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
72 255 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А вот с одним подключеным датчиком А результат с препятствием где то пол метра наверно. ТАм где было 72 255 0 0  стало 64 28 0 0 что думаете?

Ј------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
------
74 255 0 0 ------
------
64 28 0 0 ------
------
75 255 0 0 ------
------
73 255 0 0 ------
 
Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Видно что по четыре пачки отправляет по каждому датчику? без препятствии первые две цифры закономерно повторяются а при появлении препятствия меняются. Может не все ловит дуня?

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Ну так последний скеч работает ;) 72-75 адрес датчика. 7- признак исправности (подключите числа немного другие будут ) 255 - расстояние. Подключайте датчик, смотрите что покажет. В принципе вы же хотели на цинтрафузу, а на форуме это было.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Если в BIN виде вывидите, увидите как датчик адресуется. 4 пачки - так в проге задано. Вроде похоже на правду. Для уточнения надо осцилограф посмотреть.

Андрей1974
Offline
Зарегистрирован: 28.04.2014

Возможно, в расстоянии биты местами поменять прийдется...

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

А вот сравнение). Есть закономерность но не поиму что за че отвечает точнее понимаю но расшифровать незнаю как. Где (-) - это нет препятствия. А вот (0.0) практически в упор. (0.4) и (1.0) приблизительно могу ошибится в 10 см. Что скажите

Датчик B (=0,4) Датчик B (=1.0) Датчик B (-) Датчик B (0.0)
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 66 19 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------
------ ------ ------ ------
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 65 38 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------
------ ------ ------ ------
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 79 127 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 65 38 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------
------ ------ ------ ------
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 65 38 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------
------ ------ ------ ------
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 66 19 0 0 ------ 73 255 0 0 ------ 66 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 81 127 0 0 ------ 145 127 0 0 ------
------ ------ ------ ------
75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------ 75 255 0 0 ------
------ ------ ------ ------
65 148 0 0 ------ 65 38 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
------ ------ ------ ------
74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------ 74 255 0 0 ------
------ ------ ------ ------
72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------ 72 255 0 0 ------

 

Андрей1974
Offline
Зарегистрирован: 28.04.2014

Первая 6 или 7 ,вероятнее всего, дает признак пищать или не пищать...

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Код на ардуино похоже немного кривой ) считает немного неверно. 66 скорее всего ошибка счета. Зацепилась 1 из следуюших 4 битов. 148, 38 - расстояние в попугаях. Будет меняться в зависимости от расстояния. Адрес датчика 65. Дальнейшие планы какие ? 6,7 самодиагностика, живой или нет. Если в бинарном виде смотреть, то это 0/1 на 5 бите, кажется. Надо калькулятор, под рукой нет. Выведите бинарном виде, понятно станет

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Это первая строка в переводе в бин.

65 148 0 0 ------ 66 19 0 0 ------ 73 255 0 0 ------ 65 0 0 0 ------
11000110110100001110000   10100001100110001100   11011111100011100111100   1111110111101000

 

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Я тоже понял что первые два как то связаны с номером датчика вторые три расстояние а два нуля в конце хз

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Мне не для Центрафуза у меня свое ПО для ПСкар и я могу написать че угодно мне просто принцип нужен зависимости. что за что отвечает тут понятниее уже но с расстоянием не поиму и с первыми цифрами которые отвечают за датчик. Что на подключенных что на отключенных тоже самое.

roman2712@mail.ru
Offline
Зарегистрирован: 16.01.2014

Что ты вы криво превели... Посчитайте нормально. Вывод в скетче поправите. В Serial.print(packet[i], DEC); вместо DEC поставте BIN

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Что именно поправить? Я перевел просто данные величина а вы про скетч имелли ввиду чтобы в бин выводил?

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013

Просто не понял вас сначало) щас сек.

Seltvik
Seltvik аватар
Offline
Зарегистрирован: 24.10.2013
Вот тут нет препятствии
 
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
10010101 1111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001001 1111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1010001 1111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001011 1111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1010011 1111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1010001 1111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
1001000 11111111 0 0 ------
------
1001011 11111111 0 0 ------
------
1001001 11111111 0 0 ------
------
1001010 11111111 0 0 ------
------
10010001 1111111 0 0 ------
------
1001011 11111111 0 0 ------