Я пишу код для робототехники Vex, которая должна одновременно приводить в движение несколько двигателей с точными временными интервалами. Я написал этот класс, чтобы сделать его более универсальным:
FORWARD = "forward"
REVERSE = "reverse"
class setup_motor():
def __init__(self, motor, direction):
self.motor = motor
self.direction = direction
self.full_executed = False
self.half_executed = False
def push_down(self, degrees, time_after_start, length):
time_elapsed = time.time() - start_time
if time_elapsed > time_after_start and not self.half_executed:
# spin motor
self.half_executed = True
elif time_elapsed > time_after_start + length and not self.full_executed:
# spin motor
self.full_executed = True
После этого у меня есть один раздел, где двигатели вращаются в следующем порядке:
L3.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L2.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L1.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
Почему вращается только L2? Остальные 2 пропускаются.
Они создаются следующим образом:
L1 = setup_motor("L1", FORWARD)
L2 = setup_motor("L2", REVERSE)
L3 = setup_motor("L3", FORWARD)
Я знаю, что прямое/обратное направление отличается, но не уверен, какое это имеет значение. -особенно потому, что это работает в других случаях сценария.
start_time — это просто время запуска сценария.
start_time = time.time() #start of script time
Я знаю, что он пропускает остальные два, потому что я изменил его, чтобы он выводил значения на терминал.
Он выводит:
Motor: L1, time after start: 0, length: 0.3
Time: 0.002918720245361328
Motor: L1, time after start: 0, length: 0.3
Time: 0.30016064643859863
Motor: L3, time after start: 0.6, length: 0.2
Time: 0.6007165908813477
Motor: L3, time after start: 0.6, length: 0.2
Time: 0.8000619411468506
Motor: L2, time after start: 1, length: 0.1
Time: 1.0007250308990479
Motor: L2, time after start: 1, length: 0.1
Time: 1.1002442836761475
Значения выводятся как при движении вниз, так и вверх.
Цикл выглядит следующим образом:
multiplier = 1
while True:
#motor_name.pushdown(degrees, time after start of script, length)
L1.push_down(pressed_degrees, 0*multiplier, 0.3*multiplier)
L1.push_down(pressed_degrees, 0.5*multiplier, 0.1*multiplier) #skipped
L3.push_down(pressed_degrees, 0.6*multiplier, 0.2*multiplier)
L3.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier) #skipped
L2.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L1.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier) #skipped
Подробнее здесь: https://stackoverflow.com/questions/793 ... g-executed
Почему эта функция класса не выполняется? [закрыто] ⇐ Python
Программы на Python
-
Anonymous
1736972764
Anonymous
Я пишу код для робототехники Vex, которая должна одновременно приводить в движение несколько двигателей с точными временными интервалами. Я написал этот класс, чтобы сделать его более универсальным:
FORWARD = "forward"
REVERSE = "reverse"
class setup_motor():
def __init__(self, motor, direction):
self.motor = motor
self.direction = direction
self.full_executed = False
self.half_executed = False
def push_down(self, degrees, time_after_start, length):
time_elapsed = time.time() - start_time
if time_elapsed > time_after_start and not self.half_executed:
# spin motor
self.half_executed = True
elif time_elapsed > time_after_start + length and not self.full_executed:
# spin motor
self.full_executed = True
После этого у меня есть один раздел, где двигатели вращаются в следующем порядке:
L3.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L2.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L1.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
Почему вращается только L2? Остальные 2 пропускаются.
Они создаются следующим образом:
L1 = setup_motor("L1", FORWARD)
L2 = setup_motor("L2", REVERSE)
L3 = setup_motor("L3", FORWARD)
Я знаю, что прямое/обратное направление отличается, но не уверен, какое это имеет значение. -особенно потому, что это работает в других случаях сценария.
start_time — это просто время запуска сценария.
start_time = time.time() #start of script time
Я знаю, что он пропускает остальные два, потому что я изменил его, чтобы он выводил значения на терминал.
Он выводит:
Motor: L1, time after start: 0, length: 0.3
Time: 0.002918720245361328
Motor: L1, time after start: 0, length: 0.3
Time: 0.30016064643859863
Motor: L3, time after start: 0.6, length: 0.2
Time: 0.6007165908813477
Motor: L3, time after start: 0.6, length: 0.2
Time: 0.8000619411468506
Motor: L2, time after start: 1, length: 0.1
Time: 1.0007250308990479
Motor: L2, time after start: 1, length: 0.1
Time: 1.1002442836761475
Значения выводятся как при движении вниз, так и вверх.
Цикл выглядит следующим образом:
multiplier = 1
while True:
#motor_name.pushdown(degrees, time after start of script, length)
L1.push_down(pressed_degrees, 0*multiplier, 0.3*multiplier)
L1.push_down(pressed_degrees, 0.5*multiplier, 0.1*multiplier) #skipped
L3.push_down(pressed_degrees, 0.6*multiplier, 0.2*multiplier)
L3.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier) #skipped
L2.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier)
L1.push_down(pressed_degrees, 1*multiplier, 0.1*multiplier) #skipped
Подробнее здесь: [url]https://stackoverflow.com/questions/79359527/why-isnt-this-class-function-being-executed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия