Go Down

Topic: Dioden schaltungs problem (Read 2605 times) previous topic - next topic

asgar434

Hi leute,

mein projekt ist ein bisschen schwer zu beschreiben.
Ich hab 2 arduino uno die würde ich gerne verbinden mit einem Kabel von 5 Volt zum digital pin vom anderen.

Wenn die Verbindung hergestellt wird (schalter z.b.) dann wird eine Diode für 10 Sekunden eingeschaltet und geht dann wieder aus. Die Diode sollte die 10 Sekunden anbleiben auch wenn während dessen die Verbindung abbricht.

Jetzt hab ich aber nicht wirklich eine Ahnung wie man das ganze umsetzt.

Dachte vielleicht sowas in die Richtung?:

Code: [Select]
void setup() {
 
  pinMode(5, OUTPUT);
  pinMode(8, INPUT);
  }
void loop() {

if(digitalWrite(8)==HIGH)
 {
    digitalWrite(5, HIGH);
    delay(5000);
    digitalWrite(5, LOW);
  }
}


Funktioniert halt leider nicht^^

Grüße

sschultewolter

Schaltplan? Vermute keine gemeinsamer GND
Orginal Atmel AVRISP mkII zu verkaufen. Anfrage per PN ;)

agmue

#2
Feb 24, 2017, 04:04 pm Last Edit: Feb 24, 2017, 04:06 pm by agmue
Versuche mal
Code: [Select]
if(digitalRead(8)==HIGH)

Die Diode ist eine Leuchtdiode?

delay(5000) sind 5 Sekunden
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

asgar434

Die Diode ist eine Leuchtdiode jep.

if(digitalRead(8)==HIGH) funktioniert es zumindest schon mal so halb.

Wenn ich 5 Volt an den 8 Pin hänge ist die Leuchtdiode aufjedenfall schonmal an.

Das Problem ist das wenn ich das Kabel vom 5 volt Anschluss trenne die Diode trotzdem ab und zu leuchtet.

Mal geht sie an mal geht sie aus. Die spinnt total rum xD

Ich hab gemerkt je nach dem wie das kabel im 8 Pin steckt geht sie an oder aus (oder reagiert zumindest drauf)

Witzig das die Leuchtdiode auch auf meine Handbewegung reagiert.
 

Scheinbar brauch ich etwas das nur auf high schaltet wenn 5 Volt beim 8ten Pin ankommen.



agmue

Du hast einen Elektronenfänger gebaut, eignet sich zum Wahrsagen ;)  Sonst besser den Eingang auf ein definiertes Potenzial legen:

Code: [Select]
pinMode(8, INPUT_PULLUP);
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HotSystems

Du hast einen Elektronenfänger gebaut, eignet sich zum Wahrsagen ;)  Sonst besser den Eingang auf ein definiertes Potenzial legen:

Code: [Select]
pinMode(8, INPUT_PULLUP);
Das sehe ich auch so.
Wichtig ist dabei, der Kontakt (Kabel) muss hierbei aber gegen GND hergestellt werden.
Und das Schaltverhalten ist invertiert.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

asgar434

Elektronenfänger  :)  Ok gut zu wissen.

"Sonst besser den Eingang auf ein definiertes Potenzial legen:"

Was bedeutet das?


HotSystems

#7
Feb 24, 2017, 11:38 pm Last Edit: Feb 24, 2017, 11:40 pm by HotSystems
Elektronenfänger  :)  Ok gut zu wissen.

"Sonst besser den Eingang auf ein definiertes Potenzial legen:"

Was bedeutet das?
Genau das, was agmue vorgeschlagen hat.
Bzw. wenn du es mit 5 Volt machen must, dann must du einen Pulldown-Widerstand einbauen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

agmue

INPUT_PULLUP legt einen internen 50 kOhm Widerstand an +5V. Unbeschaltet ist der Eingang auf HIGH.
Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

asgar434

#9
Feb 24, 2017, 11:52 pm Last Edit: Feb 24, 2017, 11:57 pm by asgar434
Wie schaff ich es das der 8te Pin unbeschalten auf LOW ist?

Und wegen GND, geht das nicht ohne? Hätte gern nur 1 Kabel.

Mein Code schaut jetzt so aus: (Wenn der läuft ist die Leuchtdiode einfach Dauer an)

Code: [Select]
void setup() {
  
  pinMode(5, OUTPUT);
  pinMode(8, INPUT_PULLUP);
  }
void loop() {



if(digitalRead(8)==HIGH)
 {
    digitalWrite(5, HIGH);
    delay (5000);
    digitalWrite(5, LOW);
  }
  if(digitalRead(8)==LOW)
 {
    digitalWrite(5, LOW);
  }
}

uwefed

#10
Feb 25, 2017, 01:17 am Last Edit: Feb 25, 2017, 01:18 am by uwefed
Genau das, was agmue vorgeschlagen hat.
Bzw. wenn du es mit 5 Volt machen must, dann must du einen Pulldown-Widerstand einbauen.
Ein unbeschalteter Eingang hat ein undefiniertes Potential (Spannung) weil er so hochohmig ist daß elektromagnetische Störungen (Radiwellen, Entladungen) genügen damit er HIGH oder LOW liest. Um das zu verhindern schaltet man einen Widerstand zwischen Eingang und Masse (Pull Down) oder Eingang und +5V (Pullup) Beides Funktioniert, Die Auswahl ergibt sich aus der Schaltung.


Wie schaff ich es das der 8te Pin unbeschalten auf LOW ist?
Und wegen GND, geht das nicht ohne? Hätte gern nur 1 Kabel.
Spannungen werden zwischen 2 Punkten gemessen. Da reicht nicht 1 Kabel. Du mußt immer die Masse  der beiden Arduini verbinden. Das kann auch Durch den PC passieren weil Du beide Arduini am gleichen PC über USB versorgst.
Wenn die Masse (GND) verbunden ist dann ist es egal ob Du 5V oder GNS auf das Eingngspin gibst. Es funktioniert beides.

Damit das Pin 8 sicher LOW ist wenn nichts angehängt ist mußt Du einen Widerstand ( etwas zwischen 10k und 100kOhm )  zwischen Eingang (Pin8) und Masse( GND) schalten.

Hast Du einen Vorwiderstand am LED?

Grüße Uwe

schUk0

Wie schaff ich es das der 8te Pin unbeschalten auf LOW ist?

Und wegen GND, geht das nicht ohne? Hätte gern nur 1 Kabel.

Widerstand gegen GND wurde jetzt ja schon einige Male vorgeschlagen und ist auch die einzige Lösung dieses "Problems".

Und die GND-Verbindung muss sein.
Das wäre sonst, als wenn du eine Glühbirne mit nur einem draht betreiben wolltest.

Oder als wenn du einen Gummi spannen wolltest, aber nur an einer Seite ziehst.

Das selbe bei einem Stromschlag.
Den kriegt man nur, weil man über seinen Körper mit der Erde verbunden ist.
Auch die "Masse" des Trafos für den "Strom" aus deiner Steckdose ist mit der Erde Verbunden.
So herrscht also zwichen der "Phase" und der Erde ein Potentialunterschied.

Würde man nun schweben, dann würde man auch keinen Schlag kriegen.
ACHTUNG!!!
Das soll jetzt nicht heißen, dass du springend in die Steckdose fassen sollst !

Wenn dein Arduino feststellen soll ob Ein engang HIGH oder LOW ist, dann macht er nichts anderes als die Spannung zwischen diesem Eingang und GND zu messen.
Überschreitet diese einen bestimmten Wert, dignaliesiet er ein HIGH.
Wenn dem Arduino aber aber der GND vom Eingangssignal (also vom anderen Arduino) fehlt. Kann er diese Spannung nicht messen.

Gruß

schUk0


HotSystems

Wie schaff ich es das der 8te Pin unbeschalten auf LOW ist?

Mein Code schaut jetzt so aus: (Wenn der läuft ist die Leuchtdiode einfach Dauer an)
Es wird für dich sicherlich einfacher und verständlicher, wenn du dir die Beispiele in der IDE ansiehst.
Da werden die Taster-Funktionen mit Led genau beschrieben.

Einfach mal durcharbeiten, dann wird das alles verständlicher.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

ElEspanol

#13
Feb 25, 2017, 07:52 pm Last Edit: Feb 25, 2017, 07:53 pm by ElEspanol
Du kannst pullup verwenden, dann sparst du dir einen zusätzlichen Widerstand. Wenn du willst, dass bei abgezogenem Kabel die LED aus ist, musst du eben mit ! oder zu Fuss die Logik umkehren.

Aber ohne GND zu verbinden, geht es so nicht. dann musst du schon auf eine Funklösung gehen.

asgar434

Hi Leute also erstmal ein großes Danke für die tolle Hilfe und die vielen interessanten Infos.
Ich hab gemerkt das ich für mein Projekt auch einen anderen Weg gehen kann.

Soweit hat auch alles super funktioniert.

Meine letzte Frage wäre ob es möglich ist den GND Pin per Code zu deaktivieren?







Go Up