Pro Micro

Тема в разделе "Arduino & Shields", создана пользователем Джон, 30 июл 2018.

Метки:
  1. Джон

    Джон Нуб

    Недавно решил попробовать поработать с Pro Micro. Возникла проблема есть пример при загрузке в Uno все работает, а при загрузке в Pro Micro нет. Подскажите, пожалуйста, в чем может быть проблема

    #define SerialTxControl 2
    #define RS485Transmit HIGH
    #define RS485Receive LOW

    char buffer[100];
    byte state = 0;

    void setup(void) {
    Serial.begin(9600);
    pinMode(3, OUTPUT);
    pinMode(SerialTxControl, OUTPUT);
    digitalWrite(SerialTxControl, RS485Receive); // переводим устройство в режим приёмника
    }

    void loop(void) {
    int i=0;
    if( Serial.available() ){ // если в порт пришли какие-то данные
    delay(5); // немного ждём, чтобы вся пачка данных была принята портом
    while( Serial.available() ){
    buffer[i++] = Serial.read(); // считываем данные и записываем их в буфер
    }
    }
    if(i>0){ // если в буфере что-то есть
    buffer[i++]='\0'; // превращаем содержимое буфера в строку, добавляя нулевой символ
    if( strcmp(buffer, "ping") ){ // если принятая строка равна тексту ping
    digitalWrite(3, state); // мигаем светодиодом
    state = !state;
    }
    }
    }
     
  2. parovoZZ

    parovoZZ Гуру

    Что за бред? Зачем ждать? Флаг или прерывание usart взвёл-значит пора забирать данные. Ждать зачем????
     
  3. Джон

    Джон Нуб

    Скетч брал с инета для образца. я сам еще просто новичок
     
  4. ostrov

    ostrov Гуру

    Отформатируйте программку автоформатом и вставьте через правильный тэг.
     
  5. Джон

    Джон Нуб

    Код (C++):
    #define SerialTxControl 2
    #define RS485Transmit HIGH
    #define RS485Receive LOW

    char buffer[100];
    byte state = 0;

    void setup(void) {
    Serial.begin(9600);
    pinMode(3, OUTPUT);
    pinMode(SerialTxControl, OUTPUT);
    digitalWrite(SerialTxControl, RS485Receive); // переводим устройство в режим приёмника
    }

    void loop(void) {
    int i=0;
    if( Serial.available() ){ // если в порт пришли какие-то данные
    while( Serial.available() ){
    buffer[i++] = Serial.read(); // считываем данные и записываем их в буфер
    }
    }
    if(i>0){ // если в буфере что-то есть
    buffer[i++]='\0'; // превращаем содержимое буфера в строку, добавляя нулевой символ
    if( strcmp(buffer, "ping") ){ // если принятая строка равна тексту ping
    digitalWrite(3, state); // мигаем светодиодом
    state = !state;
    }
    }
    }