Herramientas de usuario

Herramientas del sitio


exti2c

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
exti2c [2018/04/10 12:28] sakiexti2c [2018/04/11 13:25] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
  
  Extensión para [[https://www.makeblock.es/soporte/mblock/|Mblock]] para gestionar dispositivos a través del bus i2c.  Extensión para [[https://www.makeblock.es/soporte/mblock/|Mblock]] para gestionar dispositivos a través del bus i2c.
 +
 + [[https://github.com/Isk34/i2cEXT|i2cEXT]]
  
  Permite operaciones sencillas de lectura y escritura de 1 registro completo cada vez a través de este bus.  Permite operaciones sencillas de lectura y escritura de 1 registro completo cada vez a través de este bus.
Línea 9: Línea 11:
  
  Descripción de funcionamiento:  Descripción de funcionamiento:
- + 
 + Bloque de escritura:   {{:i2cext:bloqueescribe.jpg?nolink| }} 
 + 
 +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: {{:i2cext:bloquelee.jpg?nolink| }} 
 + 
 +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. 
 + 
 +<code>/* // 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,   
 +  </code> 
 + 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 sólo aparece el dominio. 
 +   
 + <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":"" 
 +
 + ], </code> 
 + 
 + Hasta aquí se define el bloque de escritura. La presencia de las 5 secciones parece imprescindible, si falta alguna de ellas se producen errores. Tampoco puede estar ninguna repetida por lo mismo (parece que la única efectiva sería la última). 
 + 
 +Para la comunicación i2c es necesario incluir la librería wire.h pero como parece que en todos los sketch para orion o arduino se incluye de inicio por lo que ponerla en la extensión sería duplicar la llamada.  
 + 
 +Al meter en una sola sección ("work" en este caso) casi toda la programación para arduino, se hace necesario introducir saltos de linea. En la documentación encontrada parece que debería ser "\n" o "\r\n" pero parece que lo que funciona es poner "\" pegado al final del texto, salvo en las últimas lineas donde nada parece asegurar el salto.    
 + 
 +<code> 
 + 
 +
 + "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":"" 
 +
 + ], 
 + ], 
 + 
 +</code> 
 + 
 + El bloque de lectura.  
 + 
 +<code> 
 + "menus":
 + "digital":["HIGH","LOW"
 + }, 
 + "values":
 + "HIGH":1, 
 + "LOW":
 + }, 
 + "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> 
 + 
 + Tuve problemas con la traducción, si escribía yo la cabecera <code>"es_ES":{ </code> Se producía algún error y no me admitía la extensión. Finalmente copiando la cabecera y editando las letras del codigo de idioma funcionó perfectamente. Supongo que igual que parece pasar con la @ en los correos de la cabecera, debe haber algún problema de codificación, supongo que con el "_".
exti2c.1523363338.txt.gz · Última modificación: 2018/04/10 14:28 (editor externo)