今回はデフォルトの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
![]() |
| (「ててる」、って何だよ。直そうと思ったけど、再インストールが面倒なのでそのまま) |