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
analog read mit if-else
05.02.2020, 17:04 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2020 17:05 von Controll-INO.)
Beitrag #1
analog read mit if-else
Hallo zusammen.

Ich rauf´ mir noch die Haare.

Ich versuche gerade, ein Testprogramm auf einem CONTROLLINO MAXI zum laufen zu bringen, aber irgendwo hakt es und ich komm´ nicht weiter.Angry

Zur Aufgabenstellung:
Über die Winkelstellung eines Potis sollen drei verschiedene Schaltzustände ausgegeben werden.
Soweit so gut.
Über den seriellen Monior sehe ich auch die Werte zwischen 0 und 810.
Aber die Verarbeitung über die IF/ELSE-Befehle funktioniert nicht.
Es leuchtet immer nur die LED an PIN D0.

Hat jemand eine Idee woran das liegen könnte?

Vielen Dank schon mal im Voraus.

Controll_INO

Code:
#include <Controllino.h>
/* Usage of CONTROLLINO library allows you to use CONTROLLINO_xx aliases in your sketch. */


void setup() {
  // initialize necessary pin as input pin
  pinMode(CONTROLLINO_A0, INPUT);
  pinMode(CONTROLLINO_D0, OUTPUT);
  pinMode(CONTROLLINO_D1, OUTPUT);
  pinMode(CONTROLLINO_D2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(CONTROLLINO_A0);
  Serial.println(sensorValue);

  if (sensorValue > 0 || sensorValue <= 150)
  {
    digitalWrite(CONTROLLINO_D0, HIGH);//LED ein
    delay (100); // für 1/100 Sekunde
    digitalWrite(CONTROLLINO_D0, LOW);//LED aus
  }
  else
  {

    if (sensorValue > 150 || sensorValue <= 200)
    {
      digitalWrite(CONTROLLINO_D1, HIGH);//LED ein
      delay (100); // für 1/100 Sekunde
      digitalWrite(CONTROLLINO_D1, LOW);//LED aus
    }

    else
    {
      if (sensorValue > 200 || sensorValue <= 811)
      {
        digitalWrite(CONTROLLINO_D2, HIGH);//LED ein
        delay (100); // für 1/100 Sekunde
        digitalWrite(CONTROLLINO_D2, LOW);//LED aus
      }

    }
  }

  delay(1);        // delay zur Stabilisierung
}


Angehängte Datei(en)
.ino  AnalogReadSerial3.ino (Größe: 1,15 KB / Downloads: 1)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.02.2020, 17:08 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2020 17:08 von Tommy56.)
Beitrag #2
RE: analog read mit if-else
Mach mal aus den || (ODER) ein && (UND). Es müssen ja beide Bedingungen in der Klammer erfüllt sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.02.2020, 18:02
Beitrag #3
RE: analog read mit if-else
...und einen Analogeingang muß man nicht definieren, also das entfällt:
Code:
pinMode(CONTROLLINO_A0, INPUT);

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
05.02.2020, 18:51
Beitrag #4
RE: analog read mit if-else
(05.02.2020 17:08)Tommy56 schrieb:  Mach mal aus den || (ODER) ein && (UND). Es müssen ja beide Bedingungen in der Klammer erfüllt sein.

Gruß Tommy

Oh Mann ich bin so bl....
Über copy&paste sind schon bekannte Politiker gestolpert.
Vielleicht sollte ich mir angewöhnen, beim Programmieren mehr selber einzutippen.
Wie ich auf ODER statt UND kam erschließt sich mir jetzt auch nicht.
Aber ich bin mir sicher dass das mein Problem löst.

Vielen Dank schon mal TommyRolleyes

Ich werd´ das morgen in der Früh gleich testen.

VG
C.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.02.2020, 18:53
Beitrag #5
RE: analog read mit if-else
(05.02.2020 18:02)Bitklopfer schrieb:  ...und einen Analogeingang muß man nicht definieren, also das entfällt:
Code:
pinMode(CONTROLLINO_A0, INPUT);


Das ist korrekt.
Aber das war nicht der Auslöser meines Problems.
Ich vermute dass der Hinweis von Tommy zuvor der richtige war.

Trotzdem danke Bitklopfer.

VG
C.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.02.2020, 21:37
Beitrag #6
RE: analog read mit if-else
..da kannst du durchaus Recht haben...

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
05.02.2020, 22:27 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2020 22:30 von Franz54.)
Beitrag #7
RE: analog read mit if-else
Ja, das was Tommy schreibt ist mit Sicherheit das Problem, aber ist es gewollt, dass der jeweilige Ausgang immer nur 1/100 Sekunde auf HIGH ist, dann wieder auf LOW. Dann nach ein paar Millisekunden wieder für 1/100stell Sekunde auf HIGH, dann wieder ein paar Millisekunden auch LOW, u.s.w.

Soll der Ausgang nicht durchgehend auf HIGH bleiben solange die Potistellung das vorgibt? Wir kennen ja den Grund für das Programm nicht.

Franz

https://www.youtube.com/watch?v=Fnzn85oWM_Q
Hier was zum Thema Deutsche Politik Angry
Und hier zum Thema richtige Politik Big Grin
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2020, 07:16
Beitrag #8
RE: analog read mit if-else
(05.02.2020 22:27)Franz54 schrieb:  Ja, das was Tommy schreibt ist mit Sicherheit das Problem, aber ist es gewollt, dass der jeweilige Ausgang immer nur 1/100 Sekunde auf HIGH ist, dann wieder auf LOW. Dann nach ein paar Millisekunden wieder für 1/100stell Sekunde auf HIGH, dann wieder ein paar Millisekunden auch LOW, u.s.w.

Soll der Ausgang nicht durchgehend auf HIGH bleiben solange die Potistellung das vorgibt? Wir kennen ja den Grund für das Programm nicht.

Franz

Hallo Franz,
das wäre natürlich wünschenswert.

So viel vorweg:
Tommy´s Hinweis war des Rätsels Lösung. Nun funktioniert das Auslesen der Werte und die Schaltung der entspr. Ausgänge.
Wie ich in bestimmten Schalt- bzw. Widerstandsbereichen die Signale dauerhaft schalten kann (ohne weitere Schleifendurchläufe) hat sich mir noch nicht erschlossen und bin daher um jeden Hinweis dankbar.

Vielleicht noch mal zum Verständnis was am Ende dabei herauskommen soll (es ist ein gewerbliches Projekt):
Die Elektronik wird Bestandteil einer sog. Prüfzange. Die habe ich angefertigt, um damit eine bestimmte Steckverbindung zwischen einem Kunststoffschlauch und einem verrastenden Anschlussstück prüfen zu können. Die Achse des Potis, welches am Gehäuse montiert ist, bildet gleichzeitig die Drehachse für den Zangengriff. Wenn die Zange bedient wird, werden dabei zwei Backen auseinandergeschoben (Weg max. 3 mm). Die ersten 0,5 mm soll nichts passieren (im Programm derzeit noch D0=HIGH. Von 0,5 - 2,0 mm ist das Ganze i.O. (D1=HIGH). Wenn der Weg von 2,0 mm überschritten wird, muss man davon ausgehen, dass die Steckverbindung nicht richtig montiert wurde und das Ergebnis ist n.i.O. (D1=LOW + D2=HIGH). Die Potistellung ändert also je nach Drehwinkel den Widerstand im Poti. Der wird durch anaologRead vom Programm ausgelesen.
D1 und D2 müssen am Ende an eine externe SPS übergeben werden. Das wird dann entweder über Relais oder Optokoppler erfolgen.

VG
C.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Client.read() Zwischenspeicher erstellen!? Gura 11 5.960 16.04.2019 11:05
Letzter Beitrag: Blende8
  Analog Eingang _ Werte verfälscht Traktor 16 3.493 30.03.2018 08:36
Letzter Beitrag: Bitklopfer
  Analog, Digital, PWM Harry 14 2.698 09.03.2018 19:26
Letzter Beitrag: Tommy56
  Motor Shield V3 Analog Digital Converter Nextero 5 1.938 19.12.2017 10:54
Letzter Beitrag: Nextero
  Analog Vref Binary1 8 3.025 02.11.2017 21:56
Letzter Beitrag: MicroBahner
  Array mit Serial.read befüllen Gonmaus 4 2.919 01.05.2017 09:13
Letzter Beitrag: Gonmaus
  RFID-Reader an Analog Pins inski 9 3.632 02.03.2016 12:43
Letzter Beitrag: ArdHolger
  Anfängerfrage zu Serial.read Erazor 1 1.792 16.01.2016 23:01
Letzter Beitrag: Pit
  Drehzahl Anzeige Analog (neuling) Kuxii 9 3.507 30.10.2015 12:01
Letzter Beitrag: hotsystems
  [EEPROM.h] Unterschied read()/write() und EEPROM[]? gregors 5 2.276 19.08.2015 19:59
Letzter Beitrag: gregors

Gehe zu:


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