Своеобразное поведение arduino pro micro

Я работаю с микроконтроллером arduino pro и сталкиваюсь со специфической проблемой. Проект, с которым я работаю, также включает в себя arduino MKR NB 1500. Я передаю данные с MKR NB 1500 на arduino pro micro через Serial1(контакты Rx/Tx). Я добавил пример кода, который я использую на обеих платах

программа на arduino MKR NB 1500

void setup() {
  Serial1.begin(9600);
}
void loop() {
  Serial1.print("printing");
  delay(2000);
}

программа в pro micro

#include "Keyboard.h"

void setup() {
  Serial1.begin(9600);
  Keyboard.begin();
}

void loop() {
  Keyboard.write(Serial1.read());
}

Я хотел бы перенести некоторые данные с MKR NB 1500 на pro micro, который эмулирует клавиатуру и печатает данные в редакторе. Я подключаю arduino MKR NB 1500 через USB, используя его собственный USB-порт. Pro micro работает так, как ожидалось, когда я подключаю обе эти платы к USB-портам одного и того же ноутбука. (Вывод: печать, печать, печать, печать)

Однако pro micro выводит значения мусора, когда я подключаю MKR NB 1500 к USB-порту, принадлежащему другому ноутбуку. (Вывод: a10joh<qqj<zstjo)

Есть ли какая-то причина для такого поведения. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация с моей стороны или если я недостаточно ясно выразился.

, 👍1

Обсуждение

Вы соединили территорию? Также вам следует проверить Serial1.available() на pro micro., @Majenko

Спасибо вам за ваш ответ. Подключение оснований, похоже, работает, я проведу еще несколько тестов. Не могли бы вы, пожалуйста, сообщить мне, почему это так. Я новичок в работе с arduino, это было бы полезно в будущем., @sud.ng7

https://majenko.co.uk/blog/our-blog-1/the-importance-of-sharing-grounds-12, @Majenko

если (Сериал1.доступно()) отсутствует. MKR также может эмулировать клавиатуру. с той же библиотекой, @Juraj

Я подключаю собственный USB-порт на плате MKR к сканеру штрих-кодов. Плата MKR в этом случае действует как USB-хост, в результате я не могу использовать плату MKR для эмуляции клавиатуры., @sud.ng7

Данные, которые я хотел бы передать в pro micro, поступают со сканера штрих-кодов., @sud.ng7

`Соединение оснований, кажется, работает, я сделаю еще несколько тестов. Не могли бы вы, пожалуйста, сообщить мне, почему это так"... это проблема с электрической цепью ... ожидали бы вы, что лампочка загорится, если бы вы подключили только один провод между лампочкой и батареей?, @jsotola

Заземление является точкой отсчета для микроконтроллеров для измерения и вывода напряжения. Фактическое место их заземления (как электрический потенциал) может отличаться, поэтому выходное напряжение другого микроконтроллера не будет иметь большого смысла. При подключении заземления вы убедитесь, что оба микроконтроллера используют одну и ту же точку отсчета и, таким образом, могут общаться друг с другом, @chrisl

вы можете использовать сканер штрих-кодов с интерфейсом SPI, @Juraj


1 ответ


1

Вы должны подключить заземление между модулями. Без общего основания логический уровень сигнала не может быть измерен. Хотя обе платы питались через USB от одного и того же ноутбука, у плат были общие точки соприкосновения.


чтение возвращает -1, если ничего не доступно, поэтому проверьте, был ли получен какой-либо символ:

void loop() {
  if (Serial1.available()) {
    Keyboard.write(Serial1.read());
  }
}

кстати: MKR также может эмулировать клавиатуру с помощью библиотеки клавиатур.

,