c'est quoi ce charabia

A chaque foi que j’essaye de compiler un petit programme avec du onewire j’ai tout un charabia de ce genre, quelqu’un a-t-il le courage de me venir en aide . . .

#include <OneWire.h>
// Onewire lib is here http://www.pjrc.com/teensy/td_libs_OneWire.html

OneWire ds(8); // on pin 8 here, don’t forget 4.7K resistor between +5V and DQ pin
void setup(void) {
Serial.begin(9600);
}

void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
Serial.println("--------------");
Serial.println(".");
Serial.println(".");
Serial.println(“END OF SCAN.”);

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

ds.reset_search();
delay(2500);
return;
}

Serial.println("--------------");

Serial.print(" ROM =");
for( i = 0; i < 8; i++) {
Serial.write(’ ');
Serial.print(addr*, HEX);*

  • }*
  • if (OneWire::crc8(addr, 7) != addr[7]) {*
  • Serial.println(“CRC is not valid!”);*
  • return;*
  • }*
  • Serial.println();*
  • Serial.print("CHIP FAMILY ");*
  • Serial.print(addr[0],HEX);*
  • // the first ROM byte indicates which chip*
  • Serial.print(" = ");*
  • switch (addr[0]) {*
  • case 0x01:*
  • Serial.println(" DS1990 DS2401"); //*
  • break;*
  • case 0x02:*
  • Serial.println(" DS1991"); //*
  • break;*
  • case 0x04:*
  • Serial.println(" DS1994"); //*
  • break;*
  • case 0x05:*
  • Serial.println(" DS2405"); //*
  • break;*
  • case 0x06:*
  • Serial.println(" DS1992"); //*
  • break;*
  • case 0x08:*
  • Serial.println(" DS1993"); //*
  • break;*
  • case 0x0B:*
  • Serial.println(" DS1985"); *
  • break;*
  • case 0x10:*
  • Serial.println(" DS1820 DS18S20 DS1920"); *
  • break;*
  • case 0x12:*
  • Serial.println(" DS2406"); *
  • break;*
  • case 0x21:*
  • Serial.println(" DS1921");*
  • break;*
  • case 0x22:*
  • Serial.println(" DS1822");*
  • break;*
  • case 0x24:*
  • Serial.println(" DS1904");*
  • break;*
  • case 0x28:*
  • Serial.println(" DS18B20");*
  • break;*
  • case 0x29:*
  • Serial.println(" DS2408"); *
  • break;*
  • case 0x36:*
  • Serial.println(" DS2740"); *
  • break;*
  • case 0x3B:*
  • Serial.println(" DS1825"); *
  • break;*
  • case 0x41:*
  • Serial.println(" DS1923"); *
  • break;*
  • default:*
  • Serial.println(" is not listed.");*
  • return;*
  • }*
    }
  • Je sais, c’est du copié-collé.*
  • Après ça je fais un ctrl R et voila ce que j’obtiens.*
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:85:24: error: WConstants.h: No such file or directory
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp: In constructor ‘OneWire::OneWire(uint8_t)’:
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:93: error: ‘digitalPinToBitMask’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:94: error: ‘digitalPinToPort’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:94: error: ‘portInputRegister’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘uint8_t OneWire::reset()’:
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:127: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:134: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘void OneWire::write_bit(uint8_t)’:
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:157: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:165: error: ‘delayMicroseconds’ was not declared in this scope
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp: In member function ‘uint8_t OneWire::read_bit()’:
    C:\Program Files\Arduino\libraries\OneWire\OneWire.cpp:185: error: ‘delayMicroseconds’ was not declared in this scope
    Sniff sniff
    pour apprendre je voudrais déjà réussir une simple sonde de température avec un ds18b20 et un simple lcd 2 lignes-6boutons
    puis faire une rampe de démarrage pour un moteur CC avec SX7970
    y du travail, je sais merci.

Salut,

Quelle version d'IDE ?

Sinon le bar n'est pas la bonne section, et pense à utiliser les balises code (# dans le menu de rédaction) pour poster du code (plus lisible et annule les autres balises)

Merci de t'occuper de mon cas.(pourtant il est grave et désepèrant)

Si je ne me trompe pas l'IDE que j'utilise est ARDUINO023.
Mais je n'en suis pas sure car ici je suis au travail pas à la maison.
Je ne suis pas sure de ta question non plus.

par contre pour déplacer le post, ou faudrait-il le mettre?
Puis-le déplacer moi même ou est-ce un modérateur qui doit le faire?

Sur ce je retourne travailler.

Merci et A+

Y'a que le modo qui a ce pouvoir (c'est un suisse alors ça va pas se faire de suite :p)

Si ta version est bien la 023 alors le problème peut venir de la : visiblement ta lib ne trouve pas les librairies de base qui permettent d'utiliser les fonction de base fournies par Arduino (delay(), digitalWrite() ...).

La 023 est une ancienne version, et justement à partir de celle d'après (la 1.0) des changement notables ont été opéré. Il se peut que ta lib ne gère pas cette transistion.

J'ai essayé avec la nouvelle version 1.0.5r2 et toujours la même chose.
Je désespère mais tous ensemble on y arrivera.

Bizarre ... T'as essayé de reinstaller la lib ?

bonjour
pas le temps de chercher pourquoi ton code coince (aussi chez moi)

mais celui ci fonctionne

#include <OneWire.h>
// Onewire lib is here http://www.pjrc.com/teensy/td_libs_OneWire.html

OneWire  ds(8);  // on pin 8 here, don't forget 4.7K resistor between +5V and DQ pin
void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    Serial.println("--------------");
    Serial.println(".");
    Serial.println(".");
    Serial.println("END OF SCAN.");


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

    ds.reset_search();
    delay(2500);
    return;
  }

  Serial.println("--------------");



  Serial.print(" ROM =");
  for( i = 0; i < 8; i++) {
    Serial.write(' ');
    Serial.print(addr[i], HEX);
  }

  if (OneWire::crc8(addr, 7) != addr[7]) {
    Serial.println("CRC is not valid!");
    return;
  }
  Serial.println();


  Serial.print("CHIP FAMILY ");
  Serial.print(addr[0],HEX);
  // the first ROM byte indicates which chip
  Serial.print(" =  ");
  switch (addr[0]) {

  case 0x01:
    Serial.println(" DS1990 DS2401");  // 
    break;
  case 0x02:
    Serial.println(" DS1991");  // 
    break;
  case 0x04:
    Serial.println(" DS1994");  // 
    break;
  case 0x05:
    Serial.println(" DS2405");  // 
    break;
  case 0x06:
    Serial.println(" DS1992");  // 
    break;
  case 0x08:
    Serial.println(" DS1993");  // 
    break;
  case 0x0B:
    Serial.println(" DS1985");  
    break;
  case 0x10:
    Serial.println(" DS1820 DS18S20 DS1920");  
    break;
  case 0x12:
    Serial.println(" DS2406");  
    break;
  case 0x21:
    Serial.println(" DS1921");
    break;
  case 0x22:
    Serial.println(" DS1822");
    break;
  case 0x24:
    Serial.println(" DS1904");
    break;
  case 0x28:
    Serial.println(" DS18B20");
    break;
  case 0x29:
    Serial.println(" DS2408");  
    break;
  case 0x36:
    Serial.println(" DS2740");  
    break;
  case 0x3B:
    Serial.println(" DS1825");  
    break;
  case 0x41:
    Serial.println(" DS1923");  
    break;

  default:
    Serial.println(" is not listed.");

    return;
  } 

}

alainnamur:
J'ai essayé avec la nouvelle version 1.0.5r2 et toujours la même chose.
Je désespère mais tous ensemble on y arrivera.

Ton code compile sur la 1.0.5 après correction d'une erreur
Cette ligne

    Serial.print(addr, HEX);

doit s'écrire comme ça

Serial.print(addr[i], HEX);

Batto peux tu me dire c'est quoi la"LIB" ,est-ce la librairie? Si oui ne se réinstalle pas toute seulle quand je fais la mise à jour vers Arduino 1.0.5r2 ?

Les librairies dont tu disposes sur ton ordinateur sont rangées ici
C:\Program Files\Arduino\libraries\

Regarde si OneWire est présente ou pas.

fdufnews:
Cette ligne

    Serial.print(addr, HEX);

doit s'écrire comme ça

Serial.print(addr[i], HEX);

C'est juste un bug parce qu'il n'a pas utiliser les balises code, c'est pour ça que ça fait de l'italique :wink: