проблема с чтением из com порта Ардуино мега

Тема в разделе "Флудилка", создана пользователем Max19822003, 15 авг 2018.

  1. Max19822003

    Max19822003 Нуб

    Доброго времени суток всем! Подскажите в чем проблема может быть. Написал скетч и программу на Delphi для управления светодиодным модулем p10 для Ардуино Уно. Все работало. Заменил на Ардуино Мега 2560 - перестало работать.
    Привожу текст скетча:
    Код (C++):

    #include <SPI.h>

    #include <DMD2.h>
    #include <Arial_Black_16_ISO_8859_1.h>
    #define DISPLAYS_WIDE 1
    #define DISPLAYS_HIGH 1
    int i2;
    char test[255];
    String inString;String MyStr="";
    int i4=1;
    int i=1;
    SoftDMD dmd(DISPLAYS_WIDE,DISPLAYS_HIGH);
    DMD_TextBox box(dmd, 0, 0, 32, 16);

    void setup() {
    Serial.begin(9600);
    dmd.setBrightness(255);
    dmd.selectFont(Arial_Black_16_ISO_8859_1);
    dmd.begin();
    }

    void loop() {
    while (Serial.available()>0){ // проверяем, поступают ли какие-то команды
    char val = Serial.read(); // переменная val равна полученной команде
    if (val!= 13) {
    inString += val; // формируем строку
    }
    if (val == 13) {
    int i2=atoi(&inString[0]);
    if (i2==8){MyStr="";dmd.clearScreen();box.clear();}

    if (i2>8){if (i2<257){
    MyStr="";dmd.clearScreen();box.clear();
    test[i4]={i2};
    while (i<(i4+1)){
    MyStr+=test;i++;}
    i4++;
    i=1;
    //dmd.drawString(0, 0, MyStr);
    }
    }
    inString = "";}
    }
    dmd.drawString(0, 0, MyStr);
    i4=1;
    }
    Если просто заменить переменную MyStr на конкретное значение, на панель выводится эта надпись. Т.е. проблема я так понимаю с чтением из порта

    Поправьте если затупил
     
    Последнее редактирование: 15 авг 2018
  2. Daniil

    Daniil Гуру

    оформите, пожалуйста, код в тэги
    kod007.jpg
    Скажите, что именно перестало работать? А подключили вы все правильно?
     
  3. Max19822003

    Max19822003 Нуб

    Извините, понял.

    при замене уно на мегу ничего не выводится на светодиодную панель при попытках послать что либо с пк через порт. Если в скетче просто задать текст, то после заливки в мегу он появится на панели. Т.е. панель к меге подсоединена правильно
     
  4. Max19822003

    Max19822003 Нуб

    Так и не могу решить проблему. Возможно есть особенности передачи данных через com порт из Delphi именно для меги? Вот кусок кода на Delphi
    Код (C++):
    CommPortDriver1.PortName:='\\.\'+'COM3';
    CommPortDriver1.BaudRateValue:=9600;
    CommPortDriver1.InBufSize:=2048;
    CommPortDriver1.InputTimeout:=200;
    CommPortDriver1.OutBufSize:=2048;
    CommPortDriver1.OutputTimeout:=500;
    CommPortDriver1.PollingDelay:=50;
    CommPortDriver1.DataBits:=db8BITS;
    CommPortDriver1.StopBits:=sb1BITS;
    CommPortDriver1.Connect;
     
  5. SergeiL

    SergeiL Оракул Модератор

    Delphi тут не при чем. Со стороны PC это обычный последовательный порт.
    Если с Уно работало - должно и с Мегой работать.

    Проверяли в Диспетчере устройств, порт создается при подключении Меги?
    Этот порт используете?

    Если да - ищите на стороне Меги, пробуйте сначала с обычным монитором порта в Arduino IDE поработать.
    Послать что что то Меге, получить. ;)
     
  6. Max19822003

    Max19822003 Нуб

    Действительно это не причем. Проверил сигналы на порт правильно поступают, а вот устройства, подключенные к ним не работают. Возможно дело в библиотеках, я использую DMD2.h и Led4Digits.h (это для таймера светодиодного)
     
  7. SergeiL

    SergeiL Оракул Модератор

    Не переводимая игра слов :).