[Résolu] Intégration du langage Arduino dans AVR Studio 5

En suivant les indication de l’article anglais, je fais donc les opérations suivantes :

  • Je fais une copie du fichier makefile dans le répertoire parent, c’est-à-dire dans C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino
  • J’ouvre ce makefile avec notepad. (Attention, ne pas cocher « retour automatique à la ligne » dans le menu « Format »).
  • Je déplace la séquence -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\Arduino" à la fin de la ligne, comme indiqué dans le texte anglais.
  • Je sauvegarde makefile.

Dans Studio, j’ouvre Build Properties \ Build, je coche “Use External Makefile” et j’introduis C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino\makefile
Il n’y a plus qu’à lancer un nouveau Build … SUSPENS

Hé bien NON. C’est raté :grin:. Voici l’output :

------ Build started: Project: TutoArduino, Configuration: Debug AVR ------
Build started.
Project "TutoArduino.avrgccproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino\TutoArduino.avrgccproj" (target "Build" depends on it):
	Task "RunAvrGCC"
		C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe -C "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino" -f "makefile" all 
		process_begin: CreateProcess(NULL, g++ -c -o TutoArduino.o TutoArduino.cpp, ...) failed.
		make (e=2): Le fichier spÚcifiÚ est introuvable.
		make: *** [TutoArduino.o] Error 2
		make: Entering directory `C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/TutoArduino/TutoArduino'
		g++    -c -o TutoArduino.o TutoArduino.cpp
		make: Leaving directory `C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/TutoArduino/TutoArduino'
	Done executing task "RunAvrGCC" -- FAILED.
Done building target "CoreBuild" in project "TutoArduino.avrgccproj" -- FAILED.
Done building project "TutoArduino.avrgccproj" -- FAILED.

Build FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

A tout hasard, j'ai encore essayé d'ajouter en début de sketch #include <WProgram.h> mais ça n'a rien changé.

Je suis donc en réflexion :cold_sweat:

... à suivre ...

Heu... Si d'autres veulent se lancer dans la mélasse, c'est gratuit !

Je me demande si ce ne serait pas le moment d'adresser une demande d'aide à l'auteur de l'article d'origine.

Dans ta 1er partie de post il semblerai qu'il ne trouve pas les définitions de HIGH/LOW, OUPUT et les fonctions arduino, de toute évidence c'est qu'il n'as pas trouvé le fichier WProgram.h.

Dans la 2eme partie il n'as pas trouvé l'exécutable "g++"

process_begin: CreateProcess(NULL, g++ -c -o TutoArduino.o TutoArduino.cpp, ...) failed.

On se retrouve bloquer sur le même probléme avec les fonctions arduino, dans mon cas les fonctions sont bien trouvé dans les .h mais pas dans le core.a et dans ton cas c'est le contraire.

skywodd:
On se retrouve bloquer sur le même probléme avec les fonctions arduino, dans mon cas les fonctions sont bien trouvé dans les .h mais pas dans le core.a et dans ton cas c'est le contraire.

Si c'est le cas, en comparant étroitement les deux méthodes, on arrivera peut-être à identifier les bons paramètres.

Pour partir sur de bonnes bases, je propose que nous comparions tout d'abord nos sketchs.

Voici le mien :

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
#include <WProgram.h>

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

Dis-moi si c'est bon ou si je dois changer quelque chose.

YOUPYYYYYE !!!!!

On se calme, on se calme !!!

Encore un peu de patience pour les détails.

... à suivre ...

Pour le sketch j'ai le même ^^

Vu ton cri de joie je suppose que tu réussi à trouver LA bip de case à cocher qui faisait tout planter ? ^^"

Comme le fichier makefile créé automatiquement par Studio5 apparaît dans le répertoire ……..\TutoArduino\TutoArduino\debug je me suis dit que ce n’était pas très logique de le transplanter dans le répertoire parent ………\TutoArduino\TutoArduino

Donc, j’ai repris le makefile (corrigé) et le l’ai remis sous \debug

Et voilà. C’est tout simple. Il n’y a plus qu’à cliquer sur Build

Voici l’Output du Build :

------ Build started: Project: TutoArduino, Configuration: Debug AVR ------
Build started.
Project "TutoArduino.avrgccproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino\TutoArduino.avrgccproj" (target "Build" depends on it):
	Task "RunAvrGCC"
		C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe -C "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino\Debug" -f "Makefile" all 
		make: Entering directory `C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/TutoArduino/TutoArduino/Debug'
		AVR Memory Usage
		----------------
		Device: atmega328p
		Program:    1340 bytes (4.1% Full)
		(.text + .data + .bootloader)
		Data:         17 bytes (0.8% Full)
		(.data + .bss + .noinit)
		make: Leaving directory `C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/TutoArduino/TutoArduino/Debug'
	Done executing task "RunAvrGCC".
Done building target "CoreBuild" in project "TutoArduino.avrgccproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\Avr.common.targets" from project "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoArduino\TutoArduino\TutoArduino.avrgccproj" (entry point):
Done building target "Build" in project "TutoArduino.avrgccproj".
Done building project "TutoArduino.avrgccproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Je me propose de faire un résumé concis et précis de tout ce qu’il faut faire pour utiliser AVR Studio5 comme IDE de développement Arduino.

C'est trop tôt pour faire un résumé car il n'y a encore que la moitié de fait.

En effet, jusqu'ici on peut produire le fichier .hex mais pour bien faire, il faudrait pouvoir l'envoyer à la platine Arduino depuis Studio5 et par la voie habituelle, c'est à dire par l'USB et en passant par le Bootloader.

Allez, au boulot .....

Voici la suite du texte anglais :

The next thing is to get the program onto my hardware (Arduino UNO). I defined an external tool: 
Command: C:\arduino\hardware/tools/avr/bin/avrdude.exe 
Arguments: -CC:\arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P\\.\COM3 -b115200 -D -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i
  • Prendre le Menu Tools ==> External Tools

Title : Flash Duemilanove (Vous écrivez le titre que vous voulez mais les arguments ci-dessous conviennent à la Duemilanove)
Command : C:\Program Files\arduino-0022\hardware\tools\avr\bin\avrdude.exe (Veiller à pointez sur le programme avrdude.exe)
Arguments : -C "C:\Program Files\arduino-0022\hardware\tools\avr\etc\avrdude.conf" -v -v -p atmega328p -c stk500v1 -P COM3 -b 57600 -U flash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i (Veiller à pointer sur le fichier avrdude.conf et à adapter le Port COM).

On voit que la ligne d’arguments a subi une série de modifications par rapport à l’article anglais, ce qui m'a valu pas mal d'essais-erreurs.

  • Décocher « close on exit » sinon il n’est pas possible de lire la fenêtre d’output (voir ci-dessous).

  • Cliquer OK

Ceci ajoute « Flash Duemilanove » dans le Menu Tools.

En cliquant sur « Flash Duemilanove », avrdude envoie le fichier hex en quelques secondes dans l’Atmega.
Si la case « Prompt for arguments » est cochée, on reçoit d’abord une fenêtre permettant de modifier les arguments de la ligne de commande de avrdude.

Avrdude ouvre une fenêtre d’output permettant de vérifier si tout s’est bien passé :


L'image est trop petite pour être lue. J'espère qu'elle est téléchargeable ici:
https://picasaweb.google.com/lh/photo/Q8_Vi49ceM_ffoZGQjnO6_gm1gMUYGv4zAEVLaYn1Gc?feat=directlink

Comme on peut le voir, avrdude lit les fuses mais ne les affiche pas. Ce serait pourtant une information utile à connaître. Peut-être que Skywodd sait comment faire pour afficher les fuses sans être obligé de les écrire dans des fichiers.

L’objectif que nous nous étions fixés est maintenant en vue : travailler avec l’Arduino à partir de l’environnement sophistiqué d’AVR Studio 5. Il y a certainement encore un tas de choses qui peuvent être peaufinées mais l’essentiel est là.

Il serait probablement judicieux d’attendre la fin des discussions actives (et des changements ou ajouts) pour rédiger la « recette » finale et, pourquoi pas, la traduire en anglais. Après tout, ils ont bien mérité ça.

Jean-Marie:
Comme on peut le voir, avrdude lit les fuses mais ne les affiche pas. Ce serait pourtant une information utile à connaître. Peut-être que Skywodd sait comment faire pour afficher les fuses sans être obligé de les écrire dans des fichiers.

Pour avoir les fusibles dans la console en hexa :

-U lfuse:r:stdout:h -U hfuse:r:stdout:h -U efuse:r:stdout:h

Edit: j'ai oublié une partie de ma commande >< mais du coup je sais plus si stdout marche avec avrdude ...

Pour le moment moi je continu à me battre avec le linker et core.a ^^"

Hello Skywodd,

J'ai essayé d'insérer tes paramètres dans la ligne d'arguments mais ça ne marche pas. La fenêtre DOS s'ouvre puis se referme tout de suite et rien d'autre ne se passe. Donc, je reste à la recherche de la solution.

Hello Skywodd,

Dans le post ci-dessus, l'essai était fait avec les paramètres suivants:

-U lfuse:r:h -U hfuse:r:h -U efuse:r:h

J'ai réessayé avec ceci :

-U lfuse:r:stdout:h -U hfuse:r:stdout:h -U efuse:r:stdout:h

La fenêtre DOS s'ouvre et se ferme immédiatement comme tout à l'heure.
Cependant, lorsque je n'inclus que la lecture d'un seul fuse (low, high ou extended), un fichier nommé "stdout" est créé dans le répertoire C:\Program Files\Atmel\AVR Studio 5.0
Ce fichier contient toujours 0x0, c'est à dire 0 en hexadécimal.

J'ai l'impression que, pour une raison ou une autre, avrdude n'est pas capable de lire les fuses car on voyait déjà ceci sur la fenêtre DOS citée plus haut :

Il faudrait que je fasse un essai d'avrdude en-dehors de Studio pour voir.

La fenêtre DOS s'ouvre et se ferme immédiatement comme tout à l'heure.
Cependant, lorsque je n'inclus que la lecture d'un seul fuse (low, high ou extended), un fichier nommé "stdout" est créé dans le répertoire C:\Program Files\Atmel\AVR Studio 5.0
Ce fichier contient toujours 0x0, c'est à dire 0 en hexadécimal.

Arg! Donc il ne reconnait pas stdout comme sortie console mais comme sortie fichier ... je vois, encore une histoire de modif dans le code source de avrdude ...
J'aurai bien repris mon patch fait pour une ancienne version mais devoir recompiler tout le package winavr me tente pas trop :~

Hello Skywodd,

Ne t'inquiète pas. La programmation Arduino et le flashage sont fonctionnels sous Studio et c'est ça qui compte. Studio n'est pas fait pour travailler sur les fuses.

As-tu progressé dans tes propres modifications ?

Je suis en train de mettre un peu d'ordre dans les modifications à faire et de rédiger un résumé pour les gens pressés. Dès qu'il est fini, je le publie ici.

Jean-Marie:
As-tu progressé dans tes propres modifications ?

Pour le moment je bloque sur un probléme de linker, les .h sont trouvé et utilisé mais le core.a ne veut pas s'inclure :stuck_out_tongue_closed_eyes:
Je vais tenter de compiler le core arduino en librairie statique "peut être que" ...

Hello Skywodd,

Dans ma rédaction du résumé, j'essaye de rationaliser un peu en rassemblant tous les fichiers nécessaires en un endroit indépendant des répertoires d'Arduino.

Pour l'occasion, j'ai recréé également un nouveau projet. Or je viens de passer plus de 24 h sur le même problème que toi : j'avais oublié de renommer core.a en libcore.a

Vérifie un peu que tu ne buttes pas sur le même obstacle.

J'ai terminé le résumé de ce qu'il faut faire pour intégrer l'Arduino dans l'environnement de développement AVR Studio5.
Je n'ai pas résisté à l'envie d'appeler cette intégration AVR_Studuino

Cela peut paraître compliqué, mais c'est essentiellement dû au fait que j'ai tenté de détailler les divers points de manière précise.

En gros, la méthode consiste à rassembler le "core" Arduino et les librairies en un endroit et à inclure cet endroit dans les répertoires de Studio, de manière à ce que Studio se serve du core Arduino pour compiler le programme. Ensuite, on ajoute avrdude à Studio comme outil externe pour le flashage du fichier hex produit.

Voici l'ensemble de la procédure à suivre:


AVR_Studuino


Arduino intégré dans AVR Studio 5

Installation de AVR Studio 5
• Télécharger AVR Studio5 as5installer-full-5.0.1223 ici : http://www.atmel.com/dyn/products/tools_card.asp?tool_id=17212
• Installer AVR Studio 5 et l’ouvrir
• Installer AVRGCC C++: Menu Tools --> Extension Manager --> Online Gallery --> AVRGCC C++(Beta)
• Installer Terminal Window: Menu Tools --> Extension Manager --> Online Gallery --> Terminal Window

Création d’un nouveau projet:
• Start Page --> New Project --> C++ --> C++ Executable Project
• Name: Blink
• Location: …....\Mes documents\AVRStudio (remplacer les …... par ce qui convient)
• Solution name: Blink
• --> OK
• Device Selection: choisir votre Atmega
• --> OK

Copie des fichiers Arduino
• Dans Windows, créer le répertoire AVR_Studuino : ….…\Mes documents\AVRStudio\AVR_Studuino
• Copier dans AVR_Studuino tous les fichiers du répertoire C:\Program Files\arduino-0022\hardware\arduino\cores\arduino
• Copier dans AVR_Studuino le répertoire entier C:\Program Files\arduino-0022\libraries
• Ouvrir l’IDE Arduino et charger le sketch « Blink »
• Copier le sketch et le coller à la place du programme par défaut de Studio
• Dans Studio, ajouter "#include <WProgram.h>" au-dessus de void setup()
• Dans l'IDE Arduino, compiler le sketch Blink. Laisser l'IDE ouverte
• Aller dans le répertoire C:\Documents and Settings\Jeannot\Local Settings\Temp\build……………...tmp
• Copier le fichier « core.a » dans le répertoire AVR_Stduino et le renommer « libcore.a »
• Copier C:\Program Files\arduino-0022\hardware\tools\avr\bin\avrdude.exe dans ….…\Mes documents\AVRStudio\AVR_Studuino
• Copier C:\Program Files\arduino-0022\hardware\tools\avr\etc\avrdude.conf dans ….…\Mes documents\AVRStudio\AVR_Studuino

Inclusion dans Studio des chemins d’accès à ces répertoires
• Studio : menu Project --> Properties --> onglet Toolchain --> AVR/GNU C++ Compiler --> Directories --> bouton Include
• Dans la fenêtre “Add Include Paths“, introduire le répertoire ….…\Mes documents\AVRStudio\AVR_Studuino et décocher la case « Relative Path »
• Introduire également les répertoires des librairies à utiliser dans ce projet. Exemple : ……\Mes documents\AVRStudio\AVR_Studuino\libraries\Wire

Modification du fichier « makefile »
• Menu Project --> Properties --> onglet Toolchain --> AVR/GNU C++ Linker --> Miscellaneous
• Ecrire dans la fenêtre les paramètres suivant : -Wl,-lcore -Wl,-L"……..\Mes documents\ AVRStudio\AVR_Studuino"
• Menu général Build --> Build Blink
• Ouvrir le fichier ……..\Mes documents\AVRStudio\Blink\Blink\Debug\Makefile avec Notepad. Ne pas cocher « Retour automatique à la ligne
• Dans Notepad, menu Edition --> Rechercher. Introduire dans la fenêtre WL
• Déplacer la séquence -Wl,-lcore -Wl,-L"……..\Mes documents\ AVRStudio\AVR_Studuino" à la fin de la ligne
• Sauvegarder le fichier Makefile et fermer Notepad
• Dans Studio, menu Project --> Properties --> onglet Build
• Cocher la case “Use External Makefile” et entrer le chemin d’accès à Makefile : ……..\Mes documents\AVRStudio\Blink\Blink\Debug\Makefile

Vérification que la compilation se fait sans erreur
• Menu général Build --> Build Blink
• En cas d’erreur, vérifier méticuleusement tous les points ci-dessus avant de continuer

Intégration de la commande d’upload
• Menu Tools --> External Tools
• Title : Upload Arduino (peut être modifié)
• Command : ……….\Mes documents\AVRStudio\AVR_Studuino\avrdude.exe
• Arguments : -C "………….\Mes documents\AVRStudio\AVR_Studuino\avrdude.conf" -v -v -p atmega328p -c stk500v1 -P COM3 -b 57600 -U flash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i
• Attention d’adapter –p atmega328p au microcontrôleur utilisé
• Ne pas cocher « Use Output window »
• Cocher “Prompt for arguments”
• Ne pas cocher “Close on exit”
• Cliquer « OK »

Vérification que l’upload se fait correctement
• Menu Tools --> Upload Arduino
• Possibilité de modifier les paramètres d’avrdude
• Cliquer « OK »
• Une fenêtre DOS s’ouvre et montre le travail d’avrdude


Ci-dessous l'ensemble de la procédure sous forme de pdf

Studuino.pdf (30.4 KB)

Attention, la procédure et le pdf ont été corrigé à minuit 10 minutes car il manquait la ligne suivante:
• Dans Studio, ajouter "#include <WProgram.h>" au-dessus de void setup()

Veuillez vérifier que vous avez cette ligne.

An English summary is available at this address:
http://arduino.cc/forum/index.php/topic,82577.0.html

J'ai essayé de compiler l'exemple de la librairie OneWire :
http://www.pjrc.com/teensy/td_libs_OneWire.html
J'ai appelé ce programme "Thermostat"
La compilation et l'upload se font normalement dans l'ide Arduino.
Par contre, en suivant la procédure que j'ai décrite pour Studio, le building du projet donne des erreurs:

------ Rebuild All started: Project: Thermostat, Configuration: Debug AVR ------
Build started.
Project "Thermostat.avrgccproj" (ReBuild target(s)):
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreRebuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Thermostat.avrgccproj" (target "ReBuild" depends on it):
Using "RunAvrGCC" task from assembly "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCCLib.dll".
Task "RunAvrGCC"
C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe -C "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug" -f "Makefile" clean all
make: Entering directory C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/Thermostat/Thermostat/Debug' rm -rf Thermostat.o Thermostat.d libThermostat.a Thermostat.hex Thermostat.eep Thermostat.lss Thermostat.map Thermostat.cpp Invoking: AVR/GNU CPP Compiler "C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-g++.exe" -funsigned-char -funsigned-bitfields -I"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino" -I"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libraries\LiquidCrystal" -I"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libraries\OneWire" -O0 -fpack-struct -fshort-enums -g2 -Wall -c -mmcu=atmega328p -MD -MP -MF"Thermostat.d" -MT"Thermostat.d" -o"Thermostat.o" ".././Thermostat.cpp" Finished building: .././Thermostat.cpp Building target: Thermostat.elf Invoking: AVR/GNU C/C++ Linker "C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-g++.exe" -mmcu=atmega328p -Wl,-Map=Thermostat.map -o Thermostat.elf Thermostat.o -Wl,-lcore -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino" Thermostat.o: In function loop':
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(35,1): undefined reference to OneWire::search(unsigned char*)' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(39,1): undefined reference to OneWire::reset_search()'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(51,1): undefined reference to OneWire::crc8(unsigned char*, unsigned char)' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(78,1): undefined reference to OneWire::reset()'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(79,1): undefined reference to OneWire::select(unsigned char*)' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(80,1): undefined reference to OneWire::write(unsigned char, unsigned char)'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(85,1): undefined reference to OneWire::reset()' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(86,1): undefined reference to OneWire::select(unsigned char*)'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(87,1): undefined reference to OneWire::write(unsigned char, unsigned char)' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(94,1): undefined reference to OneWire::read()'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(99,1): undefined reference to OneWire::crc8(unsigned char*, unsigned char)' Thermostat.o: In function __static_initialization_and_destruction_0':
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\Thermostat\Thermostat\Debug/.././Thermostat.cpp(19,1): undefined reference to OneWire::OneWire(unsigned char)' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(HardwareSerial.cpp.o)(1,1): undefined reference to __cxa_pure_virtual'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(HardwareSerial.cpp.o)(1,1): undefined reference to __cxa_pure_virtual' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(HardwareSerial.cpp.o)(1,1): undefined reference to __cxa_pure_virtual'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(HardwareSerial.cpp.o)(1,1): undefined reference to __cxa_pure_virtual' C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(HardwareSerial.cpp.o)(1,1): undefined reference to __cxa_pure_virtual'
C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino\libcore.a(Print.cpp.o)(1,1): more undefined references to __cxa_pure_virtual' follow collect2: ld returned 1 exit status make: *** [Thermostat.elf] Error 1 make: Leaving directory C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/Thermostat/Thermostat/Debug'
Done executing task "RunAvrGCC" -- FAILED.
Done building target "CoreRebuild" in project "Thermostat.avrgccproj" -- FAILED.
Done building project "Thermostat.avrgccproj" -- FAILED.

Build FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

J'ai mis en bleu la première erreur qui se produit. Cette erreur me suggère que la librairie OneWire n'a pas été trouvée. Pourtant, on voit (en vert) la ligne d'include du bon répertoire pour le compilateur C++. Je ne sais pas trop ce que je pourrais changer pour que ça fonctionne.

Par ailleurs, j'ai l'impression que le sujet n'intéresse pas grand monde car j'ai publié la procédure il y a une semaine et il n'y a eu aucune réaction, aussi bien dans le forum français qu'anglais. L'utilisation de Studio à la place de l'IDE serait-elle un sujet un peu tabou ?

Hello Jean-Marie,
J'ai comme un doute sur l’intégration du code arduino via un autre ide, ce que je ne comprend pas bien c'est dans le core arduino nous avons le main.cpp (avec les véritable fonctions setup et loop) donc je suppose que l'ide arduino ce charge de le complété en transposant le code du .pde et en faire un main valide avant compilation, ici nous devrions modifier nous même ce main.cpp ?
Maintenant là ou j'ai pas mal de problème avec l’intégration de lib existante ou perso c'est ou ce situe ses lib ou autre par rapport à ce main ?
Pourquoi lorsque je veux créer ma propre lib et y inclure une autre lib existante doit on l'inclure 2 fois, une fois dans la nouvelle lib créée et une fois dans le .pde ,pourquoi mes #define ne sont pas pris en compte à partir du pde ? etc, etc, etc ...
Je crois que le mystère de ton problème ce situe quelque part par là ?
Sinon concernant la participation à ce sujet pourtant très intéressant, je crois que la plupart des gens amateurs qui viennent sur le forum ce concentre d'abord sur le code avec lequel "ils galèrent" avant d'envisagé l’intégration du code dans un autre ide (c'est plus facile du tout cuit pour apprendre :%).
Franchement tu fais un énorme boulot qui même si peux de participant mérite un grand bravo :).