Go Down

Topic: Mein Test verselbstständigt sich (Read 431 times) previous topic - next topic

Ace_Dark

Aug 26, 2019, 03:11 pm Last Edit: Aug 26, 2019, 03:18 pm by Ace_Dark
Ist mein Uno kaputt oder warum interessiert ihn beim folgenden sketch nicht ob der Schalter geöffnet oder geschlossen ist

 
Code: [Select]

#include <Servo.h>

Servo a;
Servo b;
Servo c;
Servo d;
Servo e;
Servo f;

void setup() {
  a.attach(3);
  b.attach(5);
  c.attach(6);
  d.attach(9);
  e.attach(10);
  f.attach(11);

  Serial.begin(9600);
  pinMode(8, INPUT);
  pinMode(12, INPUT);
  pinMode(13, INPUT);
}

void loop() {
  int l = digitalRead(13);
  if (l == 1) {
    a.write(0);
    delay(700);
    a.write(90);
    delay(700);
    Serial.println("hallo");
  }

  Serial.println(l);
  delay(100);

}
 

combie

Erstens: Ich sehe keinen Schalter.
Zweitens: Pullup/Pulldown vergessen.
Ob ein Mensch klug ist, erkennt man viel besser an seinen Fragen als an seinen Antworten.
Pierre-Marc-Gaston de Lévis

Tommy56

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [*code] davor und [*/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Sprechende Variablennamen erhöhen die Lesbarkeit ungemein.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

Im Uno wird Pin D13 für die Onboard-Led verwendet.

Da ist es schlecht, einen Taster/Schalter o.ä. anzubinden.
Gruß Dieter

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

Ace_Dark

hi mal ne frage wenn man den 3 v output mit einen Input pin verbindet müsste dieser bei digitalRead doch high bzw 1 sein und wenn mann diese Verbindung löst 0 bzw low oder?

HotSystems

hi mal ne frage wenn man den 3 v output mit einen Input pin verbindet müsste dieser bei digitalRead doch high bzw 1 sein und wenn mann diese Verbindung löst 0 bzw low oder?
Das kommt immer auf die verwendete hardware und den Sketch an.

Gruß Dieter

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

Serenifly

hi mal ne frage wenn man den 3 v output mit einen Input pin verbindet müsste dieser bei digitalRead doch high bzw 1 sein und wenn mann diese Verbindung löst 0 bzw low oder?
Siehe Datenblatt des Controllers. Steht hinten unter "Electrical Characteristics"

Input High Voltage: Min. 0,6 * Vcc
Input Low Voltage: Max. 0,3V

Das heißt bei 5V werden 3,3V noch als High erkannt. 3V liegt aber genau auf der Grenze und wenn man den UNO über USB versorgt hat man eher 4,88V statt 5V

Serenifly

Es hat gesagt dass er einen UNO hat. Ich hatte extra noch nachgesehen :p

combie

Es hat gesagt dass er einen UNO hat. Ich hatte extra noch nachgesehen :p
Och...
Jetzt habe ich schon meinen Post gelöscht....
Weil falsch.

Schade eigentlich....
Ob ein Mensch klug ist, erkennt man viel besser an seinen Fragen als an seinen Antworten.
Pierre-Marc-Gaston de Lévis

HotSystems

Es hat gesagt dass er einen UNO hat. Ich hatte extra noch nachgesehen :p
Naja, man kann aber auch davon ausgehen, er verwendet jetzt einen anderen Controller, da der Uno ja evtl. kaputt ist.
Dazu kam ja keine Info mehr und die zweite Frage war ohne Hinweis auf die verwendete Hardware.
Gruß Dieter

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

Serenifly

Klar ist es nicht unwichtig. Aber für einen UNO kann man davon ausgehen dass die Eingänge mit 3,3V funktionieren

Es stimmt natürlich dass man sich darauf nicht verlassen sollte. Man muss es beachten wenn man die Controller wechselt. Außerdem schreibt er auch 3V. Da ist die Frage ob er das wörtlich meint oder die 300mV unterschlägt

uwefed

hi mal ne frage wenn man den 3 v output mit einen Input pin verbindet müsste dieser bei digitalRead doch high bzw 1 sein und wenn mann diese Verbindung löst 0 bzw low oder?
Ni
Wenn Du einem 5V Arduino 3V am Eingang gibst liest er wahrscheinlich HIGH (der limit ist 0,6 * Ucc)
3,3V und 5V von diesen Pins liest er sicher als HIGH.
Unbeschaltet ist ein Eingang sehr störbempfindlich und er liest zufällig HIGH oder LOW.
Um sicher LOW zu lesen mußt Du einen Widerstand vom Eingang nach Masse schalten. So ein Widerstand heißt PullDown-Widerstand.
Grüße Uwe

postmaster-ino

Hi

Oder Du benutzt den im Arduino intern verbauten Pull-UP Widerstand - dann musst Du nur
pinMode(12,INPUT_PULLUP);
schreiben - und schon wird der Pin auf +Vcc gezogen (pull=ziehen, deshalb Pull-Widerstand).
Natürlich kannst Du dann nicht mehr einen Taster an Vcc (Plus) angeschlossen erkennen, da bei offenem Taster der Eingang nach Vcc gezogen wird udn bei gedrücktem Taster Vcc am Pin anliegt - ist für den Arduino genau das Gleiche.

Deshalb nimmt man hier dann Taster nach GND - LOW am Eingang -> Taster gedrückt.
Man muß Das im Kopf 'umdenken' - man gewöhnt sich aber dran!

MfG
Dein Problem, Dein Sketch, Deine Bilder.
Ob ich ohne Diese an Deinem Problem arbeiten will, entscheide aber immer noch ich.

Ace_Dark

#13
Aug 27, 2019, 10:03 pm Last Edit: Aug 27, 2019, 10:07 pm by Ace_Dark
Vielen dank an euch ich hab es mittlerweile anders gelöst. Ich hab den Schalter einfach durch die Eingabe Funktion im Seriell Monitor Ersetzt das klappt deutlich besser für mein Projekt. Der UNO funktioniert noch, keine Ahnung was los war. Trotzdem nochmal vielen Dank.

LG Ace

HotSystems

Vielen dank an euch ich hab es mittlerweile anders gelöst der UNO funktioniert noch keine Ahnung was los war. Trotzdem nochmal vielen dank

LG Ace

(PS weiß wer ob und wie man Posts löscht?)
Und wie anders hast du es gelöst ?

Und.....
Nochmal , du sollst nichts löschen.

Gruß Dieter

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

Go Up