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)
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")
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)
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)
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
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
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
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)
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
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)
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)
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)
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
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)
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)
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)
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()
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")
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)
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
def __init__(self, ss, speed, vref): self.ss = ss self.speed = speed self.vref = vref pi.wiringPiSPISetup(self.ss, self.speed)
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
def run(self): wiringpi.wiringPiSPISetup(self.spi_port, 2500000) self.change_pattern("BLANK") self.mqtt_client.loop_forever()
#!/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)
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)
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
def init(): """Setup the SPI interface for communication with the microcontroller.""" wiringpi.wiringPiSetupGpio() # For GPIO pin numbering wiringpi.wiringPiSPISetup(0, 500000)
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"
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():
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)
def __init__(self, channel, speed): self.channel = channel self.speed = speed wiringpi.wiringPiSetupGpio() wiringpi.wiringPiSPISetup(channel, speed)
def __init__(self): pi.wiringPiSPISetup(SPI_CH, 1000000)
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')
# 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")