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

Exemple de Programmation I2C en python

il faut installer la librairie python smbus sur la Cubietruck

connection Cubietruck-Arduino (Cubietruck étant le maitre)

Pour l'Arduino j'ai utilisé un montage avec un écran LCD 20×4 Programme à charger dans l'arduino :

#include <Wire.h>
#include <LiquidCrystal.h>
#include <string.h>
#include <ctype.h>

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<i;a++){
      Serial.print(c[a]);
    }
    Serial.println("<-");
    lcd.setCursor(0,1);
    lcd.print(c);
}

void sendData(){
    int envoi = dataReceived + 1;
    Wire.write(envoi);
}

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)