Maar helaas nog nergens een script die je kunt gebruiken in je bussysteem om te scannen op aanwezige hardeware.
Men kan wel in de console bij de Raspberry Wheezy de volgende commando gebruiken.:
sudo i2cdetect -y 1
Alleen je kunt het niet in je programma gebruiken.
Omdat ik dit wel wil, heb ik dus de moeite genomen om tijd erin te steken een script te maken die dit wel kan.
Met als resultaat dat het gelukt is.
Met onderstaand Python script kan men de I²C bus wel laten scannen.
Het script toont welk busnummer een PCF8575 bevat en alles wat hierop niet reageerd maar wel is aangesloten word als overige I²C ic aangegeven.
Ik weet het word door vele niet gedaan, maar toch vraag ik het, indien men hiervan gebruik maakt neem mijn author naam mee.
#!/usr/bin/python # Raspberryboard I2C bus scan V0.1 # voor de Raspberry Pi Revision 2 # # Author : Pascal Schuffelers # Site : http://www.vbib.be # # Date : 21/03/2013 tijd.: 01:14 uur. # # Bussysteem scannen op hardware aanwezig #Doe imports import smbus import time import pylcdlib import os import random from time import sleep from datetime import datetime from subprocess import * i2c = smbus.SMBus(1) #Signaal code voor PCF8575 #Controleer voor I/0 fouten (geen device aangesloten) temp = 0x55AA #Gehele I2C detection. locations = [0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f, 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f, 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77] print "****************************************************************" print "* Het bussysteem word gescanned op aangesloten hardware , deze *" print "* word met een signaalcode voor de PCF8575 aangeroepen. *" print "* Alle gevonden hardware word getoont en alles wat een PCF8575 *" print "* bevat word erachter vermeld, indien anders word *" print "* dit ook vermeld. *" print "****************************************************************" b = 0 d = 0 e = 0 for device in locations: try: b = b + 1 i2c.write_byte(device,temp) a = int(device) - 12 devicebyte = int(i2c.read_byte(device)) c = (b * 2.702702702702702) sleep(0.1) #temp = signaal code 0x55AA voor de PCF8575 word als 170 getoont. if devicebyte == 170: #print "IC PCF8575" d=d+1 print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een IC PCF8775" if devicebyte == 0: e=e+1 print 'Hardware gevonden op I2C bus met nummer.: ' + str(a) + " ,deze bevat een andere I2C IC." #sleep(0.1) except: if device == 'end': print "Geen unit gevonden op "+ device exit()
Geen opmerkingen:
Een reactie posten