忍者ブログ
[17]  [18]  [19]  [20]  [21]  [22]  [23]  [24]  [25]  [26]  [27
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Visual studio2013 起動後にしばらくしてエラーで終了する


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へ
ダイオードはモータ=発電機なので逆転した時に逆起電力を
回路にもどさない


>import time, wiringpi as pi
タイムとワイアリングパイを使うよ
>motor_pin = 23
16ピン ウィアリングパイ23
>pi.wiringPiSetupGpio()
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:
  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に
アナログ変化でなく、擬似的に振幅の変化で作り出している







拍手

再起動中に画面の解像度がVGAになった(原因不明)

sudo leafpad /boot/config.txt
で設定ファイルを変更

hdmi_mode=16 または35に (1024x764 1248x1024)

なんで勝手に変更される?

拍手

RaspberypiでカラーRGBセンサー

ラズパイマガジン2017年10月号のソースを解析してみました。

ちなみにこのセンサーの浜松フォトニックスは、神岡のスーパー
カミオカンデでニュートリノの光検知センサーのメーカーさんで
ノーベル賞受賞に貢献した会社です。

ラズパイマガジン全般に言えることなんだけど、ソースのコピペで
動作はするが、肝心のソース意味が理解できないのが問題だと思う

特にwiringpiを標準としているが、内容を理解して使わないと結局
何もできない事になる。超入門者はともかく、次のステップは苦労
しながら手組に挑戦が必要だが、この段階になると書籍がない

結局ネットでコピペで終わりになってしまう

まずは
>import time, wiringpi as pi
時間を使うのでtimeを
wiringpiをインポート
>S11059_ADDR = 0x2A
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モードに変更

> 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 )
表示

という具合だが、

ポイントは
・マスタースレーブ間のデータのやり取り(プロトコル)
・レジスタ操作
・シフト演算

この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]でも可
 ・秋月電子のデータシート計算式で温度と湿度

全プログラム
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)

拍手

カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
フリーエリア
最新CM
[03/10 DORA]
最新TB
プロフィール
HN:
dorabu
性別:
非公開
バーコード
ブログ内検索
P R
Copyright © ドラブーのアンドロイドとIoTなブログ All rights reserved. / Template by 四季. / Material by てんせん.

忍者ブログ [PR]