Modification programme Droplet

Bonjour,

Excusé moi si je me trompe, j’aurais besoin de vos lumière :wink:

Je suis entrain de construire une waterdrop machine, avec le logiciel Droplet.

Questions:

1 - Je voudrais rajouter un bouton de départ cycle sans être obligé d’appuyer sur “strat” du logiciel.

2 - Je voudrais rajouter des leds sur les sorties, avant le optocoupleur, afin de contrôler si la commande arrive bien.

3 - La résistance des optocoupleur (4N35) est bien de 220 Homs ?

Merci de votre aide.

Voici le renseignement :

1 -

/*******************************************************************************
   Projet: Droplet - Boîte à outils pour photographes d'art liquide
   * Copyright (C) 2012 Stefan Brenner
    *
    * Ce fichier fait partie de Droplet.
    *
    * Droplet est un logiciel libre: vous pouvez le redistribuer et / ou le modifier.
    * selon les termes de la licence publique générale GNU telle que publiée par
    * la Free Software Foundation, soit la version 3 de la licence, soit
    * (à votre choix) toute version ultérieure.
    *
    * Droplet est distribué dans l’espoir que cela sera utile,
    * mais SANS AUCUNE GARANTIE; sans même la garantie implicite de
    * QUALITÉ MARCHANDE ou APTITUDE À UN USAGE PARTICULIER. Voir le
    * Licence publique générale GNU pour plus de détails.
    *
    * Vous devriez avoir reçu une copie de la licence publique générale GNU
    * avec Droplet. Si non, voir <http://www.gnu.org/licenses/>.
 *******************************************************************************/
#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?


// nappage de périphériques pour 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
                                     };
// broches analogiques supérieures sur méga arduino
// A8, A9, A10, A11, A12, A13, A14, A15 };
// */


/*
   mettre en place des trucs avant de commencer notre boucle principale
*/
void setup() {
  // commencer la communication série
  Serial.begin(BOUD_RATE);

  // configuration des modes de broche
  for (int i = 0; i < DEVICE_NUMBERS; i++) {
    pinMode(deviceMapping[i], OUTPUT);
    // régler manuellement la broche sur BAS sinon il est
    // réglé par défaut sur HIGH sur certaines cartes (i.e. Uno)
    digitalWrite(deviceMapping[i], LOW);
  }

  droplet.startButton = UNDEFINED_PIN;

}

int buttonState;             // la lecture actuelle de la broche d'entrée
int lastButtonState = LOW;   // la lecture précédente de la broche d'entrée

// les variables suivantes sont des poumons car le temps, mesuré en millisecondes,
// deviendra rapidement un nombre plus grand que ce qui peut être stocké dans un int.
long lastDebounceTime = 0;  // la dernière fois que la broche de sortie a été basculée
long debounceDelay = 50;    // le temps de rebond; augmenter si la sortie scintille

/*
   entry point
*/
void loop() {

  if (droplet.startButton == UNDEFINED_PIN) {
    return;
  }

  // lire l'état du commutateur dans une variable locale:
  int reading = digitalRead(droplet.startButton);

  // vérifiez si vous venez d'appuyer sur le bouton
  // (i.e. l'entrée est passée de LOW à HIGH),  et vous avez attendu
  // assez longtemps depuis la dernière pression pour ignorer tout bruit:

  // Si le commutateur a changé, à cause du bruit ou en appuyant sur:
  if (reading != lastButtonState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // quelle que soit la lecture, il existe depuis plus longtemps
    // que le délai anti-rebond, alors prenez comme état actuel:

    // si l'état du bouton a changé:
    if (reading != buttonState) {
      buttonState = reading;

      if (buttonState == HIGH) {
        logging(INFO, "Started execution due to start button event");
        executeActions();
      }
    }
  }

  // sauver la lecture. La prochaine fois dans la boucle,
  // ce sera le lastButtonState:
  lastButtonState = reading;

}



char input[MAX_INPUT_SIZE];
int count = 0;

void serialEvent() {
  while (Serial.available()) {

    // obtenir le nouvel octet
    char inChar = (char) Serial.read();

    //Serial.println("New char: " + String(inChar));

    // TODO brenner: consommer entrée entrée par octet

    if (inChar == '\n') {

      input[count] = '\0';

      logging(DEBUG, input);

      // TODO processus octet par octet pour éviter le débordement de tampon série

      processCommand(input);

      count = 0;

      // TODO envoyer un message reçu peut venir ensuite

    } else {

      // add it to the inputString:
      input[count] = inChar;
      count++;

    }

  }
}

2 -

c'est quoi ce code que vous avez posté?

pour le flash c'est une impulsion sans doute, donc peu de chance que vous ne voyez la LED s'allumer.
pour l'appareil photo, vous entendrez le bruit caractéristique d'ouverture

J-M-L:
c’est quoi ce code que vous avez posté?

pour le flash c’est une impulsion sans doute, donc peu de chance que vous ne voyez la LED s’allumer.
pour l’appareil photo, vous entendrez le bruit caractéristique d’ouverture

Bonsoir J-M-L
çà semble venir de
Domaine photographique intéréssant

Bonsoir,

J-M-L je me doute :wink:

Artouste oui je m’amuse bien pour faire ce style de photo :wink:

Oui tous les Arduinistes photographes ont dû passer par la - J’ai fait mon propre système il y a plusieurs années et j’ai des photos similaires similaires :slight_smile:

Je connais le site mais le code ci dessus n’est pas complet il me semble

Bonjour,

J-M-L se qui me faciliterais le plus est la commande par un bouton poussoir le lancement du cycle.

Dit moi si il faut que je te donne tout les codes ?

merci.

Bonsoir

Désolé je connais le site mais je ne vais pas me plonger dans son vieux code (pas évolué depuis 5 ans) et qui recommande Arduino version 1.0.1

Vous avez plusieurs siphon de Mariotte à synchroniser ou vous comptez en n’utiliser qu’un seul ?
Vous devriez essayer de faire le votre, ce n’est pas super compliqué si vous ne développez pas l’interface de pilotage sur PC et qu’il n’y a qu’une seule électrovanne avec piloter

Bonsoir,

disons que j’ai l’intention d’avoir plusieurs électrovanne pour le moment 3 siphon de Mariotte, mais je vais
rajouter t’autre électrovanne, ainsi que d’autre truc qui sont possible.

J’utilise le logiciel Droplet qui très simple d’utilisation.

Je me doute que le programme est vieux.

En revanche en terme de programmation je n’y connais pas grand chose, et puis il y a des gens qui ferons certainement mieux que moi :wink:

Ah si vous ne touchez pas le code c’est pas simple…

En gros il faudrait regarder dans le code source ce qui est reçu quand le bouton start est appuyé et faire le même déclenchement si un Bouton est appuyé (mais faudrait vérifier si le PC balance les ordres à tour de rôle ou s’ils sont préchargés dans l’arduino)

En pratique le bouton sur la breadboard n’est pas top… vous avez intérêt à vous éloigner de votre montage (un long câble usb depuis l’ordinateur) pour ne pas faire de vibrations parasites. Si vous êtes Canon, moi j’utilisais leur soft directement sur mon mac à côté de mon logiciel de commande arduino ce qui fait que je voyais immédiatement le résultat de la photo et je pouvais affiner mes paramètres dans mon logiciel pour arduino sans avoir à aller jusqu’au montage ainsi que régler les paramètres de l’appareil photo — Le montage était dans la pièce d’à côté, dans le noir)

Pour le bouton Start il faut changer la ligne

droplet.startButton = UNDEFINED_PIN;

en

droplet.startButton = 2;

pour le bouton sur la PIN 2

et raccorder le bouton entre la PIN 2 et le +

Gilbert

Pour ajouter un bouton Start il faut changer la ligne

droplet.startButton = UNDEFINED_PIN;

en

droplet.startButton = x;

x= pin du bouton

Gilbert