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
Analoger Eingang mit 3 verschiedenen Schaltvorgängen
03.06.2016, 22:44
Beitrag #25
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
(03.06.2016 22:36)Tueftler1971 schrieb:  Im Standby soll nur LED1 HIGH sein

#hier soll LED3 nur 100ms HIGH sein und dann wieder zurück in Standby, siehe erste Zeile
[code]
if (Signalstatus >= 460 && Signalstatus <= 560){ //Taste mit R3.9kΩ auf Masse
digitalWrite(LED3, HIGH); //LED3
delay (100);
digitalWrite(LED3, LOW); //LED3
}

#hier soll LED4 nur 100ms HIGH sein und dann wieder zurück in Standby, siehe erste Zeile
if (Signalstatus >= 600 && Signalstatus <= 700){ //Taste mit R2.2kΩ auf Masse
digitalWrite(LED4, HIGH); //LED3
delay (100);
digitalWrite(LED4, LOW); //LED3
}

Ok, dann sind die ersten beiden Anweisungen schon verkehrt.

Die Led blinkt wenn du länger drückst.

Das musst du mit einer Variablen verhindern, in der du den Tastendruck speicherst und wieder abfragst, damit die Led nicht nochmal angeht.

Du must dir im Klaren sein, die Loop läuft (in einem funktionierenden System) immer durch und zwar sehr schnell, mal von deinen delays abgesehen.

Wenn also deine if-Anweisung wieder erreicht ist, muss die Variable verhindern, dass die Led erneut blinkt, wenn die Taste noch nicht losgelassen wurde.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.06.2016, 22:59
Beitrag #26
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
Das mit dem Loop habe ich mir schon gedacht und bemerkt.
In wie fern würde dann eine solche Anweisung aussehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.06.2016, 23:11
Beitrag #27
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
Beispiel ungetestet:

Code:
// in der Deklaration
int Taste1Status = 0;

// in der Loop
if (Signalstatus >= 460 && Signalstatus <= 560 && Taste1Status == 0){   //Taste mit R3.9kΩ auf Masse
    digitalWrite(LED3, HIGH); //LED3
    delay (100);
    digitalWrite(LED3, LOW); //LED3
    Taste1Status = 1;
}
else {
   Taste1Status = 0;
}

Für die zweite Taste ebenso, nur andere Werte.

Da ich aktuell nicht am PC sitze, kann ich es nicht testen, sollte aber so gehen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.06.2016, 00:07
Beitrag #28
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
Habe es für die ersten 2 Vorgänge eingebaut, leider funktioniert es noch nicht. Es scheint so, dass das was er zwischen if und else machen soll, überspringt!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.06.2016, 12:05
Beitrag #29
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
Ich vermute, du hast den Sketch falsch aufgebaut.
Poste mal den aktuellen Sketch.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.06.2016, 18:56
Beitrag #30
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
int LED1 = 2; //LED - Bereitschaft
int LED2 = 3; //LED - Taste gedrückt

//alle gegen Masse mit genannten Widerstand
int LED3 = 4; //mit 2.2kΩ - Up
int LED4 = 5; //mit 3.9kΩ - Down
int LED5 = 6; //ohne Widerstand - Enter

//Taste - Eingang Masse
int Signal = A1; //Signalleitung
int Signalstatus; //war 0
int VorherigerStatus;
int Taste1Status = 0;
int Taste2Status = 0;
int Taste3Status = 0;


void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
}

void loop() {
Serial.begin(9600);
Serial.println(Signalstatus);


Signalstatus = analogRead (Signal);

if (Signalstatus >= 460 && Signalstatus <= 560 && Taste1Status == 0) { //Taste mit R3.9kΩ auf Masse
digitalWrite(LED3, HIGH); //LED3
delay (1000);
digitalWrite(LED3, LOW); //LED3
}
else {
Taste1Status = 1;
}

if (Signalstatus >= 600 && Signalstatus <= 700 && Taste2Status == 0) { //Taste mit R2.2kΩ auf Masse
digitalWrite(LED4, HIGH); //LED4
delay (1000);
digitalWrite(LED4, LOW); //LED4
}
else {
Taste2Status = 1;
}

if (Signalstatus >= 0 && Signalstatus <= 30) { //Taste auf Masse
}
if (Signalstatus != VorherigerStatus)
{
if (Signalstatus == 0)
{
digitalWrite(LED1, LOW);
delay (10);
digitalWrite(LED2, HIGH);
delay (10);
digitalWrite(LED4, HIGH);
delay (100);
digitalWrite(LED4, LOW);
delay (100);
digitalWrite(LED5, HIGH);
}
else
{
digitalWrite(LED5, LOW);
delay (100);
digitalWrite(LED3, HIGH);
delay (100);
digitalWrite(LED3, LOW);
delay (10);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
}
}
VorherigerStatus = Signalstatus;


// hinzugefügt zum unterbinden von blinken der LED3
{
digitalWrite(LED3, LOW);
delay (10);
digitalWrite(LED4, LOW);
delay (100);
digitalWrite(LED4, LOW);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.06.2016, 19:11
Beitrag #31
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
Sieh dir nochmal mein Beispiel an, das hast du nich richtig übernommen.
So wird der Tastenstatus niemals wieder "0", daher die Anweisung übersprungen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.06.2016, 21:04 (Dieser Beitrag wurde zuletzt bearbeitet: 05.06.2016 21:12 von Tueftler1971.)
Beitrag #32
RE: Analoger Eingang mit 3 verschiedenen Schaltvorgängen
oh, jetzt fiel mir mein Fehler auf... wie Dumm von mir... lach

Jetzt muss ich nur noch dieses irgendwie lösen, damit nicht jedes mal die "else" Anweisung bei Taste 1 und 2 durchläuft.

if (Signalstatus >= 0 && Signalstatus <= 30) { // Taste 3 auf Masse
}
if (Signalstatus != VorherigerStatus)
{
if (Signalstatus == 0)
{
digitalWrite(LED1, LOW);
delay (10);
digitalWrite(LED2, HIGH);
delay (10);
digitalWrite(LED4, HIGH);
delay (100);
digitalWrite(LED4, LOW);
delay (100);
digitalWrite(LED5, HIGH);
}
else
{
digitalWrite(LED5, LOW);
delay (100);
digitalWrite(LED3, HIGH);
delay (100);
digitalWrite(LED3, LOW);
delay (10);
digitalWrite(LED2, LOW);
digitalWrite(LED1, HIGH);
}
}
VorherigerStatus = Signalstatus;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Digitaler und analoger Temperatursensor unterschiedlich Pit 3 654 16.01.2016 19:05
Letzter Beitrag: Pit
  Eingang analog oder digital? Wie macht man es richtig? Gelegenheitsbastler 3 986 25.03.2015 15:45
Letzter Beitrag: Bitklopfer
  Neu hier und gleich ein Problem (Analog Eingang und Spannungsteiler) jackill 17 2.220 03.02.2015 20:21
Letzter Beitrag: jackill
  Zähler in verschiedenen Modi betreiben Nimes 2 663 25.09.2014 10:19
Letzter Beitrag: Nimes

Gehe zu:


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