RoStrofe01

Objectifs de cette page je vais construire au fur et à mesure de mon projet :

  • mettre en oeuvre d’un bus I2C
  • piloter une plateforme « robot » avec 2 moteurs et 2 capteurs optiques.

Diagramme idée de base

ROBOT_001

Schéma de principe du bus I2C

ROBOT_003

Schéma de câblage

ROBOT_004

Programme Arduino

#include <Wire.h>

#define SLAVE_ADDRESS 0x04
#define pinLed 12

void setup() {
   pinMode(pinLed, OUTPUT);
   Wire.begin(SLAVE_ADDRESS); // initialise i2c en esclave
   // Définir la fonction de réception par interruption
   Wire.onReceive(receiveEvent);
   Serial.begin(9600); // La fenêtre de débogage
}

void loop() {
   // Rien ici pour l'instant
}

// Fonction executé lorsque le Maître cause
void receiveEvent(int howMany) {
   while (1 < Wire.available()) { // Lire les caractères transmis sauf le dernier
      char c = Wire.read(); // Reçoit les mots comme des caractères
      Serial.print(c); // Affiche les caractères dans la fenêtre de debogage
   }
   int x = Wire.read(); // On reçoit maintenant le dernier caratère
   if (x==5) digitalWrite(pinLed, HIGH); // S'il vaut 5 on allume la Led
   if (x==3) digitalWrite(pinLed, LOW); // S'il vaut 3 on éteind la Led
   Serial.println(x); // Imprime la valeur dans la fenêtre de debogage
}

 

Programme RPi

#!/usr/bin/python
# -*-coding:UTF-8 -*

#-- classes python à mettre ici
import smbus
import time
#-- déclaration des variables et des constantes
AdrMotG = 0x04

def setup(): #fonction d'initilisation
   #Gestion des entrées sorties...
   return # parce qu'il n'y a rien à faire

def loop(): # fonction principale
   # mettre le code actif ici
   bus_pi = smbus.SMBus(1)
   while True:
      bus_pi.write_byte(AdrMotG,5)
      time.sleep(2)
      bus_pi.write_byte(AdrMotG,3)
      time.sleep(2)

#--- obligatoire pour rendre code exécutable ---
if __name__ == "__main__": # cette condition est vraie si le fichier est le programme exécuté
   setup() # appelle la fonction setup
   loop() # appelle la fonction principale
# fin programme

Ajout des 2 moteurs & capteurs

ROBOT_005

Références utilisées

legomindstormsrobots.com
jamesreubenknowles.com
arduino.cc/en/Reference