SG90

Python

さーぼやります。Amazonに出ているもの。バッタもの多いとのことでWEBの助言でこれにしてみた。

ピン接続

なんだか、https://shop.lgs.jp/post-519/ ‎本物を見分けるページもあるようだ・・・。
# 0.5msec = left 90 agree
# 1.45msec= center
# 2.4msec = right 90 agree
# 例題の値では25000でleftフルスイングなのだけれど、ビビリが出る。
# 電源を外部からサーボ電源に供給したが変わらない。(稲妻マークは出づらくなったが・・・3B+の欠陥だな。アダプタ3AでもNGか。とほほなラズパイ。
# サーボ系を12ピンから13番の系にしたが変わらない
# 30000でいい感じだ。(これでも180度は範囲があるような)
# フルスイングでする用途は今の所考えつかないからいいかな。
# オシロでデューティを見たい。
# PCA9685(16チャンネル 12-ビット PWM Servo モーター ドライバー)を使うか。
# サーボモータは増やすとなればモータードライバは必須かな。
# それでビビリあるならモータが不良ということだ。
# もう1個買うか

/* Your code... */
#!/usr/bin/python3
# _*_ coding: utf-8 _*_

import pigpio
import time
import sys
import signal

def signal_handler(signal, frame):
    print('You pressed Ctrl+C!')
    pig.hardware_PWM(12, 50, 0)
    pig.set_mode(12,pigpio.INPUT)
    pig.stop()
    sys.exit(0)

TM = 0.5
PIN = 13
pig = pigpio.pi()
pig.set_mode(PIN, pigpio.ALT0)

print(sys.version)
maxNum = int(input('回数>'))
interval = int(input('間隔>'))
TM = interval

counter = 0

signal.signal(signal.SIGINT, signal_handler)

while ( counter<(maxNum+1)):
    print('120000')
    pig.hardware_PWM(PIN, 50, 120000)
    time.sleep(TM)

    print('72500')
    pig.hardware_PWM(PIN, 50, 72500)
    time.sleep(TM)

    print('25000')
    pig.hardware_PWM(PIN, 50, 30000)
    time.sleep(TM)

    print('72500')
    pig.hardware_PWM(PIN, 50, 72500)
    time.sleep(TM)
    print( '----> count=', counter )
    counter = (counter + 1) + 1

pig.hardware_PWM(PIN, 50, 0)
pig.set_mode(12,pigpio.INPUT)
pig.stop()

 

/* Your code... */
#!/usr/bin/python3
# _*_ coding: utf-8 _*_

import pigpio
import time
import sys
import signal

def signal_handler(signal, frame):
    print('You pressed Ctrl+C!')
    pwmCnt = 72500
    pig.hardware_PWM(PIN, 50, pwmCnt)
    time.sleep(1)
    pig.hardware_PWM(12, 50, 0)
    pig.set_mode(12,pigpio.INPUT)
    pig.stop()
    sys.exit(0)

TM = 0.5
PIN = 13
pig = pigpio.pi()
pig.set_mode(PIN, pigpio.ALT0)
MAXSTOP = 10

TM = 0.01
#interval
SPAN = 1500

counter = 0

signal.signal(signal.SIGINT, signal_handler)

pwmCnt = 120000
flag = 0

pig.hardware_PWM(PIN, 50, pwmCnt)
time.sleep(1)

while 1:
    print(pwmCnt)
    pig.hardware_PWM(PIN, 50, pwmCnt)
    time.sleep(TM)
    if flag == 0:
      pwmCnt = pwmCnt - SPAN
    else:
      pwmCnt = pwmCnt + SPAN

    if pwmCnt < 30000 and flag == 0:
      flag = 1
    elif flag == 1 and pwmCnt >= 120000:
      flag = 0
    MAXSTOP = MAXSTOP + 1
    print( '---max stop Count ---- ',MAXSTOP )
    if MAXSTOP >= 1000:
      break

pwmCnt = 72500
pig.hardware_PWM(PIN, 50, pwmCnt)
time.sleep(1)
pig.hardware_PWM(PIN, 50, 0)
pig.set_mode(PIN,pigpio.INPUT)
pig.stop()

No tags for this post.
タイトルとURLをコピーしました