Go Down

Topic: Status über anlaogen Eingang schalten (Read 566 times) previous topic - next topic

Hallo Mitstreiter,
neu hier im Forum und gleich eine Frage kein guter Einstand aber die Suchfunktion hat nicht so richtig geholfen.

Ich möchte mit einem Uno 8 Relais schalten und aber auch 8 Schalter abfragen. Die ersten 8 Ports gehen für die Relais drauf dann kann ich noch 6 Ports digital abfragen was sehr gut läuft. Die restlichen zwei Ports möchte ich einfach über analoge Ports abfragen. Da liegt das Problem.

Meine Idee ich lese 3,3Volt vom Uno am analogen Port und schalte diesen dann gegen Masse also null Volt.

Die Abfrage dann über eine solche IF Funktion:

Code: [Select]
//Switch 2 Function
int Switch2Stat = analogRead (Switch2);
if (Switch2Stat < 1)
  {
   digitalWrite (Relay6, HIGH);
  }
  else
  {
  }
if (Switch2Stat > 1)
  {
   digitalWrite (Relay6, LOW);
  }
  else
  {
  }


Ich habe nun mit verschiedenen Varianten experimentiert aber das Relais toggelt immer.

Was mache ich falsch bzw. geht überhaupt was ich vor habe?

Vielen Dank für Eure Antworten.

erni-berni

Hallo,

zunächst zu deinem Programm:
Wenn du auf 3,3V testen willst, ist die Schwelle (ausgehend von der Annahme, dass der Arduino bei 5V betrieben wird) bei 255/5V*3,3V also bei 168.
Du kannst das aber einfacher haben. Betreibe einfach einen Analogport als digitalen Eingang. Die Ports A0 bis A5 werden angesprochen als Digitaleingang 14 bis 19.
Eine Alternative wäre noch ein Schieberegister für die Digitalausgänge zu benutzen, z.B. das 74HC595. Damit kann man aus 3 Ports 8 machen. Anleitung dazu hier: http://www.arduino.cc/en/Tutorial/ShiftOut

Gruß
Reinhard 

uwefed

Die analogen Eingänge haben 10 bit Auflösung und nicht 8 bit. 3,3V entsprechen bei 5V Referenz ca dem Wert 675.
Grüße Uwe

Ja das Einfache liegt so nahe!

Vielen Dank für die schnelle und ausführliche Antwort.

Ich habe einfach die Ports zu digitalen Eingängen gemacht und schon läuft alles wie es soll.

Gruß
Wolfgang

Go Up