2022年10月25日火曜日

RaspPi① adt7410,builtin-flask,mcp3208,mcp3002,legacy-cam,aqm0802,lcd1602

ーーーーーーーーーadt7410 i2c tempーーーー

scl:serial clock, sda:serial datasd

https:cdls ls

ls

//kats-eye.net/info/2018/11/07/adt7410/

https://note.cman.jp/convert/2hosu/

ーーーーーーbuiltin flaskーーーーーーーーーーーーーーーーーーーー

https://irohaplat.com/raspberry-pi-local-web-server-flask/

なんとpython3にflaskがビルトインされていた! ラズパイすげー

ーーーーー bbks 本文の直書きコードと違いspidevを用いた付属コードーーーー

mcp3208:: 【ラズパイ】A/Dコンバータ MCP3208と通信するコードの解説 │ be発明家エンジニア (s-toki.net) 初期化の部分が丁寧に書かれている

mcp3208 は16:vcc,15:vcc,14:gnd,13;sck,12:miso,11:mosi,10:ce0,09:gnd

0〜7は各チャンネル(8チャンネルADC)

https://craft-gogo.com/raspberrypi-adconverter/#toc5 が非常に参考になった!

# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO

from time import sleep

import spidev

# MCP3208からSPI通信で12ビットのデジタル値を取得。0から7の8チャンネル使用可

def readadc_spidev(adcnum):

    if ((adcnum > 7) or (adcnum < 0)):

        return -1

    command1 = 0x6 | (adcnum & 0x4)>>2

    command2 = (adcnum & 0x3)<<6

    ret=spi.xfer2([command1,command2,0])

    adcout = (ret[1]&0xf)<<8 | ret[2]

    return adcout


GPIO.setmode(GPIO.BCM)

spi=spidev.SpiDev()

spi.open(0, 0) # bus0, CE0

spi.max_speed_hz = 1000000 # 1MHz


try:

    while True:

        inputVal0 = readadc_spidev(0)

        print(inputVal0)

        sleep(0.2)


except KeyboardInterrupt:

    pass


spi.close()

---------------------------------------------------------------------------------

#クジラ本のコード、mcp3002 using

import spidev

import time

# SPI通信を行うための準備 --- (*1)

spi = spidev.SpiDev()

spi.open(0, 0) # bus0,cs 0(ce1をえらぶなら1)

spi.max_speed_hz = 1000000 # 通信速度の設定 1MHZ

while True:     # 連続して値を読む

    try:

        # https://denkisekkeijin.com/raspberrypi/pi-spi-volume-rd/

        resp = spi.xfer2([0x68, 0x00]) # SPIに命令して回答をえる

# https://www.denshi.club/pc/raspi/5raspberry-pi-zeroiot9a-d6mcp3002.html

# 0、スタート1、シングル1、ODDはチャンネル0だから0、最後はMSBからで1

#     0b0110 1000 => 0x68  これで2バイトおくり、2バイトかえしてもらう

# 読んだ値を10ビットの数値に変換  このばあいMSBからである

# NullBit、10ビット、が入っているが。。。。

        value = ((resp[0] << 8) + resp[1]) & 0x3FF # 0x3 -> 0b0011 は?

# data = ((adc[0] & 3) << 8) | adc[1] と一緒 みたい。。。。

# つまり第一バイトの下位2桁をとり、第二バイトは全部取る。。。。多分!

        print(value)

        time.sleep(0.2)

    except KeyboardInterrupt:

        break


# 通信を終了する --- (*4)

spi.close()

--------------------legacy-cam------------------------------------------------------------

camera module の設定がlegacyになっていたが

https://www.boardgamepark.com/entry/pi_cameraを参考にした

カメラモジュールがOnになっているかカメラが認識されているかも説明あり

https://kats-eye.net/info/2018/11/07/adt7410/ によればregister 0x00,0x01にて

データ変換した結果をもち13ビットデータを含む16ビット(1ワード)を発出

するようである 00には下位ビット(ただし最後の3ビットは余分の0)、

01には上位ビットがはいっている 

https://note.cman.jp/convert/2hosu/ に2のほしゅう

ーーーーーーーーーーaqm0802ーーーーーーーーーーーーーーーーーーー

【ST7032i】使うためのデータシート抜粋日本語訳 | くろべこblog (kurobekoblog.com)

を参考に、Cでライブラリをおこしてみたいとおもったら以下のサイトをみつけた

I2C接続AQMシリーズのキャラクタ表示LCDをラズパイで使う (1) AQM0802 | 電子工作の環境向上 (denshi.club) 残念ながらパイソンで書かれている

このサイトにはaqm1602,acm1602,so1602の説明もあるがaqm1602以外は高価!

aqm1602はCでラズパイ本に詳しい

------------------------lcd 1602----------------------

https://hotsmmrblog.com/display_string_on_1602_lcd_module_with_pi/ 

lcd1602 using  site at raspi

-------------------------------------------------------------------


0 件のコメント:

コメントを投稿