位置制御プログラムの結線図です。
押しボタンスイッチはリセット用なので無くても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)
コメント
コメントを投稿