예제 #1
0
 def __init__(self):
     self.lock = Lock()
     # Setup pins for spi1, spi0
     wiringpi.pinMode(23, 1)
     wiringpi.pinMode(24, 1)
     wiringpi.wiringPiSPISetup(0, 4000000)
     wiringpi.pcf8574Setup(self.EXPANDER_BASE_PIN, 0x41)
예제 #2
0
    def runThread(self):
        print("started spi controller")
        self.run = True
        SPIchannel = 0  # SPI Channel (CE0)
        SPIspeed = 1000000  # Clock Speed in Hz
        wiringpi.wiringPiSetupGpio()
        wiringpi.wiringPiSPISetup(SPIchannel, SPIspeed)
        value = 1
        to_send = bytes([value])
        while self.run:
            start = time.time()

            #print(str(self.run))
            #print(str(type(wiringpi.wiringPiSPIDataRW(SPIchannel, to_send)[1])))
            self.data[0] = wiringpi.wiringPiSPIDataRW(SPIchannel, to_send)[1][0]
            self.data[1] = wiringpi.wiringPiSPIDataRW(SPIchannel, to_send)[1][0]
            #print("sent:")
            #print(value)
            # value += 1
            # to_send = [value]
            #print("response:")
            #print(str(self.data))
            #print("Timediff: " + str(time.time() - start))
            self.split(self.data)
            time.sleep(1 / (self.FREQ - (time.time() - start)) + 0.01)
        print("stopped spi controller")
예제 #3
0
def L6470_init():
    print('***** start spi test program *****')

    # SPI channel 0 を 1MHz で開始。
    #wp.wiringPiSetupGpio()
    wp.wiringPiSPISetup(0, L6470_SPI_SPEED)

    #デバイスのリセット
    L6470_resetdevice()

    # MAX_SPEED設定 最大回転スピード値(19bit) 初期値は 0x41
    L6470_setparam_maxspeed(0x20)

    # KVAL_HOLD設定。
    L6470_setparam_kvalhold(0xFF)

    # KVAL_RUN設定。
    L6470_setparam_kvalrun(0xFF)

    # KVAL_ACC設定。
    L6470_setparam_kvalacc(0xFF)

    # KVAL_DEC設定。
    L6470_setparam_kvaldec(0x40)

    # OCD_TH設定。
    L6470_setparam_ocdth(0x0F)

    # STALL_TH設定。
    L6470_setparam_stallth(0x7F)
예제 #4
0
    def __init__(self, channel=0, busy=5, speed=L6470_SPI_SPEED):
        self.channel = channel
        self.busy = busy
        wp.wiringPiSPISetup(self.channel, speed)
        self.init()

        GPIO.setmode(GPIO.BCM)
        GPIO.setup(self.busy, GPIO.IN)
예제 #5
0
 def __init__(self, DEBUG=False):
     self.DEBUG = DEBUG
     wiringpi.wiringPiSPISetup(SPI_CS, SPI_SPEED)
     self.sendCmd(MAX7219_SCANLIMIT, 7)  # enable outputs
     self.sendCmd(MAX7219_DECODEMODE, 0)  # no digit decode
     self.sendCmd(MAX7219_DISPLAYTEST, 0)  # display test off
     self.clear()
     self.brightness(15)  # brightness 0-15
     self.sendCmd(MAX7219_SHUTDOWN, 1)  # start display
예제 #6
0
def send():
    SPIchannel = 0  #SPI Channel (CE0)
    SPIspeed = 4800  #Clock Speed in Hz
    wiringpi.wiringPiSetupGpio()
    wiringpi.wiringPiSPISetup(SPIchannel, SPIspeed)
    sendData = chr(170)+chr(170)+chr(170)+chr(170)+chr(170)+chr(170)+chr(170)\
    +chr(170)+chr(170)+chr(170)+chr(170)+chr(170)+chr(170)+chr(170)+chr(170)\
    +chr(170)+chr(170)+chr(170)
    recvData = wiringpi.wiringPiSPIDataRW(SPIchannel, sendData)
    print recvData
예제 #7
0
파일: spi.py 프로젝트: RPIDASeditor/KWH
def send( ):
    SPIchannel = 0 #SPI Channel (CE0)
    SPIspeed = 2400 #Clock Speed in Hz
    wiringpi.wiringPiSetupGpio()
    wiringpi.wiringPiSPISetup(SPIchannel, SPIspeed)
    sendData = chr(0)+chr(0)+chr(0)+chr(0)+chr(64)+chr(100)+chr(0)\
    +chr(8)+chr(2)+chr(0)+chr(144)+chr(40)+chr(232)+chr(246)+chr(0)\
    +chr(0)+chr(0)+chr(0) 
    recvData = wiringpi.wiringPiSPIDataRW(SPIchannel, sendData)
    print recvData
예제 #8
0
파일: piXtend.py 프로젝트: MJPees/PiXtendPy
def Spi_Setup(spi_device):
    global byInitFlag
    pin_Spi_enable = 5
    Spi_frequence = 100000
    if byInitFlag < 1:
        wiringpi.wiringPiSetup()
        byInitFlag = 1
    wiringpi.pinMode(pin_Spi_enable, wiringpi.OUTPUT)
    wiringpi.digitalWrite(pin_Spi_enable, 1)
    wiringpi.wiringPiSPISetup(spi_device, Spi_frequence)
    return (0)
예제 #9
0
파일: spi2.py 프로젝트: RPIDASeditor/KWH
def send():
    SPIchannel = 0  #SPI Channel (CE0)
    SPIspeed = 2400  #Clock Speed in Hz
    wiringpi.wiringPiSetupGpio()
    wiringpi.wiringPiSPISetup(SPIchannel, SPIspeed)
    sendData = sys.argv[1]
    #    sendData = chr(0)+chr(64)+chr(16)+chr(4)+chr(1)+chr(64)+chr(68)\
    #    +chr(16)+chr(4)+chr(1)+chr(0)+chr(72)+chr(20)+chr(116)+chr(123)\
    #    +chr(0)+chr(64)+chr(16)+chr(4)+chr(1)
    recvData = wiringpi.wiringPiSPIDataRW(SPIchannel, sendData)
    print recvData
예제 #10
0
def L6470_init(channel):
    w.wiringPiSPISetup(channel, FREQUENCY)
    #MAX_SPEEDの設定
    #レジスタアドレス
    L6470_write(channel, 0x07)
    #最大回転スピード値
    L6470_write(channel, 0x00)
    L6470_write(channel, 0x25)

    #KVAL_HOLDの設定
    #レジスタアドレス
    L6470_write(channel, 0x09)
    #モータ停止中の電圧の設定
    L6470_write(channel, 0xFF)

    #KVAL_RUN設定
    #レジスタアドレス
    L6470_write(channel, 0x0A)
    #モータ定速回転中の電圧設定
    L6470_write(channel, 0xFF)

    #KVAL_ACC設定
    #レジスタアドレス
    L6470_write(channel, 0x0B)
    #モータ加速中の電圧の設定
    L6470_write(channel, 0xFF)

    #KVAL_DECの設定
    #レジスタアドレス
    L6470_write(channel, 0x0C)
    #モータ減速中の電圧設定
    L6470_write(channel, 0x40)

    #OCD_TH設定
    #レジスタアドレス
    L6470_write(channel, 0x13)
    #オーバーカレントスレッショルド設定
    L6470_write(channel, 0x0F)

    #STALL_TH設定
    #レジスタアドレス
    L6470_write(channel, 0x14)
    #ストール電流スレッショルド設定
    L6470_write(channel, 0x7F)

    # start slopeデフォルト
    #レジスタアドレス
    L6470_write(channel, 0x0E)
    L6470_write(channel, 0x00)

    #デセラレーション設定
    #レジスタアドレス
    L6470_write(channel, 0x10)
    L6470_write(channel, 0x29)
예제 #11
0
    def __init__(self):
        wiringpi.wiringPiSetupGpio()

        # setup SPI
        self.channel = 0  # SPI_CE0  or GPIO 08 or Pin25
        self.speed = 500000
        wiringpi.wiringPiSPISetup(self.channel, self.speed)
        # setup PWM
        self.PWM_GPIO = 18  # the hardware PWM is GPIO_18 or pin 12
        wiringpi.pinMode(self.PWM_GPIO, 2)  # the hardware PWM is on GPIO 18
        self.brightness = 0
        self.set_brightness(self.brightness)
예제 #12
0
 def __init__(self, spi_ch=1, spi_speed=2000000):
     """
     Parameters
     ----------
     spi_ch : int, optional
         SPI channel. Default = 1.
     spi_speed : int, optional
         SPI speed in Hz. Default = 2000000.
     """
     self.spi_ch = spi_ch
     self.spi_speed = spi_speed
     self.rgb = [0, 0, 0]
     wiringpi.wiringPiSetupGpio()
     wiringpi.wiringPiSPISetup(self.spi_ch, self.spi_speed)
예제 #13
0
def main():
  count = 0
  SPI_CS = 0
  SPI_SPEED = 100000
  pi.wiringPiSPISetup (SPI_CS, SPI_SPEED)
  accel = lis3dh.lis3dh( SPI_CS )

  while True:
    ( acc_x, acc_y, acc_z ) = accel.get_accel()
    ( x_angle, y_angle ) = accel.get_angle()
    print (count, "  A_X : ", acc_x, " A_Y : ", acc_y, "A_Z : ", acc_z )
    print ("X_angle : ", x_angle, " Y_angle : ", y_angle, "\n" )
    #time.sleep(0.5)
    count += 1
예제 #14
0
    def __init__(self):
        # Set up the wiringpi object to use physical pin numbers
        wp.wiringPiSetupPhys()
        print("pyads1256 1")

        # Initialize the DRDY pin
        wp.pinMode(self.DRDY_PIN, wp.INPUT)
        print("pyads1256 2")

        # Initialize the reset pin
        wp.pinMode(self.RESET_PIN, wp.OUTPUT)
        wp.digitalWrite(self.RESET_PIN, wp.HIGH)
        print("pyads1256 3")

        # Initialize PDWN pin
        wp.pinMode(self.PDWN_PIN, wp.OUTPUT)
        wp.digitalWrite(self.PDWN_PIN, wp.HIGH)
        print("pyads1256 4")

        # Initialize CS pin
        wp.pinMode(self.CS_PIN, wp.OUTPUT)
        wp.digitalWrite(self.CS_PIN, wp.HIGH)
        print("pyads1256 5")

        # Initialize the wiringpi SPI setup
        print("Initializing wiringPiSPISetup with channel=", self.SPI_CHANNEL,
              "and frequency=", self.SPI_FREQUENCY)
        spi_success = wp.wiringPiSPISetup(self.SPI_CHANNEL, self.SPI_FREQUENCY)
        debug_print("SPI success " + str(spi_success))
        print("pyads1256 6", spi_success)
예제 #15
0
    def __init__(self,spi_id,spd):
        self.diff=[0 for _ in range (2)]
        self.angl=0
        self.integrald=0
        self.integrala=0
        self.delta=0.001 #時間差
        self.speed=spd
        self.id=spi_id
        L6470_SPI_SPEED     = 1000000
        print("***** start spi test program *****")
        if  (wp.wiringPiSPISetup(spi_id, L6470_SPI_SPEED)<0):
            print('spi'+spi_id+ 'setup failed')
        # MAX_SPEED設定。
        # レジスタアドレス。
        self.Write(0x07, spi_id)
        # 最大回転スピード値(10bit) 初期値は 0x41
        self.Write(0x00, spi_id)
        self.Write(0x25, spi_id)
        # KVAL_HOLD設定。
        # レジスタアドレス。
        self.Write(0x09, spi_id)
        # モータ停止中の電圧設定(8bit)
        self.Write(0xFF, spi_id)

        # KVAL_RUN設定。
        # レジスタアドレス。
        self.Write(0x0A, spi_id)
        # モータ定速回転中の電圧設定(8bit)
        self.Write(0xFF, spi_id)

        # KVAL_ACC設定。
        # レジスタアドレス。
        self.Write(0x0B, spi_id)
        # モータ加速中の電圧設定(8bit)
        self.Write(0xFF, spi_id)

        # KVAL_DEC設定。
        # レジスタアドレス。
        self.Write(0x0C, spi_id)
        # モータ減速中の電圧設定(8bit) 初期値は 0x8A
        self.Write(0x40, spi_id)

        # OCD_TH設定。
        # レジスタアドレス。
        self.Write(0x13, spi_id)
        # オーバーカレントスレッショルド設定(4bit)
        self.Write(0x0F, spi_id)
        # STALL_TH設定。
        # レジスタアドレス。
        self.Write(0x14, spi_id)

        # ストール電流スレッショルド設定(4bit)
        self.Write(0x7F, spi_id)

    #start slopeデフォルト
        #   /// レジスタアドレス。
        self.Write(0x0e, spi_id)
        self.Write(0x00, spi_id)
        self.Write(0x10, spi_id)
        self.Write(0x29, spi_id)
예제 #16
0
파일: simple.py 프로젝트: pige252/python
def main():
    if wp.wiringPiSetup() == -1:
        print ("Unable to start wiringPi")
        sys.exit(1)

    if wp.wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED) == -1:
        print ("wiringPiSPISetup Failed")
        sys.exit(1)

    wp.pinMode(CS_MCP3208, wp.OUTPUT)

    while 1:
        t = time.time()

        vt = read_adc(0)
        R = (10000*vt)/(5-vt)
        vt = 5*R/(R+10000)
        temp = -0.3167*(vt**6) + 4.5437*(vt**5) - 24.916*(vt**4) + 63.398*(vt**3) - 67.737*vt*vt - 13.24*vt + 98.432

        vh = read_adc(1)
        humidity = (((vh/5.0)-0.16)/0.0062)/(1.0546-0.00216*temp)

        print('{} Temp={}C, Humid={}%'.format(t, temp, humidity))
        data = 'rasptest temp={},hum={} {:d}'.format(temp, humidity, int(t * (10**9)))
        print("Send data to DB")
        r = requests.post('http://192.168.1.231:8086/write', auth=('mydb', 'O7Bf3CkiaK6Ou8eqYttU'), params={'db': 'mydb'}, data=data)
        print("Return status: {}", r.status_code)

        time.sleep(30)
예제 #17
0
def init(managerDictArg, logListArg, extraLogArrayArg):
    global managerDict, logList, extraLogArray  # To work on the callback
    managerDict = managerDictArg
    logList = logListArg
    extraLogArray = extraLogArrayArg

    wiringpi.wiringPiSetupGpio()  # Set the BCM pin numbering
    wiringpi.wiringPiSPISetup(LORA_SPI_CHANNEL, SPIspeed)

    wiringpi.pinMode(PIN_LORA_IRQ, wiringpi.GPIO.INPUT)
    wiringpi.pullUpDnControl(PIN_LORA_IRQ, wiringpi.GPIO.PUD_DOWN)
    wiringpi.pinMode(PIN_LORA_RST, wiringpi.GPIO.OUTPUT)
    # wiringpi.pinMode(LED_PIN, wiringpi.GPIO.OUTPUT)

    reset()

    main()
예제 #18
0
def serial(arr):

    import wiringpi
    import math

    #pin raspi 74HC595
    #MOSI= 19 #SDI
    #CLK = 23 #SCK
    #CE0 = 24 #LATCH

    SPI_Ch = 0  #CE0
    SPI_Speed = 100000

    # initialization
    print("Initialization...")
    wiringpi.wiringPiSPISetup(SPI_Ch, SPI_Speed)

    num_items = 16
    data = ''
    bit = ''

    for i in range(num_items):
        if str(i + 1) in arr:
            bit = bit + '1'
        else:
            bit = bit + '0'

    print bit

    bit_array = split_str(bit, 8)

    for row in bit_array:
        data = data + chr(int(row, 2))

    wiringpi.wiringPiSPIDataRW(SPI_Ch, data)

    print("done")
예제 #19
0
def main():
    setupresp = wp.wiringPiSetupGpio()
    print 'SetupGpio returned ' + str(setupresp)
    setupresp = wp.wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED)
    print 'SPISetup returned ' + str(setupresp)

    #writeData = str('FF')
    #writeData = { bytes(255), bytes(255) }
    writeData = bytes('FF')
    #writeData = bytearray.fromhex('FF FF')
    #test_all_on = "FF"
    #hex_data = test_all_on.decode("hex")
    #print hex_data
    #writeData = hex_data
    print 'writing...'
    recvData = wp.wiringPiSPIDataRW(SPI_CHANNEL, writeData)
    print 'got back ' + str(recvData)
예제 #20
0
def init():
    """   
       BSP initialize function. Must be called before any other BSP related
       functions.
    
    """
    global gI2cFd

    if wiringpi.wiringPiSetup() < 0:
        print "bsp_init: failed to initialize wiringPi"
        return -1
        
    gI2cFd = wiringpi.wiringPiI2CSetup(LM75A_I2C_ADDR)
    
    if gI2cFd < 0:
        print "bsp_init: failed to initialize I2C"
        return -1
    
    if wiringpi.wiringPiSPISetup(0, 1000000) < 0:
        print "bsp_init: failed to initialize SPI"
        return -1
    
    return 0
예제 #21
0
    def __init__(self, ss, speed, vref):
        self.ss = ss
        self.speed = speed
        self.vref = vref

        pi.wiringPiSPISetup(self.ss, self.speed)
예제 #22
0
import wiringpi

wiringpi.wiringPiSetupGpio()
channel = 1
speed = 500000
wiringpi.wiringPiSPISetup(channel, speed)
wiringpi.pinMode(7, 1)
wiringpi.pinMode(8, 1)
wiringpi.pinMode(23, 1)
wiringpi.pinMode(24, 1)
buf = "hello"
retlen, retdata = wiringpi.wiringPiSPIDataRW(0, buf)

print retlen, retdata
예제 #23
0
 def run(self):
   wiringpi.wiringPiSPISetup(self.spi_port, 2500000)
   self.change_pattern("BLANK")
   self.mqtt_client.loop_forever()
예제 #24
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 27 22:51:05 2018

@author: pi
"""

import wiringpi
import struct
import time

wiringpi.wiringPiSetupGpio()
SPIChannel = 0
SPIFrequency = 488000
wiringpi.wiringPiSPISetup(SPIChannel,SPIFrequency)

read_bit = 0b10000000 #read bit
write_bit = 0b0000000 #write bit
address = 0 #send an address in the first byte
print_address = 10
data = 0

def send_packets_read(num_packets=1):

    for n in range(num_packets):
        buf = struct.pack('BBBBBBBBBBBB', address | read_bit, 0,0,1,2,3,4,5,6,7,8,9)
    
        retlen, retdata = wiringpi.wiringPiSPIDataRW(SPIChannel,buf)

        return_tuple = struct.unpack('BBBBBBBBBBBB',retdata)
예제 #25
0
def L6470_softhiz():
    print("***** Softhiz. *****")
    dir = 0xA8
    # コマンド(レジスタアドレス)送信。
    L6470_write(dir)
    time.sleep(1)


if __name__ == "__main__":
    speed = 0

    print("***** start spi test program *****")

    # SPI channel 0 を 1MHz で開始。
    #wp.wiringPiSetupGpio()
    wp.wiringPiSPISetup(L6470_SPI_CHANNEL, L6470_SPI_SPEED)

    # L6470の初期化。
    L6470_init()

    while True:
        for i in range(0, 10):
            speed = speed + 2000  # 30000 位まで
            L6470_run(speed)
            print("*** Speed %d ***" % speed)
            time.sleep(1)

        for i in range(0, 10):
            speed = speed - 2000
            L6470_run(speed)
            print("*** Speed %d ***" % speed)
예제 #26
0
import wiringpi
print('done import')

SPIchannel = 1 #SPI Channel (CE1)
SPIspeed = 8000000 #Clock Speed in Hz (8MHz)
print('done channel and speed set')

wiringpi.wiringPiSetupGpio()
print('done setup 2')

wiringpi.wiringPiSPISetup(SPIchannel, SPIspeed)
print('done setup 3')

sendData = str(42) #will send TWO bytes, a byte 4 and a byte 2
print('done sending')
recvData = wiringpi.wiringPiSPIDataRW(SPIchannel, sendData)
print('done receiving')
print(recvData)

#recvData now holds a list [NumOfBytes, recvDataStr]

#alternatively, to send a single byte:
#sendData = chr(42) #will send a single byte containing 42
#recvData = wiringpi.wiringPiSPIDataRW(SPIchannel, sendData)
#recvData is again a list

예제 #27
0
파일: robolib.py 프로젝트: NickAmes/jdrobot
def init():
    """Setup the SPI interface for communication with the microcontroller."""
    wiringpi.wiringPiSetupGpio()  # For GPIO pin numbering
    wiringpi.wiringPiSPISetup(0, 500000)
예제 #28
0
 def __init__(self):
     wiringpi.wiringPiSPISetup(1, 500000)
Created on Wed Jun 15 10:06:42 2016 
@author: adi

"""
 
 
import socket
import wiringpi
from time import ctime, sleep
 

port =5623
host = ''
buff=1024
wiringpi.wiringPiSetupGpio()
wiringpi.wiringPiSPISetup(0, 500000) 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(5)
 
while True:
    conn, addr =s.accept()
    to_write =  ctime()+" - connected to: "+ addr[0] + " on port "+str(addr[1])+"\n" 
    with open('connection-log.txt', 'a+') as f:
        f.write(to_write)
    talk=conn.recv(1024)
    to_write = ctime()+" - Message from client: \'"+ talk.decode() + "\'\n" 
    with open('connection-log.txt', 'a+') as f:
        f.write(to_write)
        to_write = ctime()+" - Writing to SPI\n"
예제 #30
0
SPI_CH = 0
READ_CH = 0

param = sys.argv
set_smell = param[1]
already_dgree = int(param[2])
set_dgree = int(param[3])

wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(motor1_pin, 1)
wiringpi.pinMode(motor2_pin, 1)
wiringpi.pinMode(servo_pin, 2)
wiringpi.pwmSetMode(0)
wiringpi.pwmSetRange(1024)
wiringpi.pwmSetClock(375)
wiringpi.wiringPiSPISetup(SPI_CH, 1000000)


def motor_t(num):
    wiringpi.digitalWrite(motor1_pin, 0)
    wiringpi.digitalWrite(motor2_pin, 1)
    time.sleep(num)


def motor_f(num):
    wiringpi.digitalWrite(motor1_pin, 1)
    wiringpi.digitalWrite(motor2_pin, 0)
    time.sleep(num)


def motor_stop():
예제 #31
0
        kp = 30
        kd = 1
        dt = 0.1
        diff = kp * int(args[2])
        diff0 = kd * int(args[3]) / dt  #previous diff
        diff += int(diff0)
        print(diff)
    elif (len(args) == 3):
        c = unicode(args[1], 'utf-8')
        kp = 30
        diff = kp * int(args[2])
        print(diff)
    else:
        quit()

    wp.wiringPiSPISetup(0, L6470_SPI_SPEED)
    wp.wiringPiSPISetup(1, L6470_SPI_SPEED)

    #L6470_init(0)
    #L6470_init(1)

    if c == unicode("RIGHT", 'utf-8'):
        print('Right diff:')
        print(diff)
        L6470_run(0, v * speed + diff)
        L6470_run(1, (-1) * v * speed + diff)
    if c == unicode("LEFT", 'utf-8'):
        print('Left diff:')
        print(diff)
        L6470_run(0, v * speed - diff)
        L6470_run(1, (-1) * v * speed - diff)
예제 #32
0
 def __init__(self, channel, speed):
     self.channel = channel
     self.speed = speed
     wiringpi.wiringPiSetupGpio()
     wiringpi.wiringPiSPISetup(channel, speed)
예제 #33
0
 def __init__(self):
     pi.wiringPiSPISetup(SPI_CH, 1000000)
예제 #34
0
파일: app.py 프로젝트: JaesungLeee/Hufs_mp
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
import wiringpi as wp
import datetime

app = Flask(__name__)
socketio = SocketIO(app)

SPI_CH = 0
ADC_CH_SOUND = 0
ADC_CS = 29
SPI_SPEED = 500000
wp.wiringPiSetup()
wp.wiringPiSPISetup(SPI_CH, SPI_SPEED)
wp.pinMode(ADC_CS, 1)


#=======================================================================
#				index.html
#=======================================================================
@app.route('/')
def index():
    """Serve the index HTML"""
    return render_template('index.html')


@app.route('/iot_with_flask.js')
def gauge():
    return render_template('iot_with_flask.js')

예제 #35
0
# GPIOを制御するライブラリ
import wiringpi
# タイマーのライブラリ
import time

# MCP3002(半固定抵抗)を接続したチャンネルを指定
SPI_CH = 0

# 読み込み対象のMCP3002(半固定抵抗)のアナログ入力チェンネルを指定
READ_CH = 0

# SPI初期化
wiringpi.wiringPiSPISetup( SPI_CH, 1000000 )

while True:
    # MCP3002(半固定抵抗)に送るデータを作成
    buffer = 0x6800 | ( 0x1800 * READ_CH )
    buffer = buffer.to_bytes( 2, byteorder='big' )
    
    # SPIを使ってCH0の値を取得
    wiringpi.wiringPiSPIDataRW( SPI_CH, buffer )
    # 値が2バイトに分かれて送られるので、1つの値にまとめる
    ch0_value = ( buffer[0] * 256 + buffer[1] ) & 0x3ff
    # 値を電圧に変換
    volt = ch0_value * 3.3 / 1023
    # 0.5秒ごと
    time.sleep(0.5)
    print ("値 :" , ch0_value , " 電圧 :", volt , "V")