Bonjour, je souhaite détecter uniquement un front montant.
Je souhaite que le programme ajoute à la variable n lorsque l'optocoupleur change d'état (état HIGH). Le problème c'est que pendant toute la durée ou il est dans cet état, il ajoute donc je me retrouve avec de mauvaises valeurs.
Merci B@tto pour ta réponse, cela me semble pouvoir fonctionner, j'essayerai ça dès que j'ai le matériel pour.
Pour la variable n j'ai tout simplement copié le mauvais code
// include the library code:
#include <Wire.h>
#include <Adafruit_MCP23017.h>
#include <Adafruit_RGBLCDShield.h>
#include "LiquidCrystal.h"
int C;int L;
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();
#define WHITE 0x7
const int ledPin=13;
const int optoPin=2;
int optoState = 0;
void setup() {
// Debugging output
Serial.begin(9600);
C=0;L=0;lcd.setCursor(C, L);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD. We track how long it takes since
// this library has been optimized a bit and we're proud of it :)
lcd.print(" Tirelire");
lcd.setCursor(0, 1);
lcd.print (" automatise");
pinMode(optoPin, INPUT);
pinMode(ledPin, OUTPUT);
}
uint8_t i=0;
void loop() {
lcd.setCursor(0, 1);
static int n=0;
uint8_t buttons = lcd.readButtons();
optoState = digitalRead(optoPin);
if (optoState ==HIGH) {
digitalWrite(ledPin,LOW);
n = n+1;
C=0;L=0;lcd.setCursor(C, L);
lcd.print("Argent disponible :");
lcd.setCursor(0, 1);
lcd.print (n);
lcd.print (" euros");
}
if (optoState ==LOW) {
digitalWrite(ledPin,HIGH);
n = n-1;
lcd.print("Argent disponible :");
lcd.setCursor(0, 1);
lcd.print (n);
lcd.print (" euros");
}
}
Je ne comprend pas très bien Artouste, pourrais tu me réexpliquer ?
projetbeaumont:
Je ne comprend pas très bien Artouste, pourrais tu me réexpliquer ?
par exemple le code ci-dessous
ça fait n+1 à chaque front montant sur le pin2 d'un uno
unsigned long n=0;
void setup() {
pinMode(2, INPUT); // sans pullup
//pinMode (2,INPUT_PULLUP); // avec pullup
attachInterrupt(0, Addn, RISING); // utilisation interrupt 0 = pin2 sur uno/nano sur montée du signal
}
void loop(){
}
// Interrupt on Rising
void Addn(){
n ++; // inceremente n à chaque int
}