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:
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?
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.
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.
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.
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.
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.
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
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.
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?
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
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.
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.
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