Pages: 1 [2]   Go Down
Author Topic: PCF8574 sur I2C  (Read 3344 times)
0 Members and 1 Guest are viewing this topic.
Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu as plusieurs chips à essayer ?
Problème de câblage ? Une p'tite photo ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Full Member
***
Karma: 0
Posts: 108
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Problème résolu !

Un PCF grillé relié par l'intermédiaire d'un autre carte... je ne l'avais pas vu...

Merci à tous de votre aide !

EDIT : Question annexe : Vous pensez que ,dans le cadre d'un robot à plusieurs modules contenant 1 pcb/module, le bus I2C était le mieux adapté pour communiquer ?
« Last Edit: May 10, 2012, 03:19:46 am by rhum187 » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5413
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

EDIT : Question annexe : Vous pensez que ,dans le cadre d'un robot à plusieurs modules contenant 1 pcb/module, le bus I2C était le mieux adapté pour communiquer ?
Sur des distances inférieur à 1m et dans le cadre d'une communication entre modules w/ adresses, le tout à "basse" vitesse, l'I2C est le choix le plus approprié.

Phillips n'as pas inventé l'I2C et ne la pas intégré dans ses téléviseurs pour rien smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Le post est un peu vieux mais je souhaitais utilisé des PF8574. Mes 1er essaie était vraiment concluant mais la distance était relativement faible entre l'arduino et les 2 modules qui pilotait une carte avec 16 relais.

Mon problème: Sur un projet de gestion d'un aquarium, j'aimerais mette un arduino dans la rampe d'éclairage. Ge gere la rampe d’éclairage LED bien sur mais j'aimerais gérer tout le reste se trouvant lui sous l'aquarium. D’où l'utilisation des PCF8574. Seulement j'ai peur aux interférences au vous avez aussi évoqué.  Surtout que les cartes électroniques étant rudimentaire ne sont pas forcement ce qu'il y a de mieux au niveau blindage.

J’aurais donc effectivement plus d'un mettre de câble I2C sur cordon type RJ11. J'ai donc peur du resultat.

J'avais pensé aussi à utiliser 2 arduino MEGA. L'un dans la rampe avec l’écran et l'autre sous le bac, autonome, mais récupérant les info du 1er pour se paramétrer et donner les mesures, en I2C aussi mais avec un contrôle par checksum par exemple pour limiter les erreurs. Mais ne serait t'il pas plus judicieux de le faire dans ce cas par un port série, peut être plus robuste. Surtout si l'on ajoute des MAX232 entre chaque.

Une idée
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3839
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tkt pas pour les interférences ... J'ai déjà fait des montages à plusieurs mettre d'écart en i2c, avec les pull up interne de l'Atmega de surcroît. Donc avec des "vraies" résistance de pull up à 1m tu ne devrais pas avoir de soucis, surtout que de base l'Arduino travaille en i2c "mode lent" donc on est immunisé contre pas mal de chose
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 41
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ces informations.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour

A toutes fins utiles, si vous avez un doute sur l'adresse du composant, vous pouvez utiliser un "sniffer" qui joint successivement plusieurs adresses et renvoie celle(s) qui répond(ent).

Un exemple :
Code:

#include <Wire.h>


void setup()
{
  delay(5000);
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 254; address++ ){
     Serial.print("Scaning address 0x");
     Serial.print("0");
     Serial.println(address,HEX);
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0){
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }else if (error==4){
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX); 
    }

   
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

Serial.println("--------------------------");
  delay(10000);           // wait 5 seconds for next scan
}

Logged

Pages: 1 [2]   Go Up
Jump to: