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
Schwellwert mit Taster ändern
23.03.2016, 21:12
Beitrag #1
Schwellwert mit Taster ändern
Hallo, er mag mich nicht!

Jetzt möchte ich einen threshold mit Tastern ändern.
Leider sagt die Fehlermeldung, dass die Variable threshold nicht geht.
Aber auf was soll ich mich dann beziehen?

Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int numRows = 2;
const int numCols = 16;
const int rauftaster = 6;
const int runtertaster = 7;

const int inPin = A5; //NTC 10KΩ bei20°C in Serie mit R=10KΩ
int ledPin = 13;//Ausgang bei Temp erreichen auf High
const int threshold = 22; // Schwellwert

void setup() {
  lcd.begin(numCols, numRows);//Start
  pinMode(ledPin, OUTPUT); //Start
  pinMode (rauftaster, INPUT);
  pinMode(runtertaster, INPUT);
  lcd.setCursor(6, 1); //2. Reihe 7.Zeichen
  lcd.print("Temperatur");  //Schreibt das Wort

}
void loop() {

  lcd.setCursor(0, 1); // 2. Reihe

  int val;  // Einen Wert vom Sensor einlesen
  int Celsius;  // Er heißt Celsius

  val = analogRead(inPin); //Von A5 einlesen

  Celsius = map(val, 491, 572, 20, 30);

  lcd.setCursor(1, 1); //2. Reihe 2. Feld
  lcd.print( Celsius); //Schreibe den Wert für Celsius
  if (Celsius > threshold) //Wenn der Schwellwert überstiegen wird

  {
    digitalWrite(ledPin, HIGH);   //Schalte Pin D13 Auf High

    delay(3000);//Pause
  }
  else//sonst
  {
    digitalWrite(ledPin, LOW);// Ausgang 0
  }
  {
    int threshold = 22; // Grundwert vom Schwellwert
    static boolean rauftaster = true; // Taster spricht die Wahrheit
    
    int val = digitalRead(rauftaster);// Lesen was der Taster macht
  }
  if (rauftaster,HIGH )// Wenn der Taster High ist
  {
   digitalWrite( threshold++);// Erhöhe den Schwellwert
  }

}

Die Temperatur "Celsius" soll nicht beeinflußt werden. Eben nur der Schwellwert. "digitalWrite( threshold++)"
ist doch das gleiche Prinzip wie
"digitalWrite(ledPin, LOW);"
nur das erhöht werden soll?

Ich halte euch auf Trab
Achim

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2016, 21:20 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2016 21:27 von hotsystems.)
Beitrag #2
RE: Schwellwert mit Taster ändern
Eine "const" Variable ist eine Konstante, die kannst du nicht ändern.
Du must diese als normale "int" Variable deklarieren.
Und eine erneute Deklaration (doppelte Deklaration) geht dann auch nicht.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2016, 21:55
Beitrag #3
RE: Schwellwert mit Taster ändern
Danke hotsystem,
hab ich geändert. Ist ja auch Logisch.(const)

Die Deklaration im LOOP habe weggenommen. Aber der compiler meckert:
Code:
Arduino: 1.6.5 (Windows 7), Platine: "Arduino/Genuino Uno"

sketch_mar23b.ino: In function 'void loop()':
sketch_mar23b:54: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
In file included from sketch_mar23b.ino:3:0:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:126:6: note: declared here
void digitalWrite(uint8_t, uint8_t);
      ^
too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
zuwenig deklariert?
In den Klammern steht doch Wert steigern.

Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int numRows = 2;
const int numCols = 16;
const int rauftaster = 6;
const int runtertaster = 7;

const int inPin = A5; //NTC 10KΩ bei20°C in Serie mit R=10KΩ
int ledPin = 13;//Ausgang bei Temp erreichen auf High
int threshold = 22; // Schwellwert

void setup() {
  lcd.begin(numCols, numRows);//Start
  pinMode(ledPin, OUTPUT); //Start
  pinMode (rauftaster, INPUT);
  pinMode(runtertaster, INPUT);
  lcd.setCursor(6, 1); //2. Reihe 7.Zeichen
  lcd.print("Temperatur");  //Schreibt das Wort

}
void loop() {

  lcd.setCursor(0, 1); // 2. Reihe

  int val;  // Einen Wert vom Sensor einlesen
  int Celsius;  // Er heißt Celsius

  val = analogRead(inPin); //Von A5 einlesen

  Celsius = map(val, 491, 572, 20, 30);

  lcd.setCursor(1, 1); //2. Reihe 3. Feld
  lcd.print( Celsius); //Schreibe den Wert für Celsius
  if (Celsius > threshold) //Über 22°

  {
    digitalWrite(ledPin, HIGH);   //Schalte Pin D13 Auf High

    delay(3000);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
  {
    
    static boolean rauftaster = true; // Taster spricht die Wahrheit
    
    int val = digitalRead(rauftaster);// Lesen was der Taster macht
  }
  if (rauftaster,HIGH )// Wenn der Taster gedrückt ist
  {
    digitalWrite(threshold++);
    
  }

}

Bis Morgen
Achim

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2016, 22:35 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2016 22:49 von hotsystems.)
Beitrag #4
RE: Schwellwert mit Taster ändern
Du hast hier noch einige Fehler.
Code:
const int rauftaster = 6;

Und hier doppelt deklariert bzw. falsch deklariert.
Code:
static boolean rauftaster = true; // Taster spricht die Wahrheit

Dann Übergabe an eine Variable
Code:
int val = digitalRead(rauftaster);// Lesen was der Taster macht

Aber hier föllig falsch aufgebaut.
Code:
if (rauftaster,HIGH )// Wenn der Taster gedrückt ist

Und dies geht auch nicht.
Code:
digitalWrite(threshold++);

Kein Wunder, wenn da Fehlermeldungen kommen. Das solltest du alles mal überdenken.
Da ich nicht weiß, wie es sein soll, musst du dir selbst Gedanken machen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.03.2016, 22:44
Beitrag #5
RE: Schwellwert mit Taster ändern
Hallo,

Zitat: if (rauftaster,HIGH)
stimmt nicht ganz. Das Komma sollte durch == ersetzt werden.

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.03.2016, 20:21
Beitrag #6
RE: Schwellwert mit Taster ändern
Danke für die Antworten!

Code:
if (rauftaster == HIGH )// Wenn der Taster gedrückt ist
habe ich geändert.
Einen Teil des Codes habe ich aus dem Arduino Kochbuch "5.1 Schalter verwenden."
Nerviger Weise läuft in nahezu allen Sketchen geblinke. Dabei muß doch eigentlich überall ein Wert verändert werden. Keine Temperatursteuerung arbeitet ohne Wertverstellung. Aber da fand ich weder hier, im Netz noch im Franzis Buch, noch im Kochbuch Beispiele. Schade.
Sketch 5.1 Schalter verwenden:
Code:
/*
*  Pushbutton sketch
*  a switch connected to pin 2 lights the LED on pin 13
*/

const int ledPin = 13;            // choose the pin for the LED
const int inputPin = 2;           // choose the input pin (for a pushbutton)
Das habe ich übernommen
Code:
const int rauftaster = 6;
const int runtertaster = 7;

void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare pushbutton as input
}

void loop(){
int val = digitalRead(inputPin); // read input value
if (val == HIGH) // check if the input is HIGH
Code:
Das habe ich auch übernommen:
int val = digitalRead(rauftaster);// Lesen was der Taster macht
}
if (rauftaster == HIGH )// Wenn der Taster gedrückt ist
{
digitalWrite(ledPin, HIGH); // turn LED on if switch is pressed
}
else
{
digitalWrite(ledPin, LOW); // turn LED off
}
}

Code:
Die unterste Zeile ist doch dann die Folge?
digitalWrite(threshold++);

Da ich zwischendurch immer kompiliere bin ich nicht weiter gekommen.

Im Grunde suche ich den Basis Sketch um einen Wert mit Hilfe von Tastern zu ändern. Wenn ich den lesen kann, kann ich das nachvollziehen.

Achim
[/color]

Ich kann kaum etwas lernen, vergesse das auch wieder. Aber wenn ich etwas immer wieder klar vor Augen habe, kann ich verdammt viel damit anfangen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2016, 00:03
Beitrag #7
RE: Schwellwert mit Taster ändern
Sorry, aber wenn du nicht selbst übst und einfach nur abtippst, wirst du es nicht lernen.

Code:
const int rauftaster = 6;
const int runtertaster = 7;

Wenn du so einen Eingang deklarierst, darfst du keine Variable mit dem selben Namen benennen.
Code:
if (rauftaster == HIGH )// Wenn der Taster gedrückt ist
Hier muss die Tasterabfrage oder die Variable "val" rein.
Code:
int val = digitalRead(rauftaster);

Und das geht so garnicht.
Code:
digitalWrite(threshold++);

Du kannst nur ein Ausgangsport so definieren.
Beispiel:
Code:
digitalWrite(ledPin, LOW);
Bei der Variablen "threshold" geht es nicht. Wenn du hochzählen möchtest, reich es,
Code:
threshold++;
einzugeben.

Und wenn du über Taster einen Wert hochzählen möchtest, musst du den Taster unbedingt entprellen. Anders hast du bei einmal drücken gleich mehrfach eine Erhöhung. Das Entprellen geht über Hardware (Kondensator) oder über eine Library Taster entprellen

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2016, 01:49
Beitrag #8
RE: Schwellwert mit Taster ändern
Moin,
macht ihr das mit dem Taster aber spannend...dabei geht das doch sooo einfach...
Code:
/*
  Tasterinkrement
  Spezial fuer Leonardo USB by Bitklopfer
*/
const int dtimeH = 50;  // Leuchtdauer LED
const int dtimeL = 450; // LED mindest Auszeit = Tastenverzoegerung
const byte led1 = 13;  // LED wo Tastendruck anzeigt
const byte pgnd = 11;  // kuenstliche Masse fuer Taster -Eigenheit vom Testaufbau
const byte rauftaster = 9;
int threshold = 0;

// the setup function runs once when you press reset or power the board
void setup() {
  Serial.begin(9600);

  pinMode(led1, OUTPUT);  // initialize digital pin 13 as an output.
  pinMode(pgnd, OUTPUT);  // Masse fuer Taster bereitstellen
  pinMode(rauftaster, INPUT_PULLUP); // Tastereingang
}

// the loop function runs over and over again forever
void loop() {

//#########  Rauftaster gedrueckt ?
if(!digitalRead(rauftaster)){  // Wenn Tastendruck erkannt dann...
      threshold++;             // inkrement threshold
      if (threshold >= 10)threshold = 0; // threshold Wertebegrenzung 0 - 9
      Serial.println(threshold);  // threshold ausgeben
      digitalWrite(led1, HIGH);   // turn the LED on (HIGH is the voltage level)
      delay(dtimeH);              // wait for dtimeH
      digitalWrite(led1, LOW);    // turn the LED off by making the voltage LOW
      delay(dtimeL);              // wait for dtimeL
      }
}  //##### END LOOP

...und die delays() bei der LED Ausgabe bewirken gleichzeitig das entprellen von dem Taster. Wenn man das mit nem 2.Taster genauso macht dann kann man schön rauf und runterzählen. Wer dem delay Böses anhängen will darf das gerne auf "Blinken ohne delay" umhamstern...Big Grin

Zu erwähnen sei das der Taster den Eingang gegen Masse schaltet, daher bei der if Abfrage das "!" vor dem digitalRead().

lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  mehrere Taster entprellen Kitt 15 524 24.10.2016 21:17
Letzter Beitrag: georg01
  Taster für mehrere Funktionen matthias3579 5 353 16.08.2016 16:00
Letzter Beitrag: StephanBuerger
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 758 16.07.2016 11:43
Letzter Beitrag: Binatone
  3 Schrittmotoren, 2 LED's 1 Taster cichla 0 394 31.03.2016 15:21
Letzter Beitrag: cichla
  Arduino Alarmanlage mit Taster erweitern Vengance 0 525 22.03.2016 17:54
Letzter Beitrag: Vengance
  Taster abfragen Rudi 3 692 25.02.2016 14:03
Letzter Beitrag: hotsystems
  digitalOutputpin mit Taster an- oder ausschalten Raptor 2 574 26.12.2015 20:59
Letzter Beitrag: torsten_156
  Problem mit Taster eddykett 0 784 23.08.2015 10:16
Letzter Beitrag: eddykett
  Taster-Programm TheTerrawr 2 1.059 06.08.2015 16:24
Letzter Beitrag: TheTerrawr
  Schalter als Taster perfekte Lösung? julius858 4 914 28.07.2015 11:44
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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