Herramientas de usuario

Herramientas del sitio


exti2c

¡Esta es una revisión vieja del documento!


Extensión para Mblock para gestionar dispositivos a través del bus i2c.

i2cEXT

Permite operaciones sencillas de lectura y escritura de 1 registro completo cada vez a través de este bus.

Existen algunas extensiones para gestionar algunos dispositivos i2c especificos, pero si tu dispositivo difiere en algo del estandar o necesitas un contacto directo o simple, yo no he podido encontrar nada que ayude.

No he podido encontrar suficiente información para hacer una extensión completa que funcione en el modo online del Mblock asi que lo dejo en utilizable en modo arduino y si alguien quiere completarlo, por favor, dígamelo y le ayudaré tanto como pueda.

Descripción de funcionamiento:

Bloque de escritura:

Sus parámetros son la dirección i2c del dispositivo (en código decimal. Ej.: para un dispositivo con dirección hexadecimal “0x0D” habrá que poner “13”). La dirección o byte de registro en la que queremos escribir (también en decimal) y a continuación el byte completo del dato que queremos enviar.

Bloque de lectura:

Sólo habrá que introducir la dirección i2c del dispositivo en decimal y el número de registro o byte que queremos leer. Devolverá el valor en decimal de byte requerido.

Pongo aquí el código comentado con las cosas que he averiguado de como hacer extensiones.

/*	// content of i2cEXT.s2e   */
{	"extensionName": "I2C Manage",
	"description": "Extension for manage i2c bus devices (Arduino only)",
	"version": "0.5",
	"author": "Isaac Sanchez(saki@asako.org)",
	"homepage": "https://github.com/Isk34/i2cEXT",
	"sort":0,
	"javascriptURL":"js/I2Cext.js",
  "firmware":"1.0",
  "extensionPort":0,
 La información de cabecera no necesita mucho comentario. La versión es importante si al desarrollar modificaciones es donde nos dice si hay que instalarlas o no, sobre todo si lo ponemos online.
 El contacto del autor no lo gestiona bien, en la administración de extensiones del Mblock parece que la @ fastidia el enlace y solo  

<code>
"blockSpecs": 
[
	[
		"w","Write-I2C(BaseAddr:  %n, RegAddr:  %n, Data:  %n  )","WriteI2C","0","0","0",
		{
			"setup":"Wire.begin();\n

\n“,

			"inc":" ",
			"def":" ",
			"work":" Wire.beginTransmission({0}); //start talking\
	Wire.write({1}); // Set the Register\
	Wire.write({2}); // Set the data\
	Wire.endTransmission();\ 

\n”,

			"loop":""
		}
	],	
	[
		"r","Read-I2C(BaseAddr:  %n, RegAddr:  %n )", "ReadI2C","0","0",
		{
			"setup":"Wire.begin();\n

\n“,

			"inc":" ",
			"def":"int datorec(int addr, int nbyte) {\
	int dtr;\
	Wire.beginTransmission(addr); //start talking\
	Wire.write(nbyte); // Set the Register\
	Wire.endTransmission();\
	Wire.requestFrom(addr, 1);\
	dtr = Wire.read(); //LSB\
	return dtr;\
	} \n",
			"work":"datorec({0},{1}) \n",
	 				
			"loop":""
		}
	],
],
"menus": {
	"digital":["HIGH","LOW"]
},
"values":{
	"HIGH":1,
	"LOW":0
},
"translators":{
	"es_ES":{
	    "Extension for manage i2c bus devices": "Extensión para manejar dispositivos i2c",
		"Write-I2C(BaseAddr:  %n, RegAddr:  %n, Data:  %n  )": "Escribir-I2C(BaseDir:  %n, RegDir:  %n, Dato:  %n  )",
		"Read-I2C(BaseAddr:  %n, RegAddr:  %n )": "Leer-I2C(BaseDir:  %n, RegDir:  %n)"
	}
	
}

}</code>

exti2c.1523441157.txt.gz · Última modificación: 2018/04/11 12:05 (editor externo)