ラズパイpicoの ①位置制御プログラム

位置制御プログラムの結線図です。

押しボタンスイッチはリセット用なので無くてもOKです。

RUNを繋ぐとラズパイが言うことを聞かなくなったときにボタンを押すとリセットできます。

以下、プログラムです。

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

# 位置制御テスト

from machine import Pin,PWM

import utime


led=Pin(25,Pin.OUT)#GPIO25を出力ピンに定義

led.value(0)


# Switch

sw1 = Pin(14,Pin.IN,Pin.PULL_DOWN)#スイッチ1

sw2 = Pin(15,Pin.IN,Pin.PULL_DOWN)#スイッチ2


#ステッピングモーターの信号

M1_pul = Pin(2,Pin.OUT)#PUL パルス信号

M1_dir = Pin(3,Pin.OUT)#DIR 方向信号

M1_enr = Pin(4,Pin.OUT)#ENR モーター電源信号



def pulse2(gpio,Hz,pnum,direction):#定速駆動

    try:

        a=1/Hz/2

        wait=int(a*1000000)

        for x in range(pnum):

            M1_enr(1)

            M1_dir(direction)

            gpio(1)

            utime.sleep_us(wait)

            gpio(0)

            utime.sleep_us(wait)

    except:

        gpio(0)

        

        

def pulse3(gpio,startHz,endHz,axel,pnum,direction):#スムース加減速(調整中)

    

    if startHz < endHz:

        for x in range(endHz):

            pulse2(gpio,startHz,pnum,direction)

            startHz = startHz + axel

            pnum=pnum+1

            if startHz > endHz:

                break

    elif startHz > endHz:        

        for x in range(startHz):

            pulse2(gpio,startHz,pnum,direction)

            startHz = startHz - axel

            pnum=pnum+1

            if startHz < endHz:

                break



while True:

    

    if sw1()==0 and sw2()==0:

        pass

    elif sw1()==1:

        pulse2(M1_pul,100,50,1)

        pulse2(M1_pul,100,100,0)

        pulse2(M1_pul,300,50,1)

        pulse2(M1_pul,300,100,0)

        pulse2(M1_pul,500,50,1)

        pulse2(M1_pul,500,100,0)

    elif sw2()==1:

        pulse3(M1_pul,10,100,10,1,1)

        pulse3(M1_pul,100,10,10,1,0)



コメント