Détection de fin de fût bière Arduino Opta

Bonjour à tous,

Pour résumer j'ai :
1 Capteur IFM Electronics LMT100 (https://media.ifm.com/CIP/mediadelivery/asset/58aebdcb02f3564e896b0399ff21f917/11406185_01_FR.pdf?contentdisposition=inline)

1 Arudino Opta (relais Finder intégrés)

Je veux controler un des relais lorsque mon capteur m'envoie une information.

Je n'arrive pas à recevoir l'information du capteur.

Il y a très peut de documentation en ligne sur l'Arduino Opta et son fonctionnement.

Hello
Vas lire les bonnes pratiques du forum.
Un exemple: comme nous ne connaissons pas ton capteur, il serait judicieux que tu mettes un lien sur un site vendeur ou mieux sur sa datasheet ou ses caractéristiques.

edit: j'ai fais l'effort ...
Capteur à 2sorties PNP
L'une en NC ,
L'autre en NO.

J'ai ajouté le lien vers la doc :slight_smile:

Oui ça j'ai vu mais par contre je ne sais pas comment connecter les fils, pour l'instant j'ai relié le fil noir à mon input 2 (Bleu et marron sur mon alim 24v).
Ci-dessous le code :

const int pinCapteur = A1/PIN_A1; // Utilise le numéro de la broche où le capteur est connecté

void setup() {
  pinMode(pinCapteur, INPUT); // Configuration de la broche du capteur en entrée
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  int etatCapteur = digitalRead(pinCapteur); // Lecture de l'état du capteur

  if (etatCapteur == HIGH) { // Si le capteur est actif
    digitalWrite(LED_BUILTIN, HIGH); // Allume la LED intégrée
  } else {
    digitalWrite(LED_BUILTIN, LOW); // Éteint la LED intégrée
  }
}

Bonsoir a part deviner on ne sait pas comment c est branché ?. Pullup resistance de tirage etc ..
En pre.iere lecture c est le branchement qui estven cause un schema serait bienvenu

Bonjour,

Le capteur à 4 fils, deux pour l'alimentation (c'est un capteur programmable), et deux qui sont des sorties.
Je ne sais pas comment le connecter j'ai d'écris au dessus mon branchement.

EDIT : j'ai débranché le fil blanc il mettait la sortie 1 du capteur en court circuit

Sur GG, tapes lmt100, il te donnera un lien sensor lmt100 chez RS.
Tu télécharges la Doc du lien. Il y a un schéma des 4fils plus détaillé (4=NO et 2= NF)

Le schéma je l'ai (j'ai d'ailleurs acheté l'otpa chez eux).
Je pense que mon problème est dans le code ou le câblage

A1/PIN_A1, ça existe ?

Capture du manuel de l'Opta

image

D'ailleurs j'ai modifié le code j'ai remplacé les PinCapteur par inPin (je crois avoir compris qu'il fallait plutôt indiquer ça

Alim24v?
Tu a une adaptation de tension entre ton capteur et ta platine?

Oui alim 24v, pas d'adaptation de tension non je ne sais pas ce que c'est

Tu remplaces A1_PINA1 par A1

1 Like

Oh yes ça fonctionne !

Oui, mais un bon dessin vaut mieux qu'un long discours.

Tu peux ajouter des pièces jointes (icône avec la flèche vers le haut).
Tu as bien une imprimante scanner, ou un téléphone qui prend des photos.

Tu prends une feuille de papier, un stylo et une règle et tu fais un schéma.
Inutile d'aller chercher des logiciels spécialisé si tu ne sais pas (encore) t'en servir, ce serait une perte de temps.

Du coup je voudrais contrôler le relais intégré à la carte, pour le code je ne sais pas quoi indiquer pour controle un relais, ci-dessous capture d'écran du nom des sorties sur mon modèle
image

Si tu veux coller le relais 1, tu mets
Au dessus du setup:
const byte relais1 0;

Dans le setup, tu mets
digitalWrite(relais1,LOW);
PinMode(relais1, OUTPUT);

Et dans la loop, à l'endroit approprié
DigitalWrite (relais1,HIGH);

nota: je ne connais pas ta carte, je suis surpris par l'utilisation de D0.
Il serait plus prudent de prendre le relais 3 ou 4 et de remplacer D0 par D2 ou D3.

J'ai eu ce message en retour :
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:2:20: error: expected initializer before numeric constant
const byte relais1 0;
^
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino: In function 'void setup()':
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:7:16: error: 'relais1' was not declared in this scope
digitalWrite(relais1,LOW);
^~~~~~~
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:8:26: error: expression list treated as compound expression in functional cast [-fpermissive]
PinMode(relais1, OUTPUT);
^
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino: In function 'void loop()':
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:16:19: error: 'relais1' was not declared in this scope
DigitalWrite (relais1,HIGH);
^~~~~~~
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:16:5: error: 'DigitalWrite' was not declared in this scope
DigitalWrite (relais1,HIGH);
^~~~~~~~~~~~
C:\Users\csimonet\AppData\Local\Temp.arduinoIDE-unsaved20231131-35412-ac0gkh.evtmf\sketch_dec31a\sketch_dec31a.ino:16:5: note: suggested alternative: 'digitalWrite'
DigitalWrite (relais1,HIGH);
^~~~~~~~~~~~
digitalWrite

exit status 1

Compilation error: expected initializer before numeric constant

J'ai l'exemple de code du manuel mais je ne comprends pas à quoi servent les i

/*
  Opta's Output Relays 
  Name: opta_outputs_relays_example.ino
  Purpose: This sketch tests the output relays of Opta devices.


  @author Arduino PRO Content Team
  @version 2.0 22/07/23
*/

// Arrays of relays and user LEDs
int relayOutputs[] = {D0, D1, D2, D3};
int userLeds[] = {LED_D0, LED_D1, LED_D2, LED_D3};

// Compute the number of relays/LEDs based on the size of the relayPins array
int numRelays = 4;

void setup() {
  for(int i = 0; i < numRelays; i++) {
    // Sets the mode of the relays and user LEDs as outputs
    pinMode(relayOutputs[i], OUTPUT); 
    pinMode(userLeds[i], OUTPUT); 
  }
}

void loop() {
  // For each relay/user LED: turn it on, wait for a second, turn it off, wait for another second
  for(int i = 0; i < numRelays; i++) {
    digitalWrite(relayOutputs[i], HIGH); 
    digitalWrite(userLeds[i], HIGH);
    delay(1000);
    digitalWrite(relayOutputs[i], LOW);
    digitalWrite(userLeds[i], LOW);
    delay(1000);
  }
}

J'ai trouvé :slight_smile:

const int inPin = A1; // Utilise le numéro de la broche où le capteur est connecté
int relayOutputs[] = {D0, D1, D2, D3};

void setup() {
  pinMode(inPin, INPUT); // Configuration de la broche du capteur en entrée
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(relayOutputs[D1], OUTPUT);

}
void loop() {
  int etatCapteur = digitalRead(inPin); // Lecture de l'état du capteur

  if (etatCapteur == HIGH) { // Si le capteur est actif
    digitalWrite(LED_BUILTIN, HIGH); // Allume la LED intégrée
    digitalWrite(relayOutputs[D1], HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW); // Éteint la LED intégrée
    digitalWrite(relayOutputs[D1], LOW);
  }
}