Bitte helft mir bei der Fehlersuche (Arduino Beginner)

Hallöle,

ich verzweifle bald an meinem Arduino... Ich wollte ein Simples Programm, welches bei Tasterdruck einen Port für 30 Sekunden auf High setzt. Hatte es vermeidlich auch geschafft, doch leider hat es letztendlich mit der Hardware absolut nicht funktioniert... Als Hintergrund: Der Freigeschaltete Port sollte ein Relais freigeben, welches dann eine Wasserpume (12V DC) anfeuert welche wiederum meine Pflanzen bewässert. Nun zu meinen Problemen:

  1. Ich wollte beides über 12V DC laufen lassen. Laut Datenblatt für den Uno auch kein Problem. Allerdings schaltet der Port welcher erst auf Knopfdruck freigegeben werden soll nicht auf LOW. Weder nach 30 Sekunden noch sonst irgendwann. Bei USB Spannung scheint es zumindest bei einer 5 Sekunden Laufzeit zu gehen.
  • Kann ich den Uno dann wirklich nicht über 12V laufen lassen? Oder hab ich dummerweise gleich zwei Montagsmodelle erwischt?
  1. Ich habe mir von Conrad eine 5V Relais Platine zukommen lassen. Ist der Strom am Output so gering, dass dieser das Relais nicht schalten kann? Die Kontroll LED leuchtet zwar (schwach) aber es schaltet nichts. Erst wenn ich an die 5V Board Spannung gehe funktioniert es ordentlich. Ich habe mir noch eine andere Relais Platine bestellt die hoffentlich besser funktioniert.

Folgend mein Programm. Falls ihr Fehler findet, bitte melden. Es ist mein erstes Programm, welches ich nach 5 Jahren geschrieben habe.

int Relais = 12;
int taster = 7;
int tasterstatus = 0;

void setup()
{
  pinMode(Relais, OUTPUT);
  pinMode(taster, INPUT);
}

void loop()
{
  tasterstatus=digitalRead(taster);
  if (tasterstatus == LOW) {
    digitalWrite(Relais, HIGH);
    delay (5000);
    digitalWrite(Relais, LOW);
  } else {
    digitalWrite(Relais, LOW); 
  }
}

Ich bin um jede Hilfe unglaublich dankbar

wenn du den Taster auf LOW abfragen willst weil du den Taster gegen GND geschalten hast, sollst du auch den INPUT_PULLUP aktiveren.

du könntest dir mein Geschreibe auf
https://werner.rothschopf.net/202003_arduino_retriggerbares_nachlaufrelais.htm geben,
das sollte dir eine erste Idee geben, wie man sowas angehen könnte.

p.s.: bitte drücke mal in der IDE STRG-T und formatiere deinen Code. Außerdem, bitte poste Code in nur Codetags - ansonsten ist dein Code nur schwer lesbar.

1 Like

Hast Du uns eventuell noch einen Link zu den Komponenten und eventuell einen Schaltplan oder zumindest ein gutes Foto vom Aufbau?
Eventuell schafft der onboard Spannungsregler den benötigten Strom des Relais nicht und die Spannung bricht deshalb zusammen.

Gruß, Jürgen

Das du Anfänger bist, brauchst du nicht zu schreiben, das sehen wir auch so. Das gehört nicht in den Titel. Da solltest du besser dein Problem schildern.

Und wo hast du die 12 Volt am Uno angeschlossen ?
Es wurde ja schon geschrieben, wir brauchen mehr Infos von dir.

Hier mal ein Bild vom (groben) Aufbau. Das Relais wird noch durch ein 5V DC ersetzt. Die Pumpe steht schon Einsatzbereit auf dem Balkon.

Komponenten:
Arduino Uno
Taster %product-title% kaufen
5V DC Relais Platine https://amzn.to/3xpb2mo
12V/2A Steckernetzteil

Die 12V schließe ich über die Buchse an bzw hatte es vor.

Edit: Ich seh auch grade, dass ich die flasche Version des Codes angegeben habe. Der Output soll auf HIGH wechseln und nicht gen LOW schalten

Deine Kabel sind nicht optimal. Die haben schnell mal einen Wackelkontakt und dann fängt das Suchen an.

Was den Ausgang betrifft, sollte das so funktionieren. Die meisten Relaismodule sind LOW-Aktiv, was heißt, die schalten wenn der Ausgang vom Uno LOW ist. Und so steht es auch auf der Website des Angebotes.

Dann werd ich den Code mal umschreiben. Noiasca hat ja eine Seite verlinkt. Verträgt der Uno es denn auf Dauer, wenn ich das 12V Netzteil über die Buchse anlege? Oder macht der da Schlapp und ich sollte lieber 5V USB anlegen?

Da kommt es ganz darauf an, welche zusätzlichen Verbraucher auf der 5Volt-Seite noch angeschlossen sind. Ich würde da lieber die 5Volt über USB oder ein Netzteil mit ca. 7 - 9Volt anschließen.

1 Like

Schickes Bild.
Hau mal den Taster raus.
Nimm ein Draht, steck den auf der einen Seite auf Digital-PIN7 und jetzt: die andere Seite des Draht
einmal in 5V stecken. Rausziehen. in GND stecken. rausziehen.
Das Ganze gerne wieder von vorn.
Geht?

Das Bild zeigt, das Du keinen Widerstand nach GND verbaut hast.

Die Ladung, die Du mit Deinem Aufbau auf den PIN gibst, wird nicht (schnell genug) abgebaut.
Damit bleibt der PIN für sehr lange Zeit - und wenn Du Pech hast sogar dauerhaft - HIGH.
In Deiner Schaltung:
Setze einen Widerstand zwischen dem PIN und GND - unkritisch irgendwas zwischen 1 und 10Kohm.

Geht natürlich auch anders rum - Die Taste nicht nach 5V sondern nach GND. Dann geht auch das zurückgreifen auf den internen PULLUP.
Also den den PIN mit INPUT_PULLUP initialisieren und das Kabel des Taster an nicht 5V sondern nach GND.

[IRONISCH] Oh wie nett, ein gefälschter ArduinoUNO.[/IRONISCH]
Es gibt haufenweise Nachbauten die weder das LOGO noch den Namen "Arduino" tragen. Wenn man keinen orginalen Arduino kaufen will dann bitte wenigstens einen legalen Nachbau und keine Fälschung.

Der Bildhintergrund mag vieleicht für manche Cool sein, um die Schaltung zu verstehen ist ein einfarbiger Hintergrund besser. Außerdem sollten die Kabel so verteilt werden daß man erkennt wie sie verlaufen.
Grüße Uwe

Woran hast du das erkannt?
Meiner (den ich immer für ein Original gehalten habe, aus einer Arduino-Pappschachtel) sieht für mich erstmal genauso aus.

Das ist nicht gut.
Der sollte so:

oder so:

aussehen.

Von Arduino (Firma) gibt es nicht den gesamten Satz der Files für die Platinenproduktion. Es fehlen unter anderem die Aufdrucke.
Nachbauer (viele legale und illegale) erstellen die Beschriftung mit Eagle mit dem standartmäßig eingestellten Font. Dieser ist am A und W leicht zu erkennen weil das A nicht V-förmig ist sondern wie ein Häuschen (Quadrat mit Dach) aussieht Das W hat die äußeren Schnkel paralell.

weiteres auf https://support.arduino.cc/hc/en-us/articles/360020652100-How-to-spot-a-counterfeit-Arduino
Ich orientiere mich da weniger auf die Bauteile wie zB der Sicherung oder am LOGO und der Arduino Schrift. Diese sind zwar vorhanden aber weniger offensichtlicher als das A und W.

Die Platinenfarbe (dieses Blaugrün) ist auch eine Eigenheit der Arduino's / Genuino's aus offizieller Produktion.

Grüße Uwe

Gut zu wissen. Ich dachte, dass ich zwei Originale gekauft habe. So schnell wird man übern Tisch gezogen. Hoffentlich reichen die trotzdem für mein Vorhaben. Danke auch für die ganzen Tipps bisher. Ich setz mich heute Abend mal dran und überarbeite mal alles in der Hoffnung das es funktioniert

Kurzer Zwischenstand: Mit dem INPUT_PULLUP und dem Beispiel von @noiasca scheint es jetzt zu funktionieren. Ich warte jetzt noch auf das neue 5V Relais das morgen kommen soll und hoffe, dass der Fake Uno genug Output Strom liefert um das Relais zu triggern.

Warum? :wink:
Das geht ganz einfach, indem Du einfach den Ausgangspin abfragst.

Das mache ich regelmässig, wenn ich hier mal Codeschnipsel zusammenstelle.
Da wo nur Pins angesprochen werden, reicht es einfach mit einen digitalRead (outputPin) abzufragen, ob der HIGH oder LOW gegangen ist.

const byte outPin = 12;
const byte inPin = 7;
bool merker;
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode (outPin, OUTPUT);
  pinMode (inPin, INPUT_PULLUP);
  merker = digitalRead(outPin);
}

void loop()
{
  if (digitalRead(inPin) == HIGH)
  {
    digitalWrite(outPin, HIGH);
  }
  else
  {
    digitalWrite(outPin, LOW);
    
  }

  merker =  sermon(outPin, merker);      // gibt bei Änderung des Zustand eine Meldung aus
}

bool sermon(const byte pin, bool zustand)   // Übergabe PIN und letzter Zustand
{
  if (digitalRead(pin) != zustand)          // Pin verändert?
  {
    zustand = !zustand;                     // Merken
    Serial.print(F("Zustand ist jetzt: ")); // ausgeben
    Serial.println(zustand);
  }
  return zustand;                           // Zustand wieder zurückgeben
}

och das kannste heute noch testen :wink:
Und ja, die Clones können das auch.
Da wo man aufpassen muss, ist oftmals die Belastung auf den 3,3V Pins, da gibt es manchmal Unterschiede.

1 Like

Wenn es ein reines Relais ist, vermute ich mal, esfunktioniert nicht.
Der Pin sollte nicht über 20mA belastet werden.
Ich hatte doch schon geschrieben, es wird auch mit deinem Relaismodul funktionieren. Warum machst du das nicht ?
Wenn du hier fragst und die Antworten ignorierst, ist das nicht förderlich.

Och nu!
Ja, das hochscrollen ist manchmal Kacke.
Du musstest aber von oben nach unten.
Und hast das alles übersehen, was da drin steckt.
Alles.

Was würdest Du einem TO schreiben, wenn der Deine Post's mit Foto und Beschreibungen (Hinweis: Das ist Mehrzahl!) überliest?

Na dann.
Ist warm heute.

Ich hatte doch schon geschrieben, es wird auch mit deinem Relaismodul funktionieren. Warum machst du das nicht ?<

Ganz einfach weil mein 12V Relais Chip auch nur auf 12V triggert. Ich hatte es mehrfach mit 5V probiert und es schaltet NICHT. Deshalb habe ich mir ein 5V Relaischip bestellt

Mach Dir keine Gedanken.
Da ist einfach der halbe Thread nicht gelesen worden.
Gibts manchmal.

1 Like