Loading...
  Show Posts
Pages: 1 2 [3] 4 5
31  International / Français / Re: Utilisation de <Servo.h> dans une librairie on: April 23, 2012, 12:20:24 pm
Cool!
Et bien idem, j'essaierais tout ça dans quelques jours, là je n'ai pas mon petit bébé électronique à portée de main :p

Merci beaucoup! A+
32  International / Français / Re: Utilisation de <Servo.h> dans une librairie on: April 23, 2012, 12:14:23 pm
Merci Osaka, j'essaie ça dès que j'ai ma carte sous la main!
Je vous tient au courant smiley

Au fait, pourquoi "Servo.h"? Les quotes ne sont pas réservées aux librairies que nous avons crées?

Youp
33  International / Français / Re: Utilisation de <Servo.h> dans une librairie on: April 23, 2012, 06:50:39 am
Quote
donne directement tout le contenu de ton .h et ton .CPP

Hem...
Ca va peut-être poser problème, mon .h et mon .cpp font à eux seuls environ 1500 lignes de code smiley-grin

En corrigeant ce petit problème de servo je clôturerais la version beta de mon projet, que je développe depuis plusieurs mois... Pour vous dire un peu à quel point je suis impatient de trouver réponse à ce problème smiley

De fait, je réserve une ♪♫petite surprise♪♫ à celui qui m'aidera à trouver une solution! smiley-grin

En attendant je vais créer une librairie contenant uniquement l'utilisation de Servo.h, pour voir si ça fonctionne.

Youp.
34  International / Français / [résolu] Utilisation de <Servo.h> dans une librairie on: April 20, 2012, 12:48:54 pm
Bonsoir à tous.
Pour un projet j'utilise la librairie Servo.h
J'arrive très bien à la manipuler avec un programme de test, seulement je développe mon projet sous la forme d'une librairie, et je n'arrive pas à utiliser <Servo.h> convenablement, mon servo est totalement inactif (sans mauvais jeux de mots :p ).

Voici comment j'utilise Servo.h dans ma lib, pouvez-vous me dire si un truc ne va pas?

MaLib.h :
Code:
#ifndef MaLib
#define MaLib
#include <Servo.h>
#define MIN_SERVO 81
#define MAX_SERVO 91

class MaClasse {
        public:
        ...
private:
        Servo servo;
        ...
};
#endif

MaLib.cpp

Code:
#include "MaLib.h"
Robot::Robot()
{
servo.attach(PIN_SERVO);
        ...
}

void Robot::commencer(void)
{
servo.write(MAX_SERVO);
delay(3000);
servo.write(MIN_SERVO);
delay(3000);
        ...
}

Merci à vous!
35  International / Français / Re: linux: script pour ouvrir un fichier.pde avec arduino on: March 04, 2012, 04:55:47 pm
Ah oui j'avais mal interprété la signification des ... smiley

Ça marche! Merci beaucoup!
Youp
36  International / Français / Re: linux: script pour ouvrir un fichier.pde avec arduino on: March 04, 2012, 11:53:38 am
Merci Zoroastre.

Après avoir fait la modif de ce fichier, j'obtiens ce message :

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base "$SKETCH" &
Exception in thread "main" java.lang.NoClassDefFoundError: processing/app/Base
Caused by: java.lang.ClassNotFoundException: processing.app.Base
   at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: processing.app.Base. Program will exit.


Le fichier modifié en question:
Code:
#!/bin/sh
 
APPDIR=/usr/share/arduino

cd $APPDIR

if [ "$1" ]; then
  SKETCH=`readlink -f $1`
else
  SKETCH=
fi
37  International / Français / [résolu] linux: script pour ouvrir un fichier.pde avec arduino on: March 04, 2012, 10:19:36 am
Bonjour!!
Comme l'indique le titre j'essaie de me faire un petit script bash pour lancer plusieurs programmes en même temps (Processing, Arduino et quelques fichiers textes).

Je ne parviens pas à ouvrir mon fichier .pde avec Arduino.
La commande suivante m'ouvre Arduino sans ouvrir le fichier:
Code:
arduino [chemin]/fichier.pde
Alors que ça marche très bien avec les .pde de Processing.

Une idée?
38  International / Français / Re: RXTX Version mismatch Processing on: February 27, 2012, 06:04:20 pm
Quote
J'ai retrouvé le lien qui va bien dans mes bookmarks :
http://wiki.processing.org/w/Serial_Issues

Oui je suis également tombé sur cette page et suivi les consignes, en vain.

Quote
Suivant la plateforme il faut ajouter/modifier les droits d'accès aux port série et/ou faire un lien symbolique.

C'était effectivement le problème.

J'ai pu résoudre mon problème après avoir trouvé ce magnifique how-to qui permet de faire une install parfaite smiley

http://www.edwards.je/2011/11/11/processing-arduino/

Il est pour Fédora mais ça change presque rien.
Il faut juste faire gaffe au répertoire de rxtx qui (chez moi) est: /usr/lib/jni/librxtxSerial.so

Donc c'était la ligne avec le chmod qui me manquait.
En passant, on nous propose de remplaçer les 2 fichiers rxtx de Processing par des liens symboliques vers les fichiers systèmes.
Je trouve cette solution bien plus "propre", mieux que de les copier et avoir les fichiers en double sur sa machine avec des versions différentes (voir le how-to en question si je ne me fais pas très bien comprendre).

Et voila!!
Promblem solved!
39  International / Français / Re: RXTX Version mismatch Processing on: February 25, 2012, 10:20:58 am
Ubuntu 11.10
Processing 1.5.1
Arduino 0022

En effet ça compile mais sans communiquer avec arduino.
Au début je pensais que c'était mon code mais même avec un programme tout simple ça ne marche pas:

Arduino:
Code:
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("coucou");
}

Processing:
Code:
import processing.serial.*;
Serial myPort;  // The serial port

void setup() {
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
  while (myPort.available() > 0) {
    int inByte = myPort.read();
    println(inByte);
  }
}
40  International / Français / [résolu] RXTX Version mismatch Processing on: February 24, 2012, 11:18:55 pm
Bonsoir!
Ça fait un bout de temps que je ne suis pas venu sur le forum! Je suis content d'être de retour smiley
J'ai du arrêter de bidouiller mon arduino pendant quelques semaines (partiels oblige smiley-wink )

Depuis j'ai ré-installé mon Linux, j'ai donc perdu toutes les config que j'avais réalisées pour utiliser Processing.
Je bute sur un problème que j'ai résolu par le passé, impossible de me rappeler ce que j'avais fait...  smiley-cry

C'est tout bête, donc, j'ai l'erreur WARNING:  RXTX Version mismatch à la compil.
J'ai téléchargé rxtx-2.2pre2, j'ai remplacé tous les fichiers librxtxSerial.so et les RXTXcomm.jar par leur nouvelles versions.

J'ai toujours la même erreur.
Il faut faire autre chose après?

Merci pour l'aide
Youp
41  International / Français / Re: arduino, eclipse et le C on: January 07, 2012, 08:30:09 am
Je n'ai toujours pas réussi à configurer Eclipse smiley-sad
J'ai cette fois-ci suivi un tuto qui n'a rien à voir avec arduino, et toujours la même erreur.
Je ne vois pas d'où peut provenir cette erreur.
Je suis sous ubuntu 11, j'ai installé les paquets nécessaires à avrdude en ligne commande, ainsi que le plugin AVR eclipse.
42  International / Français / Re: Serial.begin() dans une biliothèque on: January 01, 2012, 07:34:01 pm
Quote
Ne rien faire dans le constructeur.
Pourquoi? :p
Je débute un peu en poo, en fait le constructeur est réservé à quel usage?

Skywodd, décidément t'es partout smiley
Je n'ai pas mon pc sur place pour tester exactement ton code, mais il me semblait que dans ce cas le port série était accessible uniquement dans le constructeur, donc inutilisable dans mehode1.
Je suppose qu'il n'est pas obligatoire de mettre la vitesse du port série en entrée du constructeur, on peut écrire directement Serial.begin(9600) ?
Ceci dit si ça marche c'est cool car cela m'intéresse de ne pas avoir à faire le serial.begin() dans mon fichier pde.
Je vous tiens au courant, je pourrais faire les tests demain soir.

Youp.
43  International / Français / Serial.begin() dans une biliothèque on: December 29, 2011, 08:32:01 pm
Salut à tous, et encore une fois bonnes fêtes smiley

Je suis en train de réaliser une biblio qui doit communiquer via le port série.
J'ai fait un Serial.begin(); dans le setup de mon .pde et jusque là tout va bien.
J'aimerais maintenant utiliser le port série dans le constructeur de ma fonction.
Seulement ça ne marche pas car j'appelle mon constructeur avant le Serial.begin();

Un joli exemple pour expliquer mes explications pas très explicites:

Biblio.h :
Code:
#include "WProgram.h"
#include "Biblio.h"
Bidule::Bidule() {
  Serial.println("bonne année");
}
Bidule::methode1() {
  Serial.println("joyeux nowel");
}

test.pde :
Code:
#include <Biblio.h>

Bidule toto();

void setup() {
  Serial.begin(9600);
  toto.methode1();
}
void loop() { while(1) {} }

J'ai pas testé ça, il manque peut-être des trucs mais globalement c'est le principe.
Cela affiche uniquement joyeux nowel.
44  International / Français / Re: naviguer dans une chaine de caractère (ou un fichier) on: December 28, 2011, 05:14:20 pm
Oh pardon, j'avais pas lu ton code...
C'est du abrégé dis donc smiley-grin
Que signifie if (!motDeb[++i]) ?
Pour le reste, on m'a appris a ne faire qu'un seul return en fin de fonction, donc je vais laisser comme tel.
Tant pis si ça prends un booléen en plus, pour la place que ça prends :p
45  International / Français / Re: naviguer dans une chaine de caractère (ou un fichier) on: December 28, 2011, 03:17:04 pm
Voici une version un peu modifiée.
J'ai donc renvoyé donc le int et -1 s'il n'arrive pas a ouvrir le fichier.
Le strcat(motDeb , "=\""); rajoute les caractères =" au mot cherché.

Exemple du fichier xml:
width="120mm"
Un recupSD(valeur, "width") va donc chercher width=" , puis récupérer les car. jusqu'au prochain " , ce qui renvoie ici 120mm .

Du coup je me suis aperçu d'une anomalie: je modifiais *motDeb, du coup la fonction est foireuse si on l'appelle plusieurs fois de suite.
Bug rectifié sur la version ci-dessous : en-tête de fonction avec un const char *mot, pour être sur de ne rien toucher, et je copie son contenu dans une nouvelle chaîne: motDeb.

Code:
int recupSD(char *valeur, const char *mot)
{
  // crée une chaine de la meme taille que *valeur
  // +2 pour (=") + 1 pour le \0
  char motDeb[strlen(mot)+3];
  strcpy(motDeb, mot);
  strcat(motDeb , "=\""); // ajoute le (=")
 
  char carFin = '\"'; // va récupérer les car. jusqu'aux guillemets

  File fichier = SD.open("test.txt"); // ouvre fichier
  fichier.seek(0); // se positionne en début de fichier

  byte i = 0;
  char car;
  boolean trouve = false;
  boolean valOk = false;

  if (fichier) // si aucune erreur sur le fichier
  {
    while(fichier.available() && !valOk)
    //tant qu'il y a qqch à lire et qu'on a pas trouvé la valeur
    {
      car = fichier.read();
      if (!trouve) // si on a pas encore trouvé le mot
      {
        if (car == motDeb[i]) // si le caractère correspond, passe au suivant
        {
          i++;
          if(motDeb[i] == '\0') // si fin du mot (mot trouvé)
          {
            i=0;
            // avance d'un caractère pour ne pas choper le "
            //fichier.read();
            trouve = true;
          }
        }
        else
          // si un des car. n'est pas bon on reprends depuis le debut
          i=0;
      }
      else // si on a trouvé le mot:
      {
        if (car != carFin) // si ce n'est pas ("), stocke dans valeur
        {
          valeur[i] = car;
          i++;
        }
        else
        {
          valeur[i] = '\0';
          valOk = true; // on a fini
        }
      }
    }
  }
  else
  {
    Serial.println("erreur d'ouverture du fichier");
    i=-1;
  }
   
  return i;
}

Il me reste plus qu'à coder une autre fonction pour convertir le résultat en flottant en tenant compte de l'unité de mesure (cm, mm,...).
Pages: 1 2 [3] 4 5