Код, работавший в Uno, не работает в Mega 2560.

Я отправляю данные с помощью Android и считываю их с экрана последовательного порта Arduino. Когда я использую UNO, я могу плавно читать данные. Когда пользуюсь МЕГА, то код выгружает без ошибок, но не передает данные на экран серийника. Можете ли вы сказать мне, почему?

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(2,3);    // TX,RX                               
int bar_analog=0;                                    
int head_analog=0;
int bar_anim=0;
int strip_anim=0;
int motor_speed=1;
int direct=0;
int level=0;
boolean debug = true;

void setup() {
  Serial.begin(9600);                              
  bluetooth.begin(9600);                           
  Serial.println("Program is starting...");              
  Serial.println("by Berke Ogulcan Parlak");    
}

void loop() {
  if (bluetooth.available()) {
    while (bluetooth.available())                    
    {                                                
      bar_analog = bluetooth.parseInt();              
      head_analog = bluetooth.parseInt();
      bar_anim = bluetooth.parseInt();
      strip_anim = bluetooth.parseInt();
      motor_speed = bluetooth.parseInt();
      direct = bluetooth.parseInt();
      level = bluetooth.parseInt();
      if (debug) {                                  
        Serial.print("Bar Brightness: ");                        
        Serial.println(bar_analog);
        Serial.print("Bar Animation Type: ");
        Serial.println(bar_anim);
        Serial.print("Headlight Brightness: ");
        Serial.println(head_analog);
        Serial.print("Strip Animation Type: ");
        Serial.println(strip_anim);
        Serial.print("Motor Speed Level: ");
        Serial.println(motor_speed);
        Serial.print("Direction: ");
        Serial.println(direct);
        Serial.print("Mast Goes: ");
        Serial.println(level);
        Serial.println("--------------------------------");
      }
      if (bluetooth.read() == '\n') {
        azdırma işlemleri bu satırda yapılacak..

      }
    }
  }

}

, 👍0


1 ответ


3

SoftwareSerial использует прерывание смены контакта. Не все контакты на Mega имеют прерывания смены контактов.

Но на самом деле все это спорный вопрос, потому что, когда вы используете микроконтроллер с большим количеством настоящих аппаратных UART, в любом случае нет необходимости использовать SoftwareSerial.

,