Pessoal, estou aprendendo agora a utilizar o Raspberry pi pico W e desenvolvi o seguinte código:
Objetivo: criar um carrinho (quatro rodas) autônomo que desvie de objetos. No servo se encontra o HC-SR04, que se movimentam juntos, e servem para o carrinho ter um "campo de visão" mais aberto. Ele funcionou até bem com esse código, mas parace que o servo está disputanto recursos com o restante das outras funções. Como podemos fazer para que isso não aconteça. Vi vários fóruns e explicações de muitas pessoas sobre o uso dos dois núcleos, mas ainda não foi o suficiente para eu conseguir melhorar esse código. Alguém pode me ajudar?
Code:
# ================ definicoes do ultrassom =====================from machine import Pinimport utimetrigger = Pin(3, Pin.OUT)echo = Pin(2, Pin.IN)def ultra(): global distancia trigger.low() utime.sleep_us(2) trigger.high() utime.sleep_us(5) trigger.low() while echo.value() == 0: signaloff = utime.ticks_us() while echo.value() == 1: signalon = utime.ticks_us() timepassed = signalon - signaloff distancia = (timepassed * 0.0343) / 2 print("A distancia é: ",distancia,"cm") # ================ definicoes do motor =====================from machine import PWMimport time # ================ definicoes do servo motor ===================== from servo import Servoimport timeimport _threadservo1 = Servo (17, 544, 2400, 0, 180, 50)delay_ms = 15delay_ms2 = 100 def core0_servo (): while True: for i in range (70, 110, 1 ): servo1.write (i) time.sleep_ms (delay_ms) time.sleep_ms (delay_ms2) for i in range (110, 70, -1 ): servo1.write (i) time.sleep_ms (delay_ms) time.sleep_ms (delay_ms2)_thread.start_new_thread(core0_servo,()) # ============Configurações Motor A ================================pwm1 = PWM (Pin (5))MA_FRENTE = Pin (6, Pin.OUT)MA_RE = Pin (7, Pin.OUT)pwm1.freq (50000)dutyA = 65535# ============Configurações Motor B ================================pwm2 = PWM (Pin (8))MB_FRENTE = Pin (9, Pin.OUT)MB_RE = Pin (10, Pin.OUT)pwm2.freq (50000)dutyB = 65535# ============Configurações Motor C ================================pwm3 = PWM (Pin (11))MC_FRENTE = Pin (12, Pin.OUT)MC_RE = Pin (13, Pin.OUT)pwm3.freq (50000)dutyC = 60000# ============Configurações Motor D ================================pwm4 = PWM (Pin (14))MD_FRENTE = Pin (15, Pin.OUT)MD_RE = Pin (16, Pin.OUT)pwm4.freq (50000)dutyD = 55000def Frente (): utime.sleep(0.1) MA_FRENTE (1) MA_RE (0) pwm1.duty_u16(dutyA) MB_FRENTE (1) MB_RE(0) pwm2.duty_u16(dutyB) MC_FRENTE (1) MC_RE (0) pwm3.duty_u16(dutyC) MD_FRENTE (1) MD_RE (0) pwm4.duty_u16(dutyD) def VirarEsquerda (): utime.sleep(0.1) MA_FRENTE (0) MA_RE (1) pwm1.duty_u16(dutyA) MB_FRENTE (1) MB_RE(0) pwm2.duty_u16(dutyB) MC_FRENTE (0) MC_RE (1) pwm3.duty_u16(dutyC) MD_FRENTE (1) MD_RE (0) pwm4.duty_u16(dutyD) def Parado (): utime.sleep(0.1) MA_FRENTE (0) MA_RE (0) pwm1.duty_u16(dutyA) MB_FRENTE (0) MB_RE(0) pwm2.duty_u16(dutyB) MC_FRENTE (0) MC_RE (0) pwm3.duty_u16(dutyC) MD_FRENTE (0) MD_RE (0) pwm4.duty_u16(dutyD) while True: ultra() if distancia >=30: Frente () else: Parado() utime.sleep(0.3) VirarEsquerda() utime.sleep(0.4) Parado()Objetivo: criar um carrinho (quatro rodas) autônomo que desvie de objetos. No servo se encontra o HC-SR04, que se movimentam juntos, e servem para o carrinho ter um "campo de visão" mais aberto. Ele funcionou até bem com esse código, mas parace que o servo está disputanto recursos com o restante das outras funções. Como podemos fazer para que isso não aconteça. Vi vários fóruns e explicações de muitas pessoas sobre o uso dos dois núcleos, mas ainda não foi o suficiente para eu conseguir melhorar esse código. Alguém pode me ajudar?
Statistics: Posted by williamsf — Mon Jun 23, 2025 2:18 am