Возникли сомнения по поводу использования Makeblock Orion

Если вы ранее читали мой более подробный рассказ о Makeblock, вы поймете, почему платы Arduino, сделанные Makeblock, имеют некоторые интересные преимущества, которые стоит изучить.

Однако по мере того, как я баловался этим, стало ясно, что время от времени есть много незавершенных дел и вещей, которые не работают. Например, программное обеспечение для плоттера mDraw, которое делает Makeblock, выйдет из строя, если вы дадите ему что-либо, кроме самого основного файла .SVG (macOS, 24 мая 2019 г.).

У Makeblock есть страница на github, где вы можете скачать много их программного обеспечения. Поэтому я попытался загрузить их программное обеспечение Arduino, созданное специально для моего XY Plotter 2.0. Хотя там много полезного, ему не хватает блеска. Демонстрационная программа вообще не работает. Он настолько сложен, что его отладка для новичка в Arduino не доставляет удовольствия.

Так что это просто совет, чтобы вы не совершали тех же ошибок, что и я. Мой совет — возьмите их стандартную библиотеку Makeblock.

По моему опыту, это значительно упрощает постепенное создание и тестирование материала. В нем много примеров кода, которые позволяют вам тестировать любое оборудование, которое вы построили, шаг за шагом. Теперь о том, зачем вам на самом деле нужна специальная библиотека Makeblock Arduino?

Почему бы просто не использовать то, что поставляется в комплекте с Arduino IDE при установке. Это то, что я объясняю ниже.

Как использовать Arduino IDE с платой Makeblock Orion (Uno)

Обычное программирование Arduino включает в себя чтение и запись на определенные контакты Arduino. В то время как, если вы работаете с платами Arudino от Makeblock, такими как Makeblock Orion, вместо этого вы обычно имеете дело с портами.

Плата Orion имеет 8 различных портов, к которым вы подключаете разъемы RJ25. Они похожи на те, которые вы используете для подключения стационарных телефонов к стене.

Каждый из этих кабелей RJ25, которые вы подключаете к портам, имеет 6 разных проводов. 2 из этих проводов являются входным или выходным контактом Arduino. Эти контакты обозначаются как s1 (слот 1) и s2 (слот 2).

Например, если у меня есть концевой выключатель, подключенный к порту 6 и слоту 1, в коде я пишу:

MeLimitSwitch limitSwitch1(PORT_6, SLOT1);

Однако вы не можете написать такой код «из коробки» при установке Arduino IDE, потому что он не поставляется в комплекте с библиотеками Makeblock.

Итак, что вам нужно сделать, это перейти в репозиторий Makeblock github и загрузить .zip файл этого репозитория кода. К счастью, этот репозиторий имеет именно тот макет каталога, который Arduino IDE ожидает от сторонней библиотеки.

Таким образом, вы можете просто добавить эту библиотеку в свою IDE, перейдя по ссылке:

Sketch > Include library > Add Zip library...

Вот и все! Теперь вы готовы попробовать примеры программ Makeblock, которые поставляются с библиотекой. Просто перейдите к:

File > Examples > MakeBlockDrive

Вот пример под названием SerialControlStepper, который демонстрирует, насколько просто управлять шаговым двигателем через последовательное соединение. Вы просто отправляете числа от 0 до 9 через последовательное соединение USB, используя последовательный монитор, доступный из IDE. stepper.moveTo() совершает абсолютное движение, а stepper.move() — относительное.

include "MeOrion.h"
#include <SoftwareSerial.h>

MeStepper stepper(PORT_1); 

void setup()
{  
  Serial.begin(9600);
  // Change these to suit your stepper if you want
  stepper.setMaxSpeed(1000);
  stepper.setAcceleration(20000);
}

void loop()
{
  if(Serial.available()) {
    char a = Serial.read();
    switch(a) {
      case '0':
	      stepper.moveTo(0);
	      break;
      case '1':
	      stepper.moveTo(200);
	      break;
      case '2':
	      stepper.move(50);
	      break;
      case '3':
	      stepper.move(100);
	      break;
      case '4':
	      stepper.move(200);
	      break;
      case '5':
	      stepper.move(400);
	      break;
      case '6':
	      stepper.move(600);
	      break;
      case '7':
	      stepper.move(4000);
	      break;
      case '8':
	      stepper.move(8000);
	      break;
      case '9':
	      stepper.move(3200);
	      break;
    }
  }
  stepper.run();
}