Считывание трех сигналов, последовательно отправляемых по Simulink с Arduino

Я посылаю три сигнала от одного Arduino mega другому с помощью xbees. На приемной стороне я использую эти сигналы в коде Simulink для управления сервомоторами. В настоящее время он настроен на считывание с аналоговых выводов без настройки беспроводной связи. Благодаря беспроводной технологии все сигналы передаются и принимаются через один последовательный порт. Я считаю, что мне нужно было бы изменить входы в Simulink на последовательный блок приема вместо аналогового блока выводов. Проблема в том, что в документации для блока последовательного приема указано, что вы не можете назначить более одного блока последовательного приема одному и тому же последовательному порту. Если у кого-нибудь есть решение этой проблемы, мы будем очень признательны!

получение кода

int received1; 
int received2;  
int received3;  
void setup() {  
  Serial.begin(9600);  
}  
void loop() {  
  if(Serial.available() )  
  {  
    received1, received2, received3 = Serial.read();  
  }  
}   

передающий код:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A1);
  int sensorValue3 = analogRead(A2);
  Serial.write(sensorValue1, sensorValue2, sensorValue3);
  delay(1);       
}

, 👍5

Обсуждение

Как кодируются три сигнала в битовом потоке?, @Ignacio Vazquez-Abrams

Вот мой код arduino на приемной стороне. Пока не уверен, правильно ли это. Я добавлю это к вопросу., @user734

Как выглядит ваш отправляющий код?, @Ignacio Vazquez-Abrams

Я также добавлю это к вопросу, @user734

Каков результат, отображаемый на последовательном мониторе? Пусть три значения, полученные в коде приемника, будут показаны на последовательном мониторе. Расскажите нам точно, что у вас есть? Это что, мусор? или ничего не получено?, @Adel Bibi

Репост из SO: http://stackoverflow.com/questions/22599430/reading-three-signals-sent-serially-on-simulink-from-arduino, @Nick T


1 ответ


1

Вам нужно поместить свои данные в пакет, а затем отправить пакет в Simulink.

Вы попытались сделать это с помощью этой строки в своем передающем коде:

Serial.write(sensorValue1, sensorValue2, sensorValue3);

Однако, как вы можете видеть из документации по последовательной записи, это работает не так. Функция не может принять 3 аргумента.

Попробуйте вместо этого:

Serial.write(sensorValue1);
Serial.write(sensorValue2);
Serial.write(sensorValue3);
,