keitanak が 2023年05月06日12時04分44秒 に編集
コメント無し
本文の変更
# 設計 [前回](https://elchika.com/article/507f0c1d-3dd4-4296-89b4-bb250797509b/)に引き続き、ICL7139をラズパイWから制御してみます。 こんな感じの構成になります。 ラズパイ側とICL7139側は電源電圧も異なることや、デジタルとアナログを分離する観点からも、絶縁された状態で信号をやり取りするために、リレーとフォトカプラを利用して結合します。 この図には入っていませんが、ラズパイWにはI2C接続のOLED LCD(128x64)とプッシュスイッチも接続しています。  # ソースコード 今回ははやりのPythonを利用して作ってみます。MicroPythonのFWをラズパイWにインストールして、Thonnyで開発です。 [こちら](https://interface.cqpub.co.jp/magazine/202303/)の書籍で勉強中です。Arduinoに比較して、敷居が低く簡単に開発ができますね。 ```ICL7139モード変更の例 from machine import Pin, I2C import sh1106 import time # ICL 7319 mode controll function def setmode(a): if (a == 0): # DC V relyreset.on() time.sleep_ms(100) relyreset.off() photor.off() amper.off() hilo.on() elif (a == 1): # AC V relyreset.on() time.sleep_ms(100) relyreset.off() photor.off() amper.off() hilo.off() elif (a == 2 ): # Ω LO relyset.on() time.sleep_ms(100) relyset.off() photor.off() hilo.off() elif ( a == 3 ): # Ω HI relyset.on() time.sleep_ms(100) relyset.off() photor.off() hilo.on() elif ( a == 4 ): # micro A photor.on() relyreset.on() time.sleep_ms(100) relyreset.off() amper.off() elif ( a == 5 ): # m A photor.on() relyreset.on() time.sleep_ms(100) relyreset.off() amper.on() display.fill(0) display.text(dispstr[mode], 0, 0, 1) display.show() return # Initialize display i2c = machine.SoftI2C(scl=machine.Pin(5), sda=machine.Pin(4), freq=400000) display = sh1106.SH1106_I2C(128, 64, i2c, Pin(16), 0x3c, 180) display.sleep(False) dispstr = ["DC Voltage","AC Voltage","LO Register","HI Register","Micro Ampere","Milli Ampere"] # Initialize ICL7139 control pin # default = DC V pin0=off, pin3=off, pin6=on Relay reset # phtor is used to controll DVM mode to Ampere. You need to reset rely. photor = Pin(0, Pin.OUT) photor.off() # relyset is used to set relay mode = Ω relyset = Pin(1, Pin.OUT) relyset.off() # relyreset is used to reset relay mode = V or A relyreset = Pin(2, Pin.OUT) relyreset.on() time.sleep_ms(100) relyreset.off() # apmer is used to swtich microA/mA off = microA on = mA amper = Pin(3, Pin.OUT) amper.off() # hilo is used to swtich HI-DC/LO-AC off = LO-AC = HI-DC hilo = Pin(6, Pin.OUT) hilo.on() # Initialize Push button pin pushb = Pin(7, Pin.IN,Pin.PULL_UP) # set mode = 0 (DCV) mode = 0 setmode(mode) # Wait push Button and increment mode value while True: if pushb.value() == 0: time.sleep_ms(20) mode +=1 mode = mode % 6 display.fill(0) display.text(str(mode), 0, 0, 1) display.show() setmode(mode) while (pushb.value() == 0): time.sleep_ms(100) continue continue ``` # 動作確認 実際にブレッドボード上で組み上げて動作の確認をしました。 プッシュスイッチを押すたびに、モードが切り替わっています。   
次回はICL7139の7セグメント出力を読み取って、逆デコードすることで、数値化を行う為の実験をやりたいと思います。
[次回](https://elchika.com/article/9053d21d-cad9-43d6-9f4e-8c04e18c3f36/)はICL7139の7セグメント出力を読み取って、逆デコードすることで、数値化を行う為の実験をやりたいと思います。