Ajouter une librairie sous ubuntu 12.04

Bonjour à tous

Voilà, je m'en remet à vous car après plusieurs heures de recherches, je ne trouve pas de solutions à mon problème.
J'ai installé le logiciel arduino sous ubuntu 12.04 sans aucun problème (à partir de la logithèque)
Je souhaiterais ajouter une librairie (one-wire)
je l'ai téléchargée, j'ai voulu copié le fichier dans le dossier usr/share/arduino/librairies
mais je n'ai pas les droits
J'ai essayé de les modifiés, je n'y arrive pas

Ensuite, j'ai lu qu'il fallait mettre le dossier dans mon dossier sketchbook
Pour essayer, je vais dans arduino, carnet de croquis, je vous bien mon dossier one wire, j'ouvre le fichier sample
et quant je le vérifie il ne trouve pas le OneWire.h
J'en conclus que je n'ai pas mis mon dossier au bon endroit

Comment dois je procéder?

Merci d'avance pour votre aide

J'ai réussi à aller coller mon dossier
en changeant les chmod des fichiers (sudo chmod a+w nom du fichier)

Mais maintenant quant je vérifie mon fichier test il me renvoit ceci:

/usr/share/arduino/libraries/OneWire/OneWire.cpp:85:24: fatal error: WConstants.h : Aucun fichier ou dossier de ce type
compilation terminated.

Je ne comprend pas pourquoi

AMHA c'est un très très mauvais choix de changer les droits des fichiers classés dans usr: tu crées des gros trous de sécurité dans ubuntu.

Tu aurais du passer par sudo qui te permets d'administrer ton OS avec les droits super-utilisateur.

Tu peux le faire en mode graphique bien que les gardiens de l'ordre du temple Linux voient rouge quand on évoque cette possibilité, mais ne sont ils pas un peu extrémistes ?

Donc en faisant attention à ce que tu fait tu ouvre ton gestionnaire de fichier avec des droits administrateurs, pour moi qui suis sous Debian kde et avec le gestionnaire de fichier dolphin je fais :

  • excuter une commande
  • kdesu dolphin
    je tape le mot de passe

Dolphin s'ouvre avec les droits administrateurs et je fais tous les transferts comme si j'étais sous mon home.

Et n'oublies pas de fermer ton gestionnaire de fichier une fois terminé, c'est à cause de ce genre d'oublis que les gardiens de l'ordre du temple Linux voient rouge avec l'administration en mode graphique.

Oui, je me doute bien que c'est risqué, j'ai remit le schmot convenablement après :sweat_smile:
il n'a pas voulu me le faire avec sudo... je ne sais pas trop pourquoi ...

Sinon, j'ai fini par trouver tout seul (tant mieux, désolé pour le dérangement)
Voici la solution:
Dans le fichier OneWire.cpp
remplacé le code

extern "C" {        
#include "WConstants.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
}

par

#include "Arduino.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

Comme ca si d'autre ont le même soucis, la solution est ici :wink:

Je pense que tu mélanges 2 problèmes différents:

  1. l'emplacement où sont stockées les librairies sur une machine linux. Dans ton répertoire personnel, il y a le répertoire sketchbook, dans ce répertoire tu crées un répertoire libraries, et dans c'est là que tu places les librairies que tu ajoutes. elles seront directement reconnues par l'IDE. Tu dois donc avoir une arborescence comme celle-là:
     home/nom_user/sketchbook/libraries/MatrixDisplay
     home/nom_user/sketchbook/libraries/OneWire
     home/nom_user/sketchbook/libraries/SDCard

A l'intérieur de chaque librairies il peut y avoir des sous-répertoire avec les exemples

  1. ton erreur de compilation c'est un problème lié à l'utilisation d'une librairies développée pour les versions de l'IDE postérieures à la 1.0. Sujet qui a déjà généré de nombreux post donc je n'insisterais pas.

zorguinou:
J'ai réussi à aller coller mon dossier
en changeant les chmod des fichiers (sudo chmod a+w nom du fichier)

Mais maintenant quant je vérifie mon fichier test il me renvoit ceci:

/usr/share/arduino/libraries/OneWire/OneWire.cpp:85:24: fatal error: WConstants.h : Aucun fichier ou dossier de ce type
compilation terminated.

Je ne comprend pas pourquoi

Quelques notions d'Unix seraient utiles :frowning:

chmod a+w se contente de donner les droits en écriture (write) à tout le monde (inutile et dangereux). Là tu as rendu le répertoire accessible pour y écrire les fichiers, mais pas pour les lire. Un fichier qu'on veut rendre accessible en lecture doit être en +r (read) et +x (execute) dans le cas d'un 'éxécutable' (script 'actif' ou binaire)

Ensuite, ton WConstants.h, peut très bien être présent mais inaccessible. Utilise la commande find pour le trouver (en sudo ou en su), puis la commande ls -l pour voir si les droits sont adhoc

Si tu bricole un coup sous root (via sudo) puis le reste sous un utilisateur, c'est la salade garantie, surtout si tu n'utilises pas -R, tu ne fais pas de descente de droit dans les sous-rep. Le plus propre est de faire un groupe développeur et d'y affecter toutes les ressources de développeur (et encore des commandes à apprendre chgrp, chown) :fearful: