Вот первая попытка. Подумайте об использовании предохранителей, пока мы не убедимся, что именно так можно подключить DFRobot Motor HAT к плате. Точкой подключения на моторе является зеленая цифровая шина.
import pyb
# don't use timers 2,3,5,6
'''
connect:
pyboard Motor Hat
X1 4
X3 3
GND GND
'''
FREQ = 50
backward = pyb.Pin('X1' ,pyb.Pin.OUT_PP)
speed = pyb.Timer(9, freq=FREQ).channel(1, pyb.Timer.PWM,\
pin = pyb.Pin('X3'))
while True:
backward.high()
for percent in range(100):
speed.pulse_width_percent(percent + 1)
pyb.delay(10)
speed.pulse_width_percent(0)
backward.low()
for percent in range(100):
speed.pulse_width_percent(percent + 1)
pyb.delay(10)
speed.pulse_width_percent(0)
Я предположил, что FREQ составляет 50 Гц, это то, что для многих сервоприводов, и я предполагаю, что Arduino использует это как значение по умолчанию для ШИМ (широтно-импульсной модуляции).
Подключите двигатель к разъему M1, а батарею - к разъему питания двигателя. Не подключайтесь к v + на pyboard. Приведите в действие ваш компьютер с собственным источником питания. Ваша моторная шляпа, вероятно, создает много электрических помех.
Двигатель должен начать ускоряться назад, затем внезапно останавливаться, а затем двигаться вперед, становясь быстрее, а затем внезапно останавливаться.
удачи
Быстрый ответ: STL и заголовки Повышения действительно принадлежат предварительно скомпилированного заголовочного файла, даже при том, что эти заголовочные файлы определяют шаблонные классы.
При генерации предварительно скомпилированного заголовочного файла компилятор анализирует текст заголовка (значительная задача!), и преобразовывает его в двоичный формат, который оптимизирован для преимущества компилятора.
Даже при том, что шаблонные классы инстанцируют, когда другие .cpp файлы будут скомпилированы, они инстанцируют от информации в предварительно скомпилированном заголовке, который значительно быстрее, чтобы компилятор читал.
Одной вещью, которую Вы не должны включать в предварительно скомпилированный заголовок, являются файлы, которые являются частью Вашего проекта и часто изменяются, даже если каждый.CPP файл включает эти файлы.
Причина - это - поколение предварительно скомпилированного заголовка может занять много времени, потому что повышение, stl и библиотеки окон являются очень большими.
У Вас мог бы быть простой файл (например, "StringDefs.h"), что все использует. Если StringDefs.h включен в stdafx.h, и один разработчик касается StringDefs.h, то каждый разработчик должен ожидать, пока весь предварительно скомпилированный заголовок не перекомпилировал. Это было бы намного быстрее, если бы StringDefs.h был упущен из предварительно скомпилированного заголовка и проанализирован наряду с каждым.CPP файлом.
Одно дополнение к ответу Andrew Shepherd. Используйте предварительно скомпилированный заголовок для заголовочных файлов, которые являются внешними к Вашему проекту для файлов то изменение нечасто. При изменении заголовочных файлов в текущем проекте все время, вероятно, не стоит предварительно скомпилировать их.
Поместите что-либо в предварительно скомпилированный заголовок, который большинство .cpp файлов в том проекте включало бы так или иначе. Это идет для любого заголовочного файла, действительно. Это позволяет компилятору анализировать эти файлы однажды, и затем повторное использование что информация во всех .cpp файлах в том же проекте.
Я написал статью о методах сокращения времени компиляции. Среди этих методов сообщение о предварительно скомпилированном заголовке и его применении можно найти здесь . В нем также есть раздел о передовых методах, который может вас заинтересовать. Включены сценарии CMake, которые прозрачно обрабатывают его.