Hallo zusammen,
in meinem Projekt geht es darum, Tennisbälle mit Hilfe einer hx711 Wägezelle zu wiegen und dann das Gewicht auszuwerten. Das Programm tut, dass was es eigentlich hauptsächlich tun soll, sprich das Wiegen, Auswerten, funktioniert so weit.
Nun wollte ich noch einbauen, dass erkannt wird, ob die Wägezelle in den ersten 5 Sekunden auch 0 Gramm(was häufig nicht der Fall ist), bzw. mit geringer Abweichung, misst. Falls dies nicht der Fall ist, soll es auf einem LCD angezeigt werden.
Das Problem daran ist, dass egal was ich versuche, zum Beispiel durch Drücken auf die Wägezelle zum Start, nie in die else Schleife reinkomme und das Programm einfach weiterläuft, als wäre alles super.
Könnte das an der if Bedingung liegen? Oder hat jemand sonstige Ideen woran das liegen könnte?
Habe mal das komplette Programm angehängt, die Stelle ist markiert.
Ich benutze einen Arduino UNO.
Grüße,
Sven
#include <HX711_ADC.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
HX711_ADC LoadCell(5, 6); // Kabelanschluss Wägezelle: grau: GND; schwarz:5; orange:6; gelb:5V
LiquidCrystal_I2C lcd(0x27,16,2); //Kabelanschluss LCD: weiß: GND; blau: 5V, lila:A4; grün: A5
int a;
int m;
int t;
float i;
void setup() {
LoadCell.begin();
LoadCell.start(2000);
LoadCell.setCalFactor(1850);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Bitte Warten");
a==0;
m==0;
t=15;
}
void loop() {
for(int a=0; a<6; a=a+1){
LoadCell.update();
float i = LoadCell.getData();
delay(1000);
}
// hier beginnt die Stelle, die Probleme bereitet
if(a=5){
if(i>-0.05 && i<0.05){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Bitte Ball");
lcd.setCursor(4,1);
lcd.print("auflegen");
a=a+1;
}
else{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Error");
lcd.setCursor(1,1);
lcd.print("Stabilisierung");
delay(10000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bitte Neustarten");
delay(100000000);
}
}
// bis zu dieser else Abfrage, in die das Programm nie gelangt
LoadCell.update();
float i = LoadCell.getData();
if(i>10){
for(int m=0;m<16;m=m+1){
delay(1000);
LoadCell.update();
float i = LoadCell.getData();
t=t-1;
lcd.clear();
lcd.setCursor(2,0);
lcd.print("verbleibende");
lcd.setCursor(2,1);
lcd.print("Zeit:");
lcd.print(t);
}
LoadCell.update();
float i = LoadCell.getData();
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Gewicht:");
lcd.setCursor(7,1);
lcd.print(i);
delay(2000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Spielbarkeit:");
if(i<55.75 && i> 54.00){
lcd.setCursor(8,1);
lcd.print("--");
delay(10000);
}
else if(i<56.25 && i> 55.75){
lcd.setCursor(8,1);
lcd.print("-");
delay(10000);
}
else if(i<56.75 && i> 56.25){
lcd.setCursor(8,1);
lcd.print("o");
delay(10000);
}
else if(i<57.25 && i> 56.75){
lcd.setCursor(8,1);
lcd.print("+");
delay(10000);
}
else if(i<59.00 && i> 57.25){
lcd.setCursor(8,1);
lcd.print("++");
delay(10000);
}
else{
lcd.clear();
lcd.setCursor(6,0);
lcd.print("Error");
lcd.setCursor(5,1);
lcd.print("Gewicht");
delay(10000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bitte Neustarten");
delay(100000000);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Bitte Neustarten");
delay(100000000);
}
}