INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Button funktioniert nicht trotz korrekter Schaltung
11.10.2019, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2019 17:48 von Schneggl.)
Beitrag #1
Button funktioniert nicht trotz korrekter Schaltung
Hi ,
um es kurz zu machen, ich habe einen DHT11 Sensor, einen Bodenfeuchte Sensor sowie ein 16*2 LCD Display mit einem Arduino Uno verbunden. Alles funktioniert soweit gut, ich kann die Werte der Sensoren auf dem Display anzeigen lassen.

Nun möchte ich mittels eines Push-Buttons zwischen der Anzeigen der zwei Sensoren hin und her wechseln. Ich denke ich habe ihn richtig angeschlossen (rechter Pin zu 5V, linker Pin zu Pin 8 des Arduinos und einen 10k Widerstand davor zu GND (siehe Bild)) der Button funktioniert auch sicher, da ich ihn gegen einen neuen getauscht hab, auch der Pin des Arduinos funktioniert.

Wenn ich den Button nun aber drücke, passiert entweder garnichts, oder die Anzeige des DHT11 verschwindet, es kommt aber danach nichts mehr, auch nicht bei erneutem Drücken des Buttons.

Daher glaube ich, dass es am Code liegt, falls jemand einen Fehler entdeckt, gerne melden.

Code:
#include <OneButton.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>


LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);

#define DHTTYPE DHT11
#define DHTPIN 9
DHT dht (DHTPIN, DHTTYPE);

int sensorPin = A3;
int sensorValue = 0;
int percentValue = 0;

const int  buttonPin = 8;
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup(){
  lcd.begin(16, 2);
  lcd.clear();

  pinMode(buttonPin, INPUT);
  Serial.begin(9600);

  delay(3000);

  dht.begin();
  //Serial.println(F("DHTxx test!"));
  
}


void loop(){

   buttonState = digitalRead(buttonPin);
  if (buttonState != lastButtonState) {
    lcd.clear();
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button went from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes: ");
      Serial.println(buttonPushCounter);
    } else {
      // if the current state is LOW then the button went from on to off:
      Serial.println("off");
    }
    // Delay a little bit to avoid bouncing
    delay(50);
  }
  // save the current state as the last state, for next time through the loop
  lastButtonState = buttonState;
  buttonPushCounter = buttonPushCounter %1;
  
  
  delay(2000);

  sensorValue = analogRead(sensorPin);
  //Serial.print("\n\nAnalog Value: ");
  //Serial.print(sensorValue);
  
  percentValue = map(sensorValue, 1023, 200, 0, 100);
  Serial.print("\nSoilMoisture.: ");
  Serial.print(percentValue);
  Serial.println("%");
  

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  //float hif = dht.computeHeatIndex(f, h);
  //float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.println();
  //Serial.print(f);
  //Serial.print(F("°F  Heat index: "));
  //Serial.print(hic);
  //Serial.print(F("°C "));
  //Serial.print(hif);
  //Serial.println(F("°F"));
  

if (buttonPushCounter == 0) {  
  int chk = dht.read(DHTPIN);
  lcd.setCursor(0,0);
  lcd.print("Temp: ");
  lcd.print(t);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Humidity: ");
  lcd.print(h);
  lcd.print("%");
  delay(1000); }
if (buttonPushCounter == 1) {
  lcd.setCursor(0, 0);
  lcd.print("Soil M.:");
  lcd.setCursor(0, 1);  
  lcd.print("Percent: ");
  lcd.print(percentValue);
  lcd.print("%");
  lcd.clear(); }  

}

Schaltung: https://drive.google.com/open?id=17QP8HS...PtttYHNrxc

Vielen Dank im Vorraus!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2019, 18:00
Beitrag #2
RE: Button funktioniert nicht trotz korrekter Schaltung
Code:
buttonPushCounter ٪=2;

würde ich vorschlagen.
Denn der Rest einer Division durch 1 wäre immer 0.
Rest bei Division durch 2 hingegen 0 oder 1.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2019, 18:01
Beitrag #3
RE: Button funktioniert nicht trotz korrekter Schaltung
Hallo,

" buttonPushCounter = buttonPushCounter %1;" kann nicht funktioneren. "%1% ergibt ja den Rest beim Teilen durch 1 das ist immer null. Mit "%2" solte es gehen. Besser wäre aber eine bool, und dann einfach immer "x = !x;".

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.10.2019, 08:17
Beitrag #4
RE: Button funktioniert nicht trotz korrekter Schaltung
(11.10.2019 18:00)MartinZ schrieb:  
Code:
buttonPushCounter ٪=2;

würde ich vorschlagen.
Denn der Rest einer Division durch 1 wäre immer 0.
Rest bei Division durch 2 hingegen 0 oder 1.

Danke, jetzt funktionierts Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nebelmaschine: Programmteile funktionieren nicht ChrisTastic 11 331 15.11.2019 09:08
Letzter Beitrag: hotsystems
  Nextion und Arduino kommunizieren nicht alpenpower 7 225 04.11.2019 10:36
Letzter Beitrag: GuaAck
  Empfänger funktioniert nicht mehr jgrothe 5 443 06.09.2019 18:57
Letzter Beitrag: Tommy56
  myport nicht gefunden? - Arduino und Visual Studio Stagneth.Alexander 4 520 04.09.2019 14:16
Letzter Beitrag: Stagneth.Alexander
  UDP send oder print ??? Ich kapiers nicht HarryB 5 452 03.09.2019 13:06
Letzter Beitrag: Tommy56
Wink Solar Roboter- Servo dreht nach Stopp nicht weiter Stagneth.Alexander 37 2.707 20.08.2019 14:15
Letzter Beitrag: geist4711
  Atmega 328 Sketchl läuft auf UNO3, alleine auf Breadboard nicht delay 9 910 02.08.2019 15:03
Letzter Beitrag: hotsystems
  Reaktionsspiel funktioniert nicht, wie es sollte... Stagneth.Alexander 27 1.690 21.07.2019 07:57
Letzter Beitrag: Stagneth.Alexander
Question Programm läuft nicht richtig CMeeep 22 1.876 04.07.2019 21:58
Letzter Beitrag: Franz54
  2 Sketche zusammenführen - korrelieren nicht Nicolai 11 1.366 24.05.2019 11:04
Letzter Beitrag: Nicolai

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste