TJBot
ケース
形状データをダウンロードできる。
とりあえず、プリントしてみよう。
3Dプリンター不調で頓挫・・・しましたが、調整し直してプリントしました。 パーツ
組んで
組んで
こうなる
スケルトンだと、ターミネーターみたいで、なんか怖い。
特に目が!
カメラ
カメラの向き
youtube を見る限り、そして、実際にはめ込んでみたぴったり感からして、どうやら上下逆向きに(ケーブルを上向きに)設置するようだ。
逆向きに刺そうとすると、どうしてもリボンケーブルのコネクタが鑑賞して刺さらないのだ。
なので、撮影の際などには、-vf, --vflip : Set vertical flip
オプションを付ける。
カメラの動作確認
$ raspistill -w 480 -h 360 -n -vf -o mod.jpg
サーボモーター(腕)
とりあえず動かしてみよう。
以前書いたコードをそのまま使ってみた。
SG92.py
#!/usr/bin/python # coding: utf-8 import RPi.GPIO as GPIO import time import signal import sys gp_out = 21 def exit_handler(signal, frame): print("\nExit") servo.ChangeDutyCycle(2.5) time.sleep(0.5) servo.stop() GPIO.cleanup() sys.exit(0) signal.signal(signal.SIGINT, exit_handler) GPIO.setmode(GPIO.BCM) GPIO.setup(gp_out, GPIO.OUT) # pwm = GPIO.PWM([チャンネル], [周波数(Hz)]) servo = GPIO.PWM(gp_out, 50) servo.start(0.0) val = [2.5,3.6875,4.875,6.0625,7.25,8.4375,9.625,10.8125,12] servo.ChangeDutyCycle(val[0]) time.sleep(0.5) servo.ChangeDutyCycle(val[8]) time.sleep(0.5) servo.ChangeDutyCycle(val[0]) time.sleep(0.5) while True: for i, dc in enumerate(val): servo.ChangeDutyCycle(dc) print("Angle:" + str(i*22.5)+" dc = %.4f" % dc) time.sleep(0.5) for i, dc in enumerate( reversed(val) ): servo.ChangeDutyCycle(dc) print("Angle:" + str(180 - i*22.5)+" dc = %.4f" % dc) time.sleep(0.5)
フルカラーLED
フルカラーLEDを触るのが今回が初めてです。
手元にあるのは カソードコモン
のフルカラーLEDです。
左から、緑、青、共通カソード、赤 ですね。
挿して、520Ωの抵抗を付けました。
グラデーションさせるテスト
https://making.mrlittlebig.com/raspberry-pi-2-フルカラーledをグラデーション-5e4916fda419
こちらのコードを、中断できるように改変させていただきました。
#!/usr/bin/python # coding: utf-8 import RPi.GPIO as GPIO import time import signal import sys def exit_handler(signal, frame): print("\nExit") red.stop() green.stop() blue.stop() time.sleep(0.5) GPIO.cleanup() sys.exit(0) signal.signal(signal.SIGINT, exit_handler) Rpin = 13 Bpin = 19 Gpin = 26 GPIO.setmode(GPIO.BCM) GPIO.setup(Rpin,GPIO.OUT) GPIO.setup(Bpin,GPIO.OUT) GPIO.setup(Gpin,GPIO.OUT) red = GPIO.PWM(Rpin, 50) green = GPIO.PWM(Gpin, 50) blue = GPIO.PWM(Bpin, 50) red.start(0) green.start(0) blue.start(0) blue.ChangeDutyCycle(100) COUNT = 100 T = 0.04 I = 0 time.sleep(0.5) for _ in xrange(0, COUNT): red.ChangeDutyCycle(I) blue.ChangeDutyCycle(100 - I) time.sleep(T) I+=1 I = 0 for _ in xrange(0, COUNT): red.ChangeDutyCycle(100-I) green.ChangeDutyCycle(I) I+=1 time.sleep(T) I = 0 for _ in xrange(0, COUNT): green.ChangeDutyCycle(100 - I) blue.ChangeDutyCycle(I) I+=1 time.sleep(T) time.sleep(0.5) red.stop() green.stop() blue.stop() GPIO.cleanup()
拡散キャップをかぶせました。
マイク
$ lsusb $ lsusb Bus 001 Device 004: ID 8086:0808 Intel Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Intel Corp とのだけ認識されているけど、大丈夫かな?
$ arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
録音テスト
$ arecord -D plughw:1,0 -d 5 test.wav 録音中 WAVE 'test.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル kiyo@raspberrypi:~ $ aplay -D plughw:0,0 test.wav 再生中 WAVE 'test.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル
なお、スピーカーが片方しかない状態(アナログout の2局のうち片方しか配線して居ない状態)なので、モノラルで進めています。