====== Шасси 2WD SmartElements ======
===== Описание =====
Универсальное трехколесное шасси с двумя ведущими колесами предназначено для конструирования и сборки роботов и других устройств, для которых требуется мобильность.

Шасси является основой для набора «МиниБот», но также может использоваться и для других самостоятельных проектов.

Основные рабочие поверхности шасси выполнены из 3 мм прозрачного акрила. На платформах уже предусмотрены некоторые отверстия для размещения модулей и датчиков, в том числе контроллера (Uno или Leonardo). Акрил легко поддается обработке, а это значит, что вы можете самостоятельно доработать платформы под собственные требования, начиная от сверления дополнительных отверстий и заканчивая изменением формы самого шасси.

В комплект шасси входят:
  * монтажная площадка нижняя: 1 шт
  * монтажная площадка верхняя: 1 шт
  * мотор с редуктором (1:150): 2 шт
  * крепление для мотора: 2 шт
  * колесо с резиновой шиной: 2 шт
  * колесо опорное: 1 шт
  * стойка М3х40: 4 шт
  * винт М3х8: 10 шт

Шасси поставляется в коробке в разобранном виде. Инструкция по сборке входит в комплект.

==== Технические характеристики ====
  * рабочее напряжение моторов: 3-9 В
  * максимальный потребляемый ток одного мотора: 40 мА
  * габаритные размеры в собранном виде Д х Ш х В: 120 х 120 х 60 мм

==== Плюсы использования ====
  * В данном шасси, в отличии от аналогов используются более мощные и качественные моторы
  * Инструкция по сборке на русском языке
  * Полностью готовый комплект для сборки шасси

===== Инструкция по сборке =====

**1.** Прилагая небольшое усилие, наденьте колеса на валы моторов.

{{ :главная:моторы_драйверы_шасси:шасси_1.png?nolink |}}

**2.** Снимите защитную пленку с монтажных площадок. Закрепите моторы с установленными на их валах колесами на нижней монтажной площадке с помощью предназначенных для этой цели крепежных деталей.

{{ :главная:моторы_драйверы_шасси:шасси_2.png?nolink |}}

**3.** Установите опорное колесо на нижней монтажной площадке, используя встроенные в него винты (проследите за тем, чтобы не потерять подшипник, которым снабжено колесо).

{{ :главная:моторы_драйверы_шасси:шасси_3.png?nolink |}}

**4.** Используя четыре металлических стойки М3х40 и восемь винтов М3х8, соедините верхнюю и нижнюю монтажные площадки друг с другом.

===== Пример подключения и использования =====
**Пример:** Для демонстрации работы шасси используется простейший робот, который движется по четырём направлениям (вперед, назад, вправо и влево). Робот собирается очень просто - берётся трёхколёсное шасси с двумя моторами, на платформу шасси крепится контроллер Smart Uno, на контроллер прикрепляется Power Shield, в свою очередь на Power shield прикрепляется Motor shield.

Для этого нам понадобится:
^ Что нужно:                                                                                                                                       ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер SmartUno]]| 1           |
| [[http://smartelements.ru/product/shassi-2wd-smartelements|Шасси 2WD SmartElements]]| 1           |
| [[http://smartelements.ru/product/motor-shield|Motor Shield]]                                                      | 1           |
| [[http://smartelements.ru/product/power-shield|Power Shield]]                           | 1           |


**Подключение:**
  - Закрепите на верхней площадке шасси контроллер Smart Uno с помощью винтов и гаек M2, как указано в инструкции к шасси. 
  - На контроллере закрепите плату Power Shield, путём совмещения контактов платы расширения с контактами конроллера. 
  - Сверху, на Power Shield закрепите плату Motor shield, путём совмещения контактов Motor shield с контактами платы Power Shield.
  - Подключите моторы к плате расширения Motor shield, к клеммным колодкам М1 и М2 (на схеме сверху выделены оранжевым прямоугольником с номером 3). Правый мотор подключите к клеммной колодке M1, красный провод к контакту "+", чёрный к контакту "-". Аналогично подключите левый мотор к клеммной колодке М2.

**Скетч для загрузки:**
<file Arduino>
#define E1 6 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора А.
#define E2 5 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора В.
#define M1 7 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора А.
#define M2 4 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора В.

int motorSpeed = 255;    //Переменная для хранения скорости вращения моторов (вы можете задать свою скорость вращения колес).
int delay_time = 1500;

void motor_drive_config() //Инициализация выводов платы расширения Motor Drive Shield.
{
  pinMode(M1, OUTPUT);    //Назначение вывода M1 выходом.
  pinMode(M2, OUTPUT);    //Назначение вывода M2 выходом.
  pinMode(E1, OUTPUT);    //Назначение вывода E1 выходом.
  pinMode(E2, OUTPUT);    //Назначение вывода E2 выходом.
}

void move_forward() //Движение робота вперед.
{
  digitalWrite(M1, HIGH);       //Левые колеса вращаются вперед.
  digitalWrite(M2, HIGH);       //Правые колеса вращаются вперед.
  analogWrite(E1, motorSpeed);  //Скорость вращения правых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения левых колес.
}

void move_right() //Движение робота вправо.
{
  digitalWrite(M1, LOW);        //Левые колеса вращаются назад.
  digitalWrite(M2, HIGH);       //Правые колеса вращаются вперед.
  analogWrite(E1, motorSpeed);           //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения правых колес.
}

void move_left() //Движение робота влево.
{
  digitalWrite(M1, HIGH);       //Левые колеса вращаются вперед.
  digitalWrite(M2, LOW);        //Правые колеса вращаются назад.
  analogWrite(E1, motorSpeed);  //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);           //Скорость вращения правых колес.
}

void move_stop() //Остановка робота.
{
  digitalWrite(M1, LOW);  //Левые колеса вращаются назад.
  digitalWrite(M2, LOW);  //Правые колеса вращаются назад.
  analogWrite(E1, 0);     //Скорость вращения колес снизить до 0.
  analogWrite(E2, 0);     //Скорость вращения колес снизить до 0.
}

void move_back() //Движение робота назад.
{
  digitalWrite(M1, LOW);        //Левые колеса вращаются назад.
  digitalWrite(M2, LOW);        //Правые колеса вращаются назад.
  analogWrite(E1, motorSpeed);  //Скорость вращения левых колес.
  analogWrite(E2, motorSpeed);  //Скорость вращения правых колес.
}

void setup() // Задание начальных параметров системы.
{
  motor_drive_config();       //инициализация выводов платы расширения Motor Drive Shield.
  move_stop();                //начальная позиция робота — робот стоит.  
}

void loop() //Основной цикл
{
  move_forward();     //движение вперёд
  delay(delay_time);  //задержка
  move_right();       //движение вправо
  delay(delay_time);  //задержка
  move_left();        //движение влево
  delay(delay_time);  //задержка
  move_back();        //движение назад
  delay(delay_time);  //задержка
  move_stop();        //остановка
  delay(delay_time);  //задержка
}
</file>