R50 4fd6d9d9de7b34638f63f16582928bb5
Дизайн, Python, IT , Арт

есть фрагмент кода для „теннисной пушки“ и надо его дописать

Добавлено 05 июн 2024 в 16:34
from machine import Pin, ADC, PWM
import time

# Инициализация переменных
duty_signal = 500
duty_min = 640
duty_max = 990

# Настройка АЦП
adc = ADC(Pin(1, Pin.PULL_UP))
adc.atten(ADC.ATTN_11DB)
adc.width(ADC.WIDTH_13BIT)

# Настройка ШИМ для моторчиков
pwmen = [None] # Используем None вместо 'null'
motor_pins = [33, 35, 37] # Пины для моторчиков
for pin in motor_pins:
pwm = PWM(Pin(pin))
pwm.freq(490)
pwm.duty(duty_signal)
pwmen.append(pwm)

# Настройка светодиода
led = Pin(15, Pin.OUT)
led.value(0)

# Настройка ШИМ для выстрела
shooting_pin = 14 # Пин для механизма выстрела
shooting_pwm = PWM(Pin(shooting_pin))
shooting_pwm.freq(490)

start = time.ticks_ms()
INTERVAL = 6500

# Функция для расчета скорости
def speed():
min_adc = 0
max_adc = 8191
discret = (max_adc - min_adc) / (duty_max - duty_min)
try:
result = int(adc.read() / discret)
except:
return 0
if result > (duty_max - duty_min):
return 390
else:
return result

# Функция для управления направлением
def direction_control(angle, pwm_pins):
duty = angle_to_duty(angle)
for pwm in pwm_pins:
pwm.duty(duty)

# Функция для преобразования угла в значение скважности
def angle_to_duty(angle):
return int((angle / 180.0) * (duty_max - duty_min) + duty_min)

# Функция для выстрела
def shoot(power):
duty = power_to_duty(power)
shooting_pwm.duty(duty)
time.sleep(0.1) # Время активации механизма выстрела
shooting_pwm.duty(0) # Остановка выстрела

def power_to_duty(power):
return int((power / 100.0) * (duty_max - duty_min) + duty_min)

# Основной цикл
while True:
if time.ticks_ms() - start >= INTERVAL:
led.value(not led.value())
current_speed = speed()
direction_control(angle=45, pwm_pins=pwmen[1:]) # Установка направления
shoot(power=current_speed) # Выстрел с текущей скоростью
for pwm in pwmen[1:]:
pwm.duty(duty_min + current_speed)
print(f'PWM duty: {pwm.duty()}')
time.sleep(0.3) # Задержка для стабилизации работы

4543285576