Общение двух контроллеров по SoftwareSerial

Тема в разделе "Arduino & Shields", создана пользователем Miheeei, 30 окт 2017.

  1. Miheeei

    Miheeei Нерд

    Добрый день коллеги. Помогите разобраться в организации связи между двумя МК.
    Что мы имеем:
    1. Имеется ведомый МК Promini, на борти модуль реле.(включает обогрев)
    Всего 1 переменная:
    bool Relay = false;

    2. Ведущий МК Uno, должен от меня получить команды по аппаратному serial и передать по программному, ведомому. Команды будут такие.
    1. Запросить значения всех переменных у ведомого (соответственно ведомый должен слушать порт и в случае запроса ответить ведущему).
    2. Отправить команду которая изменит переменную Reley у ведомого. (т.е. принудительно включить обогрев)
    Что касаемо коммутации то она готова, связь организована. Нужно только команды правильно отправлять и получать ответ.
     
  2. Radius

    Radius Гик

    А в чем проблема? У вас код не работает? Выложите сюда, и вам помогут. Или вы не знаете как по Serial отправлять/получать данные?
     
  3. DIYMan

    DIYMan Guest

    Ну как-то так, навскидку:

    Код (C++):
    void loop()
    {
        if(Serial.available())
        {
            char ch = Serial.read();
           
            switch(ch)
            {
                case '1': // от вас пришла команда 1
                    slaveArduinoSerial.write('2'); // послать ведомому команду 2 - включить обогрев
                break;
               
                case '2': // от вас пришла команда 2 - запросить значения всех переменных у ведомого
                    slaveArduinoSerial.write('9'); // послали ведомому команду 9 - выдать нам в порт все значение переменных, признаком конца является символ '$'
                    while(1)
                    {
                        if(slaveArduinoSerial.available())
                        {
                            char ch2 = slaveArduinoSerial.read();
                            if(ch2 == '$')
                                break;
                           
                            Serial.write(ch2);
                        }
                    }
                break;
            }
        }
    }
     
    arkadyf нравится это.
  4. Miheeei

    Miheeei Нерд

    Спасибо разобралась