Conta piegamenti

Salve a tutti, vorrei fare un conta piegamenti (flessioni) usando un sensore ad ultrasuoni (HC-SR04) e un display. Il sistema funziona ma ho due problemi: il display si vede male e il problema si corregge solo nel momento in cui faccio la flessione; il secondo problema è che provando a stare vicino al sensore (quindi alla distanza preimpostata per contare una sola flessione), continua a contare piegamenti fino a quando non mi tolgo da quella distanza. Come faccio a contare solo una flessione anche se sto vicino al sensore per più tempo?

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
const int trigPin = 10;
const int echoPin = 9;
long durata;
int distanza;
int Piegamenti= 0;
int ultimoPiegamento= 0;
int ultimaDistanza= 0;
int incremento = false;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() 
{
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
}
void loop() 
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  durata = pulseIn(echoPin, HIGH);
  distanza = (durata * 0.034) / 2;
  Serial.println(Piegamenti);
   if(distanza != ultimoPiegamento){
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Piegamenti: ");
    lcd.print(Piegamenti);
    ultimoPiegamento = Piegamenti;     
   }
   if(distanza != ultimaDistanza)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Piegamenti: ");
    lcd.print(Piegamenti);
    ultimoPiegamento = Piegamenti;
  }
   if(distanza<=10){
     if(incremento==false){
    Piegamenti += 1;
    incremento=true;
    tone(7, 1000, 100);
    lcd.clear();
    lcd.print("Piegamenti: ");
    lcd.print(Piegamenti);
    delay(500);
   }else{
     incremento=false;
   }
}
}

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

Guglielmo dice anche questo:

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Inoltre, per cortesia, indenta correttamente il codice (puoi farlo molto semplicemente nell'IDE con CTRL+T).
Dovresti anche usare dei nomi più adeguati per rendere il programma più comprensibile:

if(distanza != ultimoPiegamento){ // Come puoi confrontare la distanza con il numero di piegamenti?...
(...)
ultimoPiegamento = Piegamenti;

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.