bug materiel?

bonjour à vous
suite à mon premier post, ( port usb mac non reconnu) je vous donne quelques infos complementaires comme demandé,
le programme est fait pour piloter trois electrovannes, un appareil photo et un flash pour faire du drop water ( collision de gouttes d'eau en gerant les temps de declenchement en fonction du liquide utilisé et de l'effet attendu)
ce programme a deja ete testé et normalement fonctionne.....malheureusement pas avec moi, il est a noté que le language informatique m'est aussi familier que le turc ou le mandarin.....
j'ai donc construit la platine electronique ( 1 CI et 2 optocoupleurs ( le CI pour les EV, les opto pour le flash et l'appareil photo)j'ai telechargé le logiciel arduino et le droplet ( arduino reconnait la carte ( une UNO d'origine, pas un clone) et valide le port COM10)
a l'installation, j'ai eu un probleme avec le port COM9, qui avait ete trouvé mais pas validé,
j'ai eu un probleme avec JAVA, il a fallu que j'indique manuellement l'emplacement de javaw.exe
le chargement du droplet se passe bien, pas de bug signalé par arduino, les tx et rx sont vivants.
par contre, le "controle device"n'a jamais ete efficace, sauf une fois, ou j'ai reussi a valider chaque sorties ( mais en devant debrancher le cable USB a chaque fois, car un des deux voyants Rrx ou tx resté allumé ( ca me permet au moins de savoir que la partie elctronique est bonne et que les portes sont bien adressées)....sinon, a chaque essais, les portes ne sont pas validées, j'ai un message qui apparait sur le droplet avec un H ou bien Eç et une fois LO ( ce n'est pas un O mais un rectangle)....
j'ai desinstaller arduino et le droplet et refait une installation complete, refait un chargement du programme en suivant le tuto...pas mieux
je vous transmets le code......en esperant pouvoir trouver la solution
merci pour votre aide à venir

#include "logging.h"
#include "protocol.h"
#include "droplet.h"

#define BOUD_RATE         9600
#define MAX_INPUT_SIZE      50 // how many memory can we use one the different arduino devices?


// device mapping for crazyMachine
// char deviceMapping[DEVICE_NUMBERS] = { 3, 2, 11, A2, A1, A3, A4, A5, 13, 12 };

// /*
char deviceMapping[DEVICE_NUMBERS] = {  0,    1,   2,   3,   4,   5,   6,   7,   8,   9,
                                       10,   11,  12,  13,  14,  15,  16,  17,  18,  19,
                                       20,   21,  22,  23,  24,  25,  26,  27,  28,  29,
                                       30,   31,  32,  33,  34,  35,  36,  37,  38,  39,
                                       40,   41,  42,  43,  44,  45,  46,  47,  48,  49,
                                       // analog pins start at 50
                                       A0,   A1,  A2,  A3,  A4,  A5,  A6,  A7 };
                                       // higher analog pins on arduino mega
                                       // A8, A9, A10, A11, A12, A13, A14, A15 };
// */


/*
 * setup stuff befor we start our main loop
 */
void setup() {
  // start serial communication
  Serial.begin(BOUD_RATE);
 
  // setup pin modes
  for(int i = 0; i < DEVICE_NUMBERS; i++) {
    pinMode(deviceMapping[i], OUTPUT);
    // manually set pin to LOW otherwise it is 
    // by default set to HIGH on some boards (i.e. Uno)
    digitalWrite(deviceMapping[i], LOW);
  } 
  
  droplet.startButton = UNDEFINED_PIN;
  
}

int buttonState;             // the current reading from the input pin 
int lastButtonState = LOW;   // the previous reading from the input pin

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers 
 
/*
 * entry point
 */
void loop() {
  
  if(droplet.startButton == UNDEFINED_PIN) {
    return;
  }
  
  // read the state of the switch into a local variable:
  int reading = digitalRead(droplet.startButton);

  // check to see if you just pressed the button 
  // (i.e. the input went from LOW to HIGH),  and you've waited 
  // long enough since the last press to ignore any noise:  

  // If the switch changed, due to noise or pressing:
  if (reading != lastButtonState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  } 
  
  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:

    // if the button state has changed:
    if (reading != buttonState) {
      buttonState = reading;
      
      if(buttonState == HIGH) {
        logging(INFO, "Started execution due to start button event");
        executeActions();
      }
    }
  }

  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonState = reading;
  
}



char input[MAX_INPUT_SIZE];
int count = 0;

void serialEvent() {
  while (Serial.available()) {
    
    // get the new byte
    char inChar = (char) Serial.read(); 
    
    //Serial.println("New char: " + String(inChar));
    
    // TODO brenner: consume input byte by byte
    
    if (inChar == '\n') {
      
      input[count] = '\0';
      
      logging(DEBUG, input);
      
      // TODO process byte by byte to prevent serial buffer overflow
      
      processCommand(input);
      
      count = 0;
      
      // TODO send received message next can come
      
    } else {
      
      // add it to the inputString:
      input[count] = inChar;
      count++;
      
    }
     
  }
}

je vous met le lien du tutos ou l'on voit le circuit electronique et le deroulement de l'installation logiciel....

bonjour,
AMHA, cela vient de là

char deviceMapping[DEVICE_NUMBERS] = {  0,    1

0 et 1 sont réservés pour le port série, donc USB.
tu les configure en OUTPUT

for(int i = 0; i < DEVICE_NUMBERS; i++) {
    pinMode(deviceMapping[i], OUTPUT);

vire 0 et 1, ca devrait mieux le faire je pense

oui, je suis bien sur le port usb de l'ordi....

Le code est programmé « avec les pieds » et ça date de 2011... peu de chance que vous arriviez à faire fonctionner le truc.... la lecture des commandes série par exemple c’est assez n’importe quoi... (manque plein de code dans ce que vous avez posté)

Bonjour après 2:00 dvessai tout fonctionne

Bonjour,

Pour moi tout fonctionne mintenant,
Au début ma carte Arduino devait avoir un bug, car non reconnue par mon mac.
J'ai changé de carte et la tous fonctionne.
Ensuite, le problème suivant était la communication entre le logiciel Droplet et ma carte, mon mac ne trouvait pas de port com entre les deux.
J'ai fini par trouver la solution, sur le site il y a deux version du logiciel pour Mac !!

La premioère qui est la version 0.1.3 Mac OS X et la version "DROPLET 2.0.0-alpha-1 for OSX, c'est celle ci qui fonctionne.

Le lien : https://www.stefanbrenner.com/liquid-art/droplet/

Avec cette version j'ai la connexion entre le logiciel et ma carte Arduino.

Concernant le commentaire de : J-M-L

C'est normal car Philaes n'a pas posté tous les onglets concernant le "Sketch Droplet pour l'arduino"

Bien cordialement

Est ce que l'age du programme est important? Une incompatibilité logiciel est elle possible et serait signalée?desplé de ne pas vous avoirmisleprogramme en entier....l'evolution de là carte uno ne me semble pas un pb, j'utilise pour ce programme un portable avec Windows 7, le seul logiciel mis a jour est java..... je pensais a un défaut delà carte vu que les messages retours ne sont pas toujours les mêmes...j'attend une nouvelle carte et je vais suivre "enrager" pour refaire un essai sur Mac.si l'un d'entre vous connaît un programme plus recent tournant sur uno :slight_smile:
Merci en tous cas de vos conseils

Oui l’âge compte car java a évolué et vous utilisez un binaire precompilé - il se peut qu’il y ait des différences (Notamment liées à la sécurité) à l’exécution car la machine virtuelle a changé

Idem côté Arduino les librairies de l’époque et la version de l’IDE ont pu évoluer donc en compilant avec les dernières release vous n’êtes plus exactement dans le même cas qu’à l’époque (par exemple une amélioration des performances sur Serial pourrait faire bugguer la partie communication entre le Programme Java et l’Arduino car le code série est mal écrit (l’auteur le savait d’ailleurs vu les // TODO .... dans son code )

Merci de vos complétements d'information, c'est vrai que quand on ne comprend pas le langage..... reste trois solutions....esperer que ça marche sur mac,que ce soit un bug de la carte ou trouver un nouveau programme, la solution la moins facile serait d'apprendre a programmer ;)))

Il n’y a aucune raison que ça ne fonctionne pas sur Mac

Dans l’absolu (faudrait voir le code manquant - la je suis juste sur mon iPhone) vous pourriez vous passer dans un premier temps du programme java et balancer à la main depuis la console série arduino les commandes que génère le programme java en regardant le code de la fonction processCommand

C’est ça qui configure le système et ensuite quand vous pressez le bouton ça exécute les actions

Bonjour ,

Voici le Droplet pour Windows.

Cordialement

sketch_droplet.zip (10.2 KB)

Merci pour le droplet, c'est celui de Stefan Brenner?

Je crois que vous m'avez donné la solution...... le programme a ete développé sous arduino 1.0.5....j'ai téléchargé cette version, reversé le programme et le contrôle device fonctionne ( arrêt marche des 3ev et déclenchement du flash.....) je vais continuer le tuto pour finaliser la prise en compte du programme...
Merci à vous d'avoir pris un peu de votre temps

Oui effectivement le droplet vient de lui.

Bien cordialement

Je vais tester mon droplet ce week-end.
Mais je vais que piloter le générateur de gouttes depuis celui ci, car mon flash et mon Apn sont piloté depuis un boîtier Multi Pilot Pro.
Avec ce boîtier je peux faire varier mon timing de flash à la micro seconde alors qu avec l Arduino on est en millisecondes.
Je sais que je peux piloter mon générateur de gouttes via le multi pilot mais uniquement à la millisecondes donc c est pour ça que je vais utiliser l Arduino. Y a le côté ludique du montage et l interface est beaucoup agréable pour le pilotage des gouttes via le logiciel droplet.

Si tu fais de belles photos de gouttes n hésite pas à me les envoyer