Перенастроить порты на mege под Bluetooth.

maxvalin
Offline
Зарегистрирован: 22.02.2016

Добрый день уважаемые форумчани. Опять бьюсь на ровном месте! Во всех примерах что нашел по умолчанию используется tx0 и rx0.   мне нужно использовать другие три на свой выбор - не могу перенастоить хоть убей! Второй час бьюсь головой. Сделал чтоб с компа в телефон отправляло команды- идет без проблемм с этим кодом 

#include <SoftwareSerial.h>  // Software Serial Port

#define baudRate 9600

/* ********** Define Arduino PINs usage ********** */

#define  TxD            14
#define  RxD            15 // SoftwareSerial PINs declaration

/* ********** End of PINs usage definition ********** */

SoftwareSerial btSerial(RxD,TxD);

// Define logging
#include <stdarg.h>

void log(char* format, ...)
{
  char line[512];
  va_list args;
  va_start(args, format);
  vsnprintf(line, sizeof(line), format, args);
  va_end(args);
  Serial.print(line);
}

void setup() {
  Serial.begin(baudRate);      // initialize serial communication at 9600 bits per second:

 /* ********** SoftwareSerial setup ********** */
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  btSerial.begin(9600); //Set bluetooth HC-05 BaudRate to default baud rate 9600
  /* ********** End of SoftwareSerial setup ********** */

  log("Begin:\n");
}

void loop() {
  char recvChar;

  if(btSerial.available()) {
    recvChar = btSerial.read();
    log("bluetooth: recv: %u\n", recvChar);
  }
  if(Serial.available()) {
    recvChar = Serial.read();
    log("bluetooth: send: %u\n", recvChar);
    btSerial.write( recvChar );
  }
}

 а вот чтоб взять эти же порта и тупо с телефона мигать 13 пином- нихрена не идет.. (((

к примеру 

#include <SoftwareSerial.h>
#define baudRate 9600
#define  TxD            14
#define  RxD            15 // SoftwareSerial PINs declaration
SoftwareSerial btSerial(RxD,TxD);

char incomingByte;  // входящие данные
int  LED = 13;      // LED подключен к 12 пину

void setup() {
  pinMode(LED, OUTPUT);
  SoftwareSerial btSerial(RxD,TxD);
}

void loop() {
  if (Serial.available() > 0) {  //если пришли данные
    incomingByte = Serial.read(); // считываем байт
    if(incomingByte == '0') {
       digitalWrite(LED, LOW);  // если 1, то выключаем LED
    }
    if(incomingByte == '1') {
       digitalWrite(LED, HIGH); // если 0, то включаем LED
    }
  }
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

У меги четыре аппаратных UART, зачем вы юзаете SoftwareSerial, когда есть Serial1, Serial2, Serial3 ? Помимо собственно Serial?

maxvalin
Offline
Зарегистрирован: 22.02.2016

Хорошо! я сделаю как скажете- только скажите как в скетче изменить ноги!!))

и неиспользовать библиотеку SoftwareSerial.h раз и без нее все проще 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Serial1, Serial2 и Serial3 уже настроены на свои ноги меги, там ничего специально указывать не надо: подключаете модуль блютуза к нужному аппаратному UART, в скетче юзаете соответствующий Serial, profit.

maxvalin
Offline
Зарегистрирован: 22.02.2016

так, стоп! я ведь как раз и использую Serial 3. Вы подскажите как мне в скетче это реализовать? Просто при опросе указывать Serial 3?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

maxvalin пишет:
так, стоп! я ведь как раз и использую Serial 3. Вы подскажите как мне в скетче это реализовать? Просто при опросе указывать Serial 3?

Да, именно так и пишете:

Serial3.begin(9600);

if(Serial3.available()) ....

 

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

DIYMan пишет:

maxvalin пишет:
так, стоп! я ведь как раз и использую Serial 3. Вы подскажите как мне в скетче это реализовать? Просто при опросе указывать Serial 3?

Да, именно так и пишете:

Serial3.begin(9600);

if(Serial3.available()) ....

"Есть много в мире, друг Горацио, такого, что и не снилось нашим мудрецам!"

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

maxvalin пишет:
так, стоп! я ведь как раз и использую Serial 3. Вы подскажите как мне в скетче это реализовать? Просто при опросе указывать Serial 3?

Вы хоть иногда заглядывайте в справочный раздел Программирование

http://arduino.ru/Reference/Serial
http://arduino.ru/Serial/Begin

Там упоминается Мега с её несколькими Serial.

MacSim
Offline
Зарегистрирован: 28.11.2012

тх, рх любые три на свой выбор. пиши номера ног и используй, кто мешает?

и запомните: Карл Маркс и Фридрих Энгельс это не муж и жена - это четыре разных человека!

если надо 3 сериала измини название ног для сериалов и самих сериалов. а не пиши для всех рх, тх

MacSim
Offline
Зарегистрирован: 28.11.2012

Jeka_M пишет:

maxvalin пишет:
так, стоп! я ведь как раз и использую Serial 3. Вы подскажите как мне в скетче это реализовать? Просто при опросе указывать Serial 3?

Вы хоть иногда заглядывайте в справочный раздел Программирование

http://arduino.ru/Reference/Serial http://arduino.ru/Serial/Begin

Там упоминается Мега с её несколькими Serial.

а зачем? тут болшинство ардуину программируют и даташит на атмегу не открывали, при упоминании ATMega считают что это одна из ардуин.

maxvalin
Offline
Зарегистрирован: 22.02.2016

Да ладно вам! разошлись, прекрасно я понимаю что это за контроллер, поделки и раньше паял на АВР и пиках . Вот программы не писал. Брал готовые решения, здесь же почувствовал полную свободу теперь! Сам порты могу назначить, разводки и травление не нужно! В общим прелести понравились. Но грабли они есть грабли- надо биться. Иногда сложное сьедаю быстро а елементарщина не дается. С меню к примеру начинал с таким гемором, потом сам взял и состряпал.
Раз уж в теме знающие тогда подскажите какое ограничение в скорости в библиотеке ацелстепер, дело в том что 1/16 попробовал, в итоге пришлось убирать перемычку до 1/8. Скорость естественно в два раза возросла но гудит неприятно. Так понимаю есть ограниченные в ней. Прерываниями я ещё не осилю движке вращать на заданное расстояние, только через библиотеку