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
  strcmp funktioniert nicht richtig Cano 7 382 25.04.2020 10:47
Letzter Beitrag: Cano
  SoftwareSerial.h und SD.h vertragen sich nicht sowerum 25 1.130 25.04.2020 10:46
Letzter Beitrag: hotsystems
  Sketch für WS2812 klappt nicht ThorstenP 9 535 02.04.2020 14:50
Letzter Beitrag: ThorstenP
  Nano Every upload geht nicht Jeanlion1 6 403 01.04.2020 17:45
Letzter Beitrag: Tommy56
  Menu funktioniert ohne Serial.println nicht GSA1150 7 395 30.03.2020 18:26
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 760 20.03.2020 10:04
Letzter Beitrag: hotsystems
  Hochladen eines Sketches funktioniert nicht otti123 24 1.498 29.02.2020 18:25
Letzter Beitrag: MicroBahner
  int variable wird nicht in Schleife übertragen ha0248 8 750 11.02.2020 15:25
Letzter Beitrag: ha0248
  Nextion Fehler bei Button Abfrage wenn ich zusätzlich Text sende MarkZero0815 24 1.692 28.01.2020 08:23
Letzter Beitrag: hotsystems
  Led will nicht bergfrei 2 1.397 23.01.2020 13:27
Letzter Beitrag: hotsystems

Gehe zu:


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