今回はデフォルトの8個を減らして、他の用途に使えるGPIOを増やしたい場合。
これも簡単。前回と同様ServoBlasterのオプションを使う。
--p1pins=<list>
これで、サーボモータのID0にGPIO-17、ID1にGPIO-22がセットされた。
もし、デフォルトの設定からIDを変更したくない場合は、ダミーの"0"を噛ませれば良い。
--p1pins=<list>
これで、サーボモータのID0にGPIO-17、ID1にGPIO-22がセットされた。
もし、デフォルトの設定からIDを変更したくない場合は、ダミーの"0"を噛ませれば良い。
--p1pins=<list>
このオプションの<list>に使うピンのボード上の番号をカンマ区切りで書いていくだけ。
上の画像では17本のピンを指定している。
#!/bin/bash export test00=' echo $USER ' export SERVO0='50' export SERVO1='50' export SERVO2='50' export SERVO3='50' export SERVO4='50' export SERVO5='50' export SERVO6='50' export SERVO7='50' export MAIN_DIALOG=' <window> <vbox> <hbox> <vbox> <hbox> <frame サーボ5(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO5</variable> <action>bash -c "echo 5="$SERVO5"% > /dev/servoblaster"</action> <action type="refresh">TEXT5</action> </vscale> </frame> <frame サーボ4(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO4</variable> <action>bash -c "echo 4="$SERVO4"% > /dev/servoblaster"</action> <action type="refresh">TEXT4</action> </vscale> </frame> </hbox> <hbox> <frame サーボ7(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true"> <default>50</default> <variable>SERVO7</variable> <action>bash -c "echo 7="$SERVO7"% > /dev/servoblaster"</action> <action type="refresh">TEXT7</action> </vscale> </frame> <frame サーボ6(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO6</variable> <action>bash -c "echo 6="$SERVO6"% > /dev/servoblaster"</action> <action type="refresh">TEXT6</action> </vscale> </frame> </hbox> </vbox> <vbox> <hbox> <button> <label>ボタン 1</label> <action>echo $LANG</action> </button> <vbox> <button> <label>前進</label> <action>bash -c "$test00"</action> </button> <button> <label>後退</label> </button> </vbox> <button> <label>ボタン4</label> </button> </hbox> <vbox> <frame> <text> <variable>TEXT0</variable> <input>echo "echo 0="$SERVO0"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT1</variable> <input>echo "echo 1="$SERVO1"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT2</variable> <input>echo "echo 2="$SERVO2"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT3</variable> <input>echo "echo 3="$SERVO3"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT4</variable> <input>echo "echo 4="$SERVO4"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT5</variable> <input>echo "echo 5="$SERVO5"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT6</variable> <input>echo "echo 6="$SERVO6"% > /dev/servoblaster"</input> </text> <text> <variable>TEXT7</variable> <input>echo "echo 7="$SERVO7"% > /dev/servoblaster"</input> </text> </frame> </vbox> <entry> <variable>FILE0</variable> <default>"./temp.txt"</default> </entry> <button> <label>Write</label> <action>echo "echo 0="$SERVO0"% > /dev/servoblaster" > $FILE0</action> <action>echo "echo 1="$SERVO1"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 2="$SERVO2"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 3="$SERVO3"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 4="$SERVO4"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 5="$SERVO5"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 6="$SERVO6"% > /dev/servoblaster" >> $FILE0</action> <action>echo "echo 7="$SERVO7"% > /dev/servoblaster" >> $FILE0</action> </button> </vbox> <vbox> <hbox> <frame サーボ0(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true"> <default>50</default> <variable>SERVO0</variable> <action>bash -c "echo 0="$SERVO0"% > /dev/servoblaster"</action> <action type="refresh">TEXT0</action> </vscale> </frame> <frame サーボ1(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true"> <default>50</default> <variable>SERVO1</variable> <action>bash -c "echo 1="$SERVO1"% > /dev/servoblaster"</action> <action type="refresh">TEXT1</action> </vscale> </frame> </hbox> <hbox> <frame サーボ2(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true"> <default>50</default> <variable>SERVO2</variable> <action>bash -c "echo 2="$SERVO2"% > /dev/servoblaster"</action> <action type="refresh">TEXT2</action> </vscale> </frame> <frame サーボ3(%)> <vscale height-request="200" range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO3</variable> <action>bash -c "echo 3="$SERVO3"% > /dev/servoblaster"</action> <action type="refresh">TEXT3</action> </vscale> </frame> </hbox> </vbox> </hbox> </vbox> </window> ' gtkdialog -p MAIN_DIALOG -c
#!/bin/bash export test00=' echo $USER ' export MAIN_DIALOG=' <window> <vbox> <hbox> <button> <label>ボタン1</label> <action>echo $LANG</action> </button> <vbox> <button> <label>前進</label> <action>bash -c "$test00"</action> </button> <button> <label>後退</label> </button> </vbox> <button> <label>ボタン4</label> </button> </hbox> <frame サーボ0(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO0</variable> <action>bash -c "echo 0="$SERVO0"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ1(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO1</variable> <action>bash -c "echo 1="$SERVO1"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ2(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO2</variable> <action>bash -c "echo 2="$SERVO2"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ3(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO3</variable> <action>bash -c "echo 3="$SERVO3"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ4(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO4</variable> <action>bash -c "echo 4="$SERVO4"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ5(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO5</variable> <action>bash -c "echo 5="$SERVO5"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ6(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO6</variable> <action>bash -c "echo 6="$SERVO6"% > /dev/servoblaster"</action> </hscale> </frame> <frame サーボ7(%)> <hscale range-min="10" range-max="90" range-step="1"> <default>50</default> <variable>SERVO7</variable> <action>bash -c "echo 7="$SERVO7"% > /dev/servoblaster"</action> </hscale> </frame> </vbox> </window> ' gtkdialog -p MAIN_DIALOG -c
ブラケットを作り直したいけど、気力が無い |
#!/bin/bash hservo=(0 2 4 6) vservo=(1 3 5 7) function home(){ for i in ${hservo[@]};do echo $i=50% > /dev/servoblaster done echo 0=55% > /dev/servoblaster echo 4=45% > /dev/servoblaster for i in ${vservo[@]};do echo $i=50% > /dev/servoblaster done echo 7=45% > /dev/servoblaster } function star(){ echo 0=65% > /dev/servoblaster echo 2=40% > /dev/servoblaster echo 4=35% > /dev/servoblaster echo 6=60% > /dev/servoblaster sleep 0.1 echo 1=30% > /dev/servoblaster echo 3=70% > /dev/servoblaster echo 5=70% > /dev/servoblaster echo 7=30% > /dev/servoblaster sleep 0.5 echo 1=70% > /dev/servoblaster echo 3=30% > /dev/servoblaster echo 5=30% > /dev/servoblaster echo 7=70% > /dev/servoblaster sleep 0.5 echo 1=30% > /dev/servoblaster echo 3=70% > /dev/servoblaster echo 5=70% > /dev/servoblaster echo 7=30% > /dev/servoblaster } function first(){ echo 1=70% > /dev/servoblaster echo 7=60% > /dev/servoblaster sleep 0.2 echo 0=65% > /dev/servoblaster echo 6=40% > /dev/servoblaster echo 2=40% > /dev/servoblaster echo 4=55% > /dev/servoblaster sleep 0.1 echo 1=30% > /dev/servoblaster echo 7=30% > /dev/servoblaster } function second(){ echo 5=30% > /dev/servoblaster echo 3=30% > /dev/servoblaster sleep 0.2 echo 2=60% > /dev/servoblaster echo 4=35% > /dev/servoblaster echo 0=45% > /dev/servoblaster echo 6=60% > /dev/servoblaster sleep 0.1 echo 5=70% > /dev/servoblaster echo 3=70% > /dev/servoblaster } home sleep 0.5 star sleep 0.5 for((i = 0; i < 5; i++));do first sleep 0.5 second sleep 0.5 done sleep 1 star
右の白いのは、平行リンクっぽい足の動きを確かめるための物で、大きく作ってある。 |
SG90をブラケットにはめ込んでみた。 |
git clone https://github.com/Gadgetoid/WiringPi2-Python.git cd WiringPi2-Python sudo python setup.py install sudo python3 setup.py installサンプル:
#!/usr/bin/env python # -*- coding:utf-8 -*- import wiringpi2 as wiringpi from time import sleep wiringpi.wiringPiSetupGpio() def movleft(pin): wiringpi.softPwmCreate(pin,0,200) sleep(0.5) wiringpi.softPwmWrite(pin,20) def movright(pin): wiringpi.softPwmCreate(pin,0,200) sleep(0.5) wiringpi.softPwmWrite(pin,10) def movmiddle(pin): wiringpi.softPwmCreate(pin,0,200) sleep(0.5) wiringpi.softPwmWrite(pin,15) movleft(17) movright(17) movleft(17) movmiddle(17)
wiringpi.softPwmCreate(pin,0,200)softPwmCreateの第1引数でGPIO番号を指定し、第2引数でPWM初期値(取り敢えず"0"にしとく)、
wiringpi.softPwmWrite(pin,20)後は、softPwmWriteで指定したGPIO番号にいくつのカウンタを送るかを指定する。
if (mknod(MBFILE, S_IFCHR|0600, makedev(100, 0)) < 0)
echo 0=50% > /dev/servoblaster
(「ててる」、って何だよ。直そうと思ったけど、再インストールが面倒なのでそのまま) |