Bonjour,
Excusé moi si je me trompe, j’aurais besoin de vos lumière
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 -