Считывание трех сигналов, последовательно отправляемых по 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);
}
@user734, 👍5
Обсуждение1 ответ
Вам нужно поместить свои данные в пакет, а затем отправить пакет в Simulink.
Вы попытались сделать это с помощью этой строки в своем передающем коде:
Serial.write(sensorValue1, sensorValue2, sensorValue3);
Однако, как вы можете видеть из документации по последовательной записи, это работает не так. Функция не может принять 3 аргумента.
Попробуйте вместо этого:
Serial.write(sensorValue1);
Serial.write(sensorValue2);
Serial.write(sensorValue3);
- Как разделить входящую строку?
- Какова максимальная длина провода для последовательной связи между двумя Arduino?
- Последовательная связь между двумя Arduino (запрос и получение)
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Как правильно получить MIDI с Arduino, с 6n138?
- Bluetooth-модуль HC-05 не принимает AT-команды
- Сбой Arduino во время последовательной печати без очевидной причины
Как кодируются три сигнала в битовом потоке?, @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