Aller au contenu


Photo
- - - - -

Arduino Mega 1280 + sonde température DS18B20


11 réponses à ce sujet

#1 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 26 novembre 2011 - 01:11

Bonjour à tous,

Voila aprés avoir installé un LCD 16x2 sur mon petit robot ;-) je commence la partie capteur en installant une sonde DS18B20
j'ai une erreur lors de l'upload sur mon arduino mais pas en compilation bizarre ...

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: failed to write flash memory, rc=-4




est ce que cette erreur vous dit quelquechose ?
J'ai essayé avec un autre sketch cela fonctionne correctement.
J'ai essayé different sketch type pour cette sonde aucun ne fonctionne. onwire.h et dallastemperature.h


Cordialement,
bypbop

#2 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 26 novembre 2011 - 01:16

Je mets qd mm mon sketch ;-)

#include <OneWire.h>

// DS18S20 Temperature chip i/o
OneWire ds(10);  // on pin 10

void setup(void) {
  // initialize inputs/outputs
  // start serial port
  Serial.begin(9600);
}

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

  if ( !ds.search(addr)) {
      Serial.print("No more addresses.\n");
      ds.reset_search();
      return;
  }

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

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

  if ( addr[0] == 0x10) {
      Serial.print("Device is a DS18S20 family device.\n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Device is a DS18B20 family device.\n");
  }
  else {
      Serial.print("Device family is not recognized: 0x");
      Serial.println(addr[0],HEX);
      return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // start conversion, with parasite power on at the end

  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.

  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
}



#3 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 26 novembre 2011 - 02:20

Tu utilise une Mega et ce code est peut être écrit (comme souvant) pour une Uno.
Les pins I2C ne sont pas les mêmes sur les deux cartes.

Sinon.
1/ comment as tu branché ton I2C ?
2/ Sur quelles pins
3/ As tu mis 2 résistances Pullsup (une sur SDA et une sur LCR)
3/ Ou as tu trové ce code ? C'est un exemple de la Lib ou tu l'as écrit toi meme

Colt
Yves

 


#4 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 26 novembre 2011 - 01:23

Bonjour Yves,


Alors le code c'est un exemple que j'ai trouvé sur le net sur plusieurs sites tjrs le mm donc je pense qu'il est bon.
Pour la sonde elle se branche directement sur une entree digital ici dans le code le 10 avec une resitance 4700 entre le +5v et la sortie V

Mais mm qd je debranche tt je n'arrive pas a charger le code dans l'arduino.

Cordialement,
bypbop

#5 Microrupteurman

Microrupteurman

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 210 messages
  • Gender:Male
  • Location:Aquitaine,Gironde

Posté 26 novembre 2011 - 06:37

Un lien vers la sonde ??
merci.

 
Page Facebook : https://www.facebook...appartelier2.0/
Page Twitter :  https://twitter.com/2Appartelier (bateau seulement)
Boutique Robot-Maker : https://www.robot-ma...er-20/produits/

Besoin d'une impression 3D grand format ? Contactez moi !
 


#6 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 26 novembre 2011 - 06:42

Voilà un lien avec tout ce dont tu as besoin

La Lib
Le code d'exemple
Différents tutos d'utilisations

http://www.hacktronics.com/Tutorials/arduino-digital-temperature-sensor-tutorial.html

Cdlt
Yves

 


#7 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 26 novembre 2011 - 07:38

Je fais le test demain mais je pense que c'est ce que j'ai utilisé.

Cordialement,
bypbop

#8 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 28 novembre 2011 - 08:16

Bonsoir à tous,
Voila j'ai fais le test avec l'exemple dans le zip et pareil j'ai la mm erreur.

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: failed to write flash memory, rc=-4


Avec un autre sketch je n'ai pas cette erreur je pense que c'est peut la librairie qui pose problème.

Cordialement,
bypbop

#9 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 28 novembre 2011 - 08:37

Problème reglé je comprends pas j'ai du retirer mon shield moteur et mon shield xbee et la ca fonctionne alors qu'un autre programme cela passe sans problème avec les shield sur l'arduino.

Bizarre ...


Cordialement,
bypbop

#10 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 28 novembre 2011 - 09:07

Il me semble que tu ne peux pas programmer l'arduino sur l'xbee est connecté.


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#11 bypbop

bypbop

    Habitué

  • Membres
  • PipPip
  • 273 messages
  • Gender:Male
  • Location:Lille

Posté 28 novembre 2011 - 09:12

Bah j'étais bien en position USB sur mon shield mais c'est bizarre

Enfin maintenant en cas d'erreur bizarre je retirerai les differents shields.


Cordialement,
bypbop

#12 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 29 novembre 2011 - 02:50

Il me semble que tu ne peux pas programmer l'arduino sur l'xbee est connecté.


Si il utilise un Shield xBee il suffit de mettre le jumper en position USN et il a accès au com0 via l'USB une fois le code envoyé il doit remettre le jumper en position xBee pour communiquer via le xBee.

Le problème dont tu parle est un problème lié à certaines cartes (dernière version) du capteurs Shield qui ne possèdent pas ce jumper.

Pour info, il et possible de bricoler ce jumper en rehaussant le xbee avec des connecteurs et de sortie le +3.3v en y mettant soit un jumpersdoit un interrupteur pour couper l'alimentation du xBee. Quand il n'est pas alimenté, il n'est pas reconnu et le Com0 est liberé et peut donc communiquer via l'USB.

Cdlt
Yves

 




Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users