出典は前回同様に↓です。
ここに記載されているプログラムから変数名など変更して下記を作りました。
■制御プログラム(動作実験用)
#Steppingmoter-control
#Original https://creators-small-room.hatenablog.com/entry/stepmotor-bi
#Edit by kabayon date:20231223
#coding:utf-8
#GPIOライブラリのインストール
#sudo apt update
#sudo apt upgrade
#sudo apt install python3-rpi.gpio
#GPIOライブラリをインポート
import RPi.GPIO as GPIO
#timeライブラリをインポート
import time
#set standerd value of signal
signal_high = 1
signal_low = 0
#ピン番号の割当方式を「コネクタのピン番号」に設定
GPIO.setmode( GPIO.BOARD )
#RaspberryPi3B+でGPIO専用のピン番号
#GPIOxx is for RPi.GPIO #Pxx is for wiring Pi
pin_GPIO17 = 11 #pin_P0 = 11
pin_GPIO27 = 13 #pin_P2 = 13
pin_GPIO22 = 15 #pin_P3 = 15
pin_GPIO23 = 16 #pin_P4 = 16
pin_GPIO24 = 18 #pin_P5 = 18
pin_GPIO25 = 22 #pin_P6 = 22
pin_GPIO5 = 29 #pin_P21 = 29
pin_GPI06 = 31 #pin_P22 = 31
pin_GPIO16 = 36 #pin_P27 = 36
pin_GPIO26 = 37 #pin_P25 = 37
#使用するピン番号を代入
pin_pulse = pin_GPIO17 #P0 for WiringPi
pin_direction = pin_GPIO27 #P2 for WiringPi
pin_ena = pin_GPIO22 #P3 for WiringPi
#使うGPIOピンを出力ピンに設定し、初期出力をローレベルにする
GPIO.setup( pin_pulse , GPIO.OUT , initial = GPIO.LOW )
GPIO.setup( pin_direction , GPIO.OUT , initial = GPIO.LOW )
GPIO.setup( pin_ena , GPIO.OUT , initial = GPIO.LOW )
#TB6600ドライバ情報
#DIR=HIGHで時計回り、DIR=LOWで半時計回り。
#ENA=HIGHでトルク発生、ENA=LOWではトルクが発生しない。
status_direction = signal_high
status_ena = signal_high
#パルスの幅を指定。値を小さくする程高速で回転する。
width_pulse = 0.005
#回転角度を指定
angle_rotate = 360
#減速比を設定
#1軸CNCルータの場合は4を設定
#モータ単体の場合は1を設定
ratio_gear = 1
#回転角度をパルス数に換算
degree_one-rotation = 360
count_pulse_one-rotation = 200
count_pulse = int( ratio_gear * ( angle_rotate * count_pulse_one-rotation/degree_one-rotation ) )
#回転休止時間設定(秒単位)
seconds_sleep = 2.0
#偶数判定値の設定
int_odd = 0
#動作繰り返し数の設定
num_repeat_motion = 6
#動作繰り返し
for i in range( 0 , num_repeat_motion ):
print(" rotate start in cycle: " , i )
for j in range( 0 , count_pulse ):
GPIO.output( pin_ena , status_ena )
GPIO.output( pin_direction , status_direction )
GPIO.output( pin_pulse , signal_low )
time.sleep( width_pulse )
GPIO.output( pin_pulse , signal_high )
time.sleep(wid)
time.sleep( seconds_sleep )
if( i % 2 == int_odd ):
status_direction = signal_low
else:
status_direction = signal_high
#終了メッセージを表示
print( " motion end " )
#GPIOを開放
GPIO.cleanup()
print( " GPIO free " )