×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Visual studio2013 起動後にしばらくしてエラーで終了する
windows10 64ビット vs2015,vs2017同居
昨日まで起動が今日いきなりVs2015が起動後ダウンする現象が発生
セーフモードであげても同じ現象
他のPCでは正常動作
対応
修復インストール 修復せず
再インストール + update4 回復せず
VisualStudio2013 with update5 x86をMSよりダウンロードし
クリーンインストールで回復
MSのupdate後は鬼門
去年の今頃も発生した記憶があるがとっとと2017を使えと
いう事だろうかVS2015も結構落ちまくるのに、2017は怖くて
まだ使えない
VB2008が一番安定している感じ
windows10 64ビット vs2015,vs2017同居
昨日まで起動が今日いきなりVs2015が起動後ダウンする現象が発生
セーフモードであげても同じ現象
他のPCでは正常動作
対応
修復インストール 修復せず
再インストール + update4 回復せず
VisualStudio2013 with update5 x86をMSよりダウンロードし
クリーンインストールで回復
MSのupdate後は鬼門
去年の今頃も発生した記憶があるがとっとと2017を使えと
いう事だろうかVS2015も結構落ちまくるのに、2017は怖くて
まだ使えない
VB2008が一番安定している感じ
PR
RaspberypiでDCモータ by ラズパイマガジン2017/10
立体配線図だけで回路図がなく、コピペ専用の記事なので補足
(VCC)
|
----- M -----
|- ダイオード+|
D
16pin(wiringpi23)----1k---G |-
| S
6pin gnd 20k |
| | |
gnd gnd gnd
1k 信号安定用
20k 信号入力が不足の時にGNDへ
ダイオードはモータ=発電機なので逆転した時に逆起電力を
回路にもどさない
立体配線図だけで回路図がなく、コピペ専用の記事なので補足
(VCC)
|
----- M -----
|- ダイオード+|
D
16pin(wiringpi23)----1k---G |-
| S
6pin gnd 20k |
| | |
gnd gnd gnd
1k 信号安定用
20k 信号入力が不足の時にGNDへ
ダイオードはモータ=発電機なので逆転した時に逆起電力を
回路にもどさない
>import time, wiringpi as pi
タイムとワイアリングパイを使うよ
>motor_pin = 23
16ピン ウィアリングパイ23
>pi.wiringPiSetupGpio()
gpio使用
gpio使用
>pi.pinMode( motor_pin, pi.OUTPUT )
23を出力に
while True:
> pi.digitalWrite( motor_pin, pi.HIGH ) 出力ON 回る
time.sleep(1) 1秒待ち
> pi.digitalWrite( motor_pin, pi.LOW ) 出力OFF 止まる
time.sleep(3) 3秒待ち
このままだとHIGH状態でbreakすると回りぱなしになる
GPIO.clearnup()したいのでけどwiringpiではコマンドが??
一応初期化で処理
try:
このままだとHIGH状態でbreakすると回りぱなしになる
GPIO.clearnup()したいのでけどwiringpiではコマンドが??
一応初期化で処理
try:
except KeyboardInterrupt:
pi.digitalWrite( motor_pin, pi.LOW )
pi.wiringPiSetupGpio()
break
ついでに回転数制御で
ついでに回転数制御で
speed = 0
while ( speed <= 100 ):
pi.softPwmWrite( motor_pin, speed )
time.sleep(0.1)
speed = speed + 1
0-100%まで連続変化だがこれは電圧を0から3.3Vに
アナログ変化でなく、擬似的に振幅の変化で作り出している
0-100%まで連続変化だがこれは電圧を0から3.3Vに
アナログ変化でなく、擬似的に振幅の変化で作り出している
RaspberypiでカラーRGBセンサー
ラズパイマガジン2017年10月号のソースを解析してみました。
ちなみにこのセンサーの浜松フォトニックスは、神岡のスーパー
カミオカンデでニュートリノの光検知センサーのメーカーさんで
ノーベル賞受賞に貢献した会社です。
ラズパイマガジン全般に言えることなんだけど、ソースのコピペで
動作はするが、肝心のソース意味が理解できないのが問題だと思う
特にwiringpiを標準としているが、内容を理解して使わないと結局
何もできない事になる。超入門者はともかく、次のステップは苦労
しながら手組に挑戦が必要だが、この段階になると書籍がない
結局ネットでコピペで終わりになってしまう
まずは
ラズパイマガジン2017年10月号のソースを解析してみました。
ちなみにこのセンサーの浜松フォトニックスは、神岡のスーパー
カミオカンデでニュートリノの光検知センサーのメーカーさんで
ノーベル賞受賞に貢献した会社です。
ラズパイマガジン全般に言えることなんだけど、ソースのコピペで
動作はするが、肝心のソース意味が理解できないのが問題だと思う
特にwiringpiを標準としているが、内容を理解して使わないと結局
何もできない事になる。超入門者はともかく、次のステップは苦労
しながら手組に挑戦が必要だが、この段階になると書籍がない
結局ネットでコピペで終わりになってしまう
まずは
>import time, wiringpi as pi
時間を使うのでtimeを
wiringpiをインポート
時間を使うのでtimeを
wiringpiをインポート
>S11059_ADDR = 0x2A
i2cの接続アドレス sudo i2cdetect -y 1で確認
認識しない 安物のボードがケーブルが原因、取り替えましょう
過去ケーブルが内部で繋がっていない事が何度かあった、恐るべし中華品質
安物センサーの場合は、初期不良も多々、悩む時間があったらとっとと
買い換えるべし
amazonの評価でで誰かが複数個買って1個でも動作すればOKと
書いていたが安物センサーは、ラテン気質が必要、
このセンサーのように国内一流メーカー製品なら安心。
基本的にI2CであろうとSPIであろうと、センサーのレジスタと
raspberypiがやり取りしてデータの送受信をおこなう。
レジスタの概念が必須になる。
センサーにはレジスタマップがかならず公開されているので
そのマップに基づきデータの送受信を実施する
このソースは
x02a(センサー)のアドレスから8ビットをhに格納
x02a(センサー)のアドレス+1から8ビットをiに格納
hに8ビット上位ビットにシフトして下位8ビットにiをセット
16ビットにして10進数で戻す
上位ビットシフトだが256倍する方法もある
ワイアリングでインスタンス(動作させる為の名前)を作成
x02aアドレスをセット(今後は、このインスタンスはこのアドレスに対して
動作)
1秒間お待ちなさい
i2cの接続アドレス sudo i2cdetect -y 1で確認
認識しない 安物のボードがケーブルが原因、取り替えましょう
過去ケーブルが内部で繋がっていない事が何度かあった、恐るべし中華品質
安物センサーの場合は、初期不良も多々、悩む時間があったらとっとと
買い換えるべし
amazonの評価でで誰かが複数個買って1個でも動作すればOKと
書いていたが安物センサーは、ラテン気質が必要、
このセンサーのように国内一流メーカー製品なら安心。
>def read_sensor( reg ):
h = i2c.readReg8( S11059, reg ) #'8bit read
l = i2c.readReg8( S11059, reg + 1 ) #'8bit + 1byye
data = ( h << 8 ) + l #'shift8bit + 8bit
return ( data )
基本的にI2CであろうとSPIであろうと、センサーのレジスタと
raspberypiがやり取りしてデータの送受信をおこなう。
レジスタの概念が必須になる。
センサーにはレジスタマップがかならず公開されているので
そのマップに基づきデータの送受信を実施する
このソースは
x02a(センサー)のアドレスから8ビットをhに格納
x02a(センサー)のアドレス+1から8ビットをiに格納
hに8ビット上位ビットにシフトして下位8ビットにiをセット
16ビットにして10進数で戻す
上位ビットシフトだが256倍する方法もある
>i2c = pi.I2C() #instance
>S11059 = i2c.setup( S11059_ADDR ) #adress set
>time.sleep(1)
ワイアリングでインスタンス(動作させる為の名前)を作成
x02aアドレスをセット(今後は、このインスタンスはこのアドレスに対して
動作)
1秒間お待ちなさい
>while True:
i2c.writeReg8( S11059, 0x00, 0x89 ) #10001001 adcreset sleep off 14.ms
i2c.writeReg8( S11059, 0x00, 0x09 ) #00001001 x x x x low x x 1.4ms
time.sleep( 1.0 )
一生働け
x02aのx00にデータx89 を書き込め
レジスタマップのx00を見るとコントロールになっており、各ビットに
0か1をセットするとその動作になる
このx89はADCリセット、スリープ解除、通信14msという命令
x02aのx00にデータx09 を書き込め
このx09はADCリセット解除、通信14msという命令
(ここでraspberypiからのデータ送信命令を待機)
1秒間お待ちなさい
(待っている間、データが積分される)
ここまでは、秋月のデータシートのサンプル通り
固定モードで実行
> i2c.writeReg8( S11059, 0x03, 0x2A )
readモードに変更
という具合だが、
ポイントは
・マスタースレーブ間のデータのやり取り(プロトコル)
・レジスタ操作
・シフト演算
この3つの知識は必須、コピペではマスターできない
素朴な疑問、このセンサーは実務で何に使えるの?
一生働け
x02aのx00にデータx89 を書き込め
レジスタマップのx00を見るとコントロールになっており、各ビットに
0か1をセットするとその動作になる
このx89はADCリセット、スリープ解除、通信14msという命令
x02aのx00にデータx09 を書き込め
このx09はADCリセット解除、通信14msという命令
(ここでraspberypiからのデータ送信命令を待機)
1秒間お待ちなさい
(待っている間、データが積分される)
ここまでは、秋月のデータシートのサンプル通り
固定モードで実行
> i2c.writeReg8( S11059, 0x03, 0x2A )
readモードに変更
> r = read_sensor( 0x03 )
> g = read_sensor( 0x05 )
> b = read_sensor( 0x07 )
> ir = read_sensor( 0x09 )
x03,x05,x07,x09から読み出し
>def read_sensor( reg )で10進数に変換
>print ( "R:", r, " G:", g, " B:", b, " IR:", ir )
表示x03,x05,x07,x09から読み出し
>def read_sensor( reg )で10進数に変換
>print ( "R:", r, " G:", g, " B:", b, " IR:", ir )
という具合だが、
ポイントは
・マスタースレーブ間のデータのやり取り(プロトコル)
・レジスタ操作
・シフト演算
この3つの知識は必須、コピペではマスターできない
素朴な疑問、このセンサーは実務で何に使えるの?
Raspberrypiで温湿度 SHT31
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
今回はI2C接続のSHT31を使って高精度温度測定に挑戦
秋月電子のSHT31-D15使用センサモジュールキット
回路
VCC、GRDにSDAとSCLを接続
設定
sumbusとI2Ctoolsを導入し、i2cを有効可
プログラム
・秋月電子のデータシートに基づいて
・アドレス 0X45 sudo i2cdetect 1でサーチ
・SHT31にbus.write_i2c_block_data(0x45, 0x2C, [0x06])でコマンドを送信
・しばらく待って 温度2秒 湿度4秒 テストでは1秒
・0x00から6バイト読み込み bus.read_i2c_block_data(0x45, 0x00, 6)
・0バイト目 温度のMSB 1バイト目 温度のLSB
・3バイト目 湿度のMSB 4バイト目 湿度のLSB
・MSBを8ビットシフトしLSBとAND
temp = data[0]<<8|data[1] バイト単位なのでdata[0] * 256 + data[1]でも可
・秋月電子のデータシート計算式で温度と湿度
全プログラム
import smbus
import time
# I2CBUS = 1
bus = smbus.SMBus(1)
# address
# sudo i2cdetect 1
#0x45 comand upMSB 0x2C downMSB 0X06
# address comand bytedata
bus.write_i2c_block_data(0x45, 0x2C, [0x06])
time.sleep(1.0)
# Read data back from 0x00(00), 6 bytes
#data
#data[0]+dat[1]+data[2]+data[3]+data[4]+data[5]+data[6]
# MSB +LSB +CRC +MSB +LSB +CRC
data = bus.read_i2c_block_data(0x45, 0x00, 6)
# Convert the data
#msb+lsb
#temp = data[0] * 256 + data[1]
temp = data[0]<<8|data[1]
temp = -45 + (175 * temp/(pow(2,16) - 1))
#humi =(data[3] * 256 + data[4])
humi =(data[3] <<8|data[4])
humi = 100 * humi/ (pow(2,16) - 1)
# Output data
print ('Temp: %.3f C' %temp)
print ('Humi : %.2f %%RH'%humi)