Variable Eingang zuweisen etc.

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Variable Eingang zuweisen etc.

      Grüße euch.

      Ich möchte 2 Reedkontakte nutzen um 2 Eingänge zu prüfen ob sie High oder Low sind.
      Ich hab jetzt schon einiges probiert aber es geht noch nicht so wie ich will.

      Zuerst nutze ich 2 Pins um diese als Eingänge zu deklarieren:

      BASCOM Source Code

      1. Config PINB.1 = INPUT 'Eingang Reed1
      2. Config PinB.2 = INPUT 'Eingang Reed2


      Dann weise ich den Variablen den Typ zu:

      BASCOM Source Code

      1. Dim Reed1 As Bit
      2. Dim Reed2 As Bit


      Dann weiß ich den Variablen die Pins zu:

      BASCOM Source Code

      1. Reed1 = Pinb.1
      2. Reed2 = Pinb.2
      Bis hierhin würde ich gerne wissen ob ich da alles richtig gemacht habe?



      Dann prüfe ich mit der Abfrage wie die Eingänge sind, ob High oder Low:

      BASCOM Source Code

      1. If Reed1 = 0 And Reed2 = 1 Then
      Kann ich das den so machen?

      Reed1 = 0
      ist ja wie wenn Reed1 auf Low ist, richtig?
    • Hallo Wasi,
      Reed Kontakte sind magnetisch betätigte Schalter im evakuierten Glasröhrchen. Ob die nun 1 oder 0 sind, hängt davon ab, wie du den Portpin beschaltest.
      Ist ein Portpin über einen Pullup-R an Vcc, der Reed zwischen Portpin und GND, kannst du die Portabfrage auf 0 machen, ganz wie bei einem schließenden Kontakt.
      Eine andere Ausführung des Reedschalters ist die mit einer Erregerspule, die das Glasröhrchen umschließt und wie ein Relais zu betrachten ist.
      Beide Ausführungen gibt es mit Schließer, Öffner oder Wechsler.

      Gruß Rudi
      Immer Glück haben ist fast wie können..
    • stefanhamburg wrote:

      Hast Du interne oder externe Pullup-Widerstände?
      Externe Pullup.


      Rudi Einstein wrote:

      Hallo Wasi,
      Reed Kontakte sind magnetisch betätigte Schalter im evakuierten Glasröhrchen. Ob die nun 1 oder 0 sind, hängt davon ab, wie du den Portpin beschaltest.
      Ist ein Portpin über einen Pullup-R an Vcc, der Reed zwischen Portpin und GND, kannst du die Portabfrage auf 0 machen, ganz wie bei einem schließenden Kontakt.
      Eine andere Ausführung des Reedschalters ist die mit einer Erregerspule, die das Glasröhrchen umschließt und wie ein Relais zu betrachten ist.
      Beide Ausführungen gibt es mit Schließer, Öffner oder Wechsler.

      Gruß Rudi
      Das ist ein NO Kontakt:
      Den hier


      Pluto25 wrote:

      Wasi wrote:

      Kann ich das den so machen?
      Nur bedingt. Die Reed nehmen den Zustand der Pins nur bei der Zuweisung (Reed1=Pinb.1) an . Wenn sie sich vor dem If ändern wird das nicht mehr erfasst.Reed1 alias Pinb.1 wäre da eher brauchbar.
      Reed1 = 0 bewirkt dann aber nichts mehr, da das Register den Pegel von dem Pin wiedergibt.
      Was macht den Sinn?

      Kann ich das dann mit dem Alias machen?
      Und wie weise ich dann den Pin zu?
    • Hab das jetzt mal so gelößt.

      BASCOM Source Code

      1. Config PinB.1 = INPUT 'Eingang Reed1
      2. Config PinB.2 = INPUT 'Eingang Reed2
      3. '**********************************************************
      4. Reed1 Alias Pinb.1
      5. Reed2 Alias Pinb.2
      6. Reed1 = Pinb.1
      7. Reed2 = Pinb.2
      8. If Reed1 = 0 And Reed2 = 1 Then
      Und das funktioniert jetzt mal.

      Bin aber gerne offen für weitere Info
    • Wasi wrote:

      Was macht den Sinn?
      Das liegt daran ob in Deinem Programm der Wert unabhängig von den Pins (Reedkontakten) zugewiesen werden soll. z.b. Reed1=1 soll dem Rest des Programms ein geschalteten Kontakt vorgaukeln.
      Wird das so nicht benötigt hat das Alias den Vorteil die Zuweisung nicht mehr zu benötigen und den Programmablauf zu beschleunigen. (Bit variablen brauchen viel Rechenarbeit)
      Ein "Reed1 alias Pinb.1" ist nur zum vereinfachen. Der Compiler selbst ersetzt an jeder Stelle das Reed1 durch Pinb.1
    • Pluto25 wrote:

      Der Compiler selbst ersetzt an jeder Stelle das Reed1 durch Pinb.1
      Danke, so hab ich das auch verstanden.


      Beide Reed Kontakte werden durch je einen Pullup betrieben.
      Entweder ist Reed1 High und Reed2 Low oder umgekehrt, aber auch der Zustand das beide Reed Kontakte Low sind ist gegeben.

      Wie oben beschrieben funktioniert es wenn auch nicht wie mit den HC Modulen die ich habe.
      Jedoch die Reed Kontakte sind einfacher zum Installieren. :D
    • stefanhamburg wrote:

      Wenn Reed1 und Reed2 Alias(e) sind, dann sollten die Zuweisungen Reed1=.. und Reed2=… überflüssig sein.
      :D Richtig :D

      Hab ich geändert, danke.


      Rudi Einstein wrote:

      Aliases sollten anzeigende, sinnvolle Namen tragen, welche in einem umfangreicheren Programm auf deren Einflussnahme hinweisen.
      Z. Bsp. Flurtür offen Alias PINB.1 oder Notaus aktiv Alias PINB. 2..
      Abfrage könnte so sein:
      if Flurtür offen = 0 then print "es zieht"
      Oder ich Dokumentiere es, wäre ja auch möglich, aber wie du sagst ist deine Variante natürlich Übersichtlicher wenn der Code etwas größer ist.
      Danke für den Tip.


      stefanhamburg wrote:

      Man sollte allerdings keine Leerzeichen im Namen verwenden. Umlaute sollte man auch nicht verwenden.
      Reed1 und Reed2 sind sicherlich gut gewählte Namen.
      Da der Code jetzt nicht allzu groß ist, ist es noch Übersichtlich, aber wie schon geschrieben ist das natürlicher Übersichtlicher.

      Wenn ich dazu komme änder ich das noch. :D

      Danke an euch.



      Hab es jetzt noch schnell geändert :D

      BASCOM Source Code

      1. Torzu Alias Pinb.1 'Tor geschlossen
      2. TorOffen Alias Pinb.2 'Tor geöffnet




      Noch eine Frage in anderer Sache, ich möchte mir noch eine Platine machen und hab davon nicht viel Ahnung, hab aber die Software Target 3001, wo kann ich hier im Forum unter welcher Rubrik einen
      Thread aufmachen?

      Oder gibt es hier keinen Bereich dafür?