==== UTILISER UNE CONNECTION I2C AVEC LE CUBIETRUCK ====
=== Installer les ports GPIO ===
Pour utiliser les pins 25 (PB19) et 23 (PB18) du port CN8 du cubietruck
* la pin 25 étant la ligne SDA du bus I2C
* la pin 23 étant la ligne SDK du bus I2C
* on pourra utiliser la pin 13 du port CN8 comme masse commune
*aller dans le répertoire /boot
*décompresser le fichier script.bin avec la commande suivante : # bin2fex script.bin script.fex
*éditer le fichier script.fex et modifier [twi1_para]
twi1_used = 0
twi1_scl = port:PB18<2>
twi1_sda = port:PB19<2>
par [twi1_para]
twi1_used = 1
twi1_scl = port:PB18<2>
twi1_sda = port:PB19<2>
*recompiler le fichier script.fex : fex2bin script.fex script.bin
*rebooter le Cubietruck.
=== Exemple de Programmation I2C en python ===
il faut installer la librairie python smbus sur la Cubietruck
== connection Cubietruck-Arduino (Cubietruck étant le maitre) ==
*connecter la broche PB19 du Cubie à la broche A4 de l'Arduino
*connecter la broche PB18 du Cubie à la broche A5 de l'arduino
*connecter un broche GROUND du Cubie à la broche GND de l'arduino
Pour l'Arduino j'ai utilisé un montage avec un écran LCD 20X4
Programme à charger dans l'arduino :
#include
#include
#include
#include
const int RS = 12;
const int E = 11;
const int D4 = 5;
const int D5 = 4;
const int D6 = 3;
const int D7 = 2;
LiquidCrystal lcd(RS,E,D4,D5,D6,D7);
#define SLAVE_ADDRESS 0x12
int dataReceived = 0;
void setup() {
Serial.begin(9600);
Wire.begin(SLAVE_ADDRESS);
Wire.onReceive(receiveData);
Wire.onRequest(sendData);
lcd.begin(20,4); // 16 caracteres sur 2 colonnes
delay(10);
lcd.print ("LCD OK");
delay(2000);
delay(10);
Serial.println("depart");
}
void loop() {
delay(200);
}
void receiveData(int byteCount){
//char chaine[100];
char c[byteCount+1];
int i = 0;
Serial.print("Nbre donnees recues : ");
Serial.println(byteCount);
int z = Wire.read();
while (Wire.available()){
c[i] = Wire.read();
i++;
}
c[i]='\0';
Serial.println(z);
Serial.print("->");
for (int a = 0;a
programme d'essais en Python sur le Cubietruck (pour pouvoir utiliser les ports GPIO il faut avoir les droits root) :
#!/usr/bin/python
#-*-coding: utf8 -*-
import smbus
import time
bus = smbus.SMBus(1)
address = 0x12
print("/////////////////")
var=[ord(z) for z in "ceci est un test"]
bus.write_i2c_block_data(address,0x00,var)