2022年4月16日土曜日

raspico/raspi::dcmotor, microbit::keyestudio ks0308,maqueen memo

 https://hellobreak.net/raspberry-pi-pico-dc-motor/  と以下を参考に

https://www.radical-dreamer.com/programming/raspberry-pi-pwm-motordriver/

TB67H450 SINGLE DC-MOTOR DRIVER  つかってOK vrefはラズピコの5vに繋ぐ

------ non-pwm は以下の通り

import machine

import utime

IN1 = machine.Pin(1, machine.Pin.OUT)

IN2 = machine.Pin(2, machine.Pin.OUT)

while True:

    # 正転

    IN1.value(1)

    IN2.value(0)

    utime.sleep(0.5) # この時間が正転時間をきめる

    # 停止

    IN1.value(0)

    IN2.value(0)

    utime.sleep(3)

     # 逆転

    IN1.value(0)

    IN2.value(1)

    utime.sleep(1)

    # 停止

    IN1.value(0)

    IN2.value(0)

    utime.sleep(3)

-------------------------------- pwmは以下の通り

from machine import PWM, Pin
import utime

IN1 = PWM(Pin(1))
IN2 = PWM(Pin(2))
IN1.freq(100)
IN2.freq(100)

max_duty = 65025

while True:
    # 正転
    IN2.duty_u16(0)
    for i in range(50,53):
        IN1.duty_u16(int(max_duty*i*0.01))
        utime.sleep(0.1)
        # 停止
    IN1.duty_u16(0)
    IN2.duty_u16(0)
    utime.sleep(2)
    
    # 逆転
    IN1.duty_u16(0)
    for i in range(50,53):
        IN2.duty_u16(int(max_duty*i*0.01))
        utime.sleep(0.1)
        
    # 停止
    IN1.duty_u16(0)
    IN2.duty_u16(0)
    utime.sleep(2)

-----------------------------------------------------------------

https://www.radical-dreamer.com/programming/raspberry-pi-pwm-motordriver/ :: bt rpi

https://craft-gogo.com/raspberrypi-pwm-motor/ :: by pigpio  以下はクジラのコード

TB67H450 SINGLE DC-MOTOR DRIVER (VMに6Vの電池ボックスから供給必要)簡潔!

import RPi.GPIO as GPIO

from time import sleep

# GPIOのポートを指定 --- (*1)

R_VREF = 13 

R_IN1 = 19

R_IN2 = 26

GPIO.setmode(GPIO.BCM)

GPIO.setup([R_VREF,R_IN1,R_IN2], GPIO.OUT)

# モーターを回す

# 回転速度を指定 --- (*2)

pwm_r = GPIO.PWM(R_VREF, 50) # 50hz

pwm_r.start(30) # デューティ比 30%

try:

    while True:

        # 時計回りにモーターを回す --- (*3)

        print("時計回り");

        GPIO.output(R_IN1, GPIO.HIGH)

        GPIO.output(R_IN2, GPIO.LOW)

        sleep(1)

        # モーターを停止する

        print("停止")

        GPIO.output(R_IN1, GPIO.LOW)

        GPIO.output(R_IN2, GPIO.LOW)

        sleep(1)

        # 逆時計回りにモーターを回す

        print("逆回り")

        GPIO.output(R_IN1, GPIO.LOW)

        GPIO.output(R_IN2, GPIO.HIGH)

        sleep(1)

except KeyboardInterrupt:

    pass

GPIO.cleanup()

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

https://www.micro-bit.info/archives/1141

以下をいれ、モータBにとりつけるだけ、前進せんかったら逆につけるだけ  イチにも二にも水漏れ対策につきる

ーーーーーmaqueen cotnroller for v1ーーーーーボタンAでオンオフトグル操作ー

nput.onButtonPressed(Button.A, function () {
動作中 = !(動作中)
})
let 操舵 = 0
let M2の速度 = 0
let M1の速度 = 0
let 速度 = 0
let 左右の傾き = 0
let 前後の傾き = 0
let 動作中 = false
radio.setGroup(36)
動作中 = false
let LED点灯中 = false
basic.showIcon(IconNames.Happy)
basic.forever(function () {
if (動作中) {
前後の傾き = input.acceleration(Dimension.Y)
左右の傾き = input.acceleration(Dimension.X)
速度 = Math.map(前後の傾き, -1023, 1023, 255, -255)
M1の速度 = 速度
M2の速度 = 速度
操舵 = Math.map(左右の傾き, -1023, 1023, -21, 21)
if (操舵 < 0) {
M1の速度 = Math.trunc(M1の速度 * ((操舵 + 11) / 10))
} else if (操舵 > 0) {
M2の速度 = Math.trunc(M2の速度 * ((操舵 - 11) / -10))
}
} else {
M1の速度 = 0
M2の速度 = 0
}
radio.sendValue("M1", M1の速度)
radio.sendValue("M2", M2の速度)
basic.pause(100)
})
---------------- maqueen-car for v2 --------拡張機能必要--------------
radio.onReceivedValue(function (name, value) {
if (name == "M1") {
M1の速度 = value
if (M1の速度 > 0) {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CW, M1の速度)
} else if (M1の速度 < 0) {
maqueen.motorRun(maqueen.Motors.M1, maqueen.Dir.CCW, Math.abs(M1の速度))
} else {
maqueen.motorStop(maqueen.Motors.M1)
}
} else if (name == "M2") {
M2の速度 = value
if (M2の速度 > 0) {
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CW, M2の速度)
} else if (M2の速度 < 0) {
maqueen.motorRun(maqueen.Motors.M2, maqueen.Dir.CCW, Math.abs(M2の速度))
} else {
maqueen.motorStop(maqueen.Motors.M2)
}
}
})
let M2の速度 = 0
let M1の速度 = 0
M1の速度 = 0
M2の速度 = 0
radio.setGroup(36)
basic.showIcon(IconNames.Happy)
-------------------------------------------------

0 件のコメント:

コメントを投稿