27 июня 2014      196      2

Стрела. Моторы… регистры

Продолжу эксперименты со Стрелой, но уже в теплой обстановке Крыма.

Strela — это Arduino-совместимая платформа, предназначенная для уменьшения времени на постройку роботов и упрощения работы с ними. Она выполнена на основе микроконтроллера ATMega32u4 и обладает большим количеством цифровых и аналоговых входов/выходов, выведенных на трехштырьковые контакты. Плата содержит DC-DC преобразователь, позволяет управлять двумя коллекторными моторами постоянного тока до 2А на один канал с напряжением до 24В, подключать модули беспроводной связи и LCD-экран.

В одном из предыдущих постов был рассмотрен вопрос управления моторами, подключенными к робоконтроллеруStrela.
Точнее мотором M1. 
А ведь есть еще мотор M2.
Попытка сделать все по аналогии не привела к цели. Стал разбираться, чем может быть вызван такой сюрприз.

Для одного из моторов используется пин Arduino, который не выведен в Leonardo наружу. Поэтому обращение к нему возможно только на низком уровне, через регистры

.
Как только я получил ответ из Амперки — реально обрадовался!
И вот почему:
0. Для простоты можно использовать удобную библиотеку с простыми командами — можно будет начинать с 7 класса.
1. Поиск соответствия контактов на Стреле — это интересная лабораторная работа для школьников, которая еще и страх снимает перед перетыканием светодиодов и датчиков, когда плата под питанием. 
2. Один из моторов отлично работает по digitalWrite (analogWrite). Это — доступность простых проектов с одним мотором.
3. Второй мотор… Это самая крутая особенность — милости просим в регистры. Это шикарная методическая идея! Даже я никогда бы не полез туда (что уж говорить о школьниках), а тут повод, аккуратно подстроенный педагогом. 

Итак, как управлять вторым мотором.




Колеса решил в отпуск не брать, что нашлось, то и использовал. smile.gif

Комментарии к коду.

Всего на чипе ATmega32u4 (именно он на Стреле) 6 портов: A..F. 

Каждый порт (в нашем случае Е) управляется 3 регистрами. Регистр DDR определяет чем будет являться нога (pin) входом или выходом. При помощи регистра PORT можно установить pin в состояние HIGH или LOW. При помощи регистра PIN можно считать состояние ножек Arduino, когда они работает на вход.



В C++ есть два оператора побитового сдвига: оператор сдвига влево << и оператор сдвига вправо >>. Эти операторы заставляют биты левого операнда сдвинуться влево или вправо на то количество позиций, которое указано во втором операнде.
x = 1; // 00000001
x = 1 << 1; // 00000010
x = 1 << 2; // 00000100

| — побитовое ИЛИ, ~ — побитовое НЕ. Подробнее…

Благодаря такой возможности на Стреле мы можем постепенно «заманивать» (втягивать) школьников в сложные темы.
И не забывать по ЕГЭ (в В1 могут встретиться задания, в которых присутствует термин сдвиг).

Обсуждение: 2 комментария
  1. Копосов Денис Геннадьевич:

    Идея не в библиотеке была.
    С библиотекой всё понятно.
    Идея: заманивать деток чуть выше, выше, выше…
    Обыгрывать все методически.
    🙂

    Когда прямо на занятиях в лагере AYcamp звонили в службу технической поддержки Амперки и получали необходимые консультации (помощь) — дети были в полном восторге, у них мотивация подскакивала так, что вместо 4 положенных по расписанию часов, они занимались по 8.

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

  2. Василий:

    Хотелось бы дополнить про поиск соответствия контактов, регистры и саму библиотеку Strela.
    Библиотека находится здесь https://github.com/amperka/Strela
    Описание простой работы с платой при помощи библиотеки можно найти здесь http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:strela

    Вкратце: чтобы управлять двумя моторами достаточно написать в коде

    drive(127, -255);

    при этом первый мотор начнёт крутится вполсилы в одну сторону, а второй — на полную мощность в другую сторону.
    При наличии библиотеки, управлять контактами можно так:

    pinMode(P5, OUTPUT);
    digitalWrite(P5, HIGH);

Ваш комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Любимые цитаты
«Если человек сразу получает большую зарпла­ту, то он не растёт. Если же зар­плата постепен­но увеличивается, то человек достигает более высокого уровня» (Пётр Леонидович Капица)
Популярные записи
Архивы
Амперка. Модули
РобоНорд-2017
Олимпиада «Будущий инженер»
Календарь записей
Сентябрь 2018
Пн Вт Ср Чт Пт Сб Вс
« Мар    
 12
3456789
10111213141516
17181920212223
24252627282930
Пять последних постов
Фотографии

© 2018 Начала инженерного образования в школе · 163051, Архангельск, ул. Тимме, 22/3. МБОУ Гимназия № 24