• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Reaktivlicht-Aktivierung mit Reed-Kontakt - Ausgabe mit siebenmaligem Blinken per LED

schatzi-s

Geowizard
oh ... ich hatte schon Angst, dass ich Dich verschreckt haben koennte. Gute Besserung und lass Dich nicht anstecken!

Hard- und Software ist nur die ganz grobe Einteilung ;-)

Aber mit dem Uno reduzierst Du die ersten Schritte quasi auf die Software. Das Teil bringt eine LED mit (Port 13). Mit der kannst Du die ersten Versuche starten und sie blinken lassen, wie Du es moechtest.
Wenn das laeuft, kannst Du mal USB abklemmen und den Arduino mit einem 5V Netzteil versorgen. Dann sollte er noch immer blinken.
Im naechsten Schritt kannst du Deinen Reedkontakt in die Spannungsversorgung einschleifen und muesstes dann sehen, dass das Teil nur noch dann blinkt, wenn der Magnet beim Schalter ist.
Wenn Dein Petling gross genug ist und Du z. B. eine Powerbank nutzen wuerdest, waerst Du damit schon quasi fertig ;-)

Du kannst aber auch erst einmal die Onboard LED durch eine externe ersetzen (Widerstand nicht vergessen, Schaltungen gibt es zu Hauf im Internet) und das Ganze wiederholen.

Wenn das laeuft, kannst Du dir ueberlegen, ob Du Deinen Cache schnell fertig haben willst oder erst noch weiter "rumspielen" moechtest.

Wenn Du es eilig hast, kannst Du den Sketch nun auf einen ATTiny brennen. Aber Achtung: Der hat natuerlich weniger Ports als der Arduino und die sind auch noch - je nach Konfiguration - nicht unbedingt dort, wo Du sie erwartest (das zu erklaeren, wuerde jetzt zu weit fuehren). Sollte die LED am Tiny nicht blinken, der Sketch sich aber hat fehlerfrei aufspielen lassen, dann teste erst einmal, ob die LED an einem anderen Port funktioniert.

Spoiler: All das (bis auf das falsche Blinkmuster) ist unter
https://wolles-elektronikkiste.de/attiny85-84-45-44-25-24-programmieren
beschrieben. Ob das da alles so richtig/ aktuell ist, weiss ich nicht, das war mein erstes Googleergebnis als ich nach Arduino und tiny gesucht habe und es sah schon mal ganz gut aus ;-)
 

hcy

Geoguru
Das heißt, du bezeichnest, jeden Koch, der nicht programmieren kann als Dumm? Genauso wie jeder nicht Programmierer der es schafft etwas komplexes mit Lego zu bauen oder ein IKEA Regal aufzubauen?
Häh, nein, eben nicht. Ich hab geschrieben es ist keine Frage von Dummheit ob man programmieren kann oder nicht.
 

radioscout

Geoking
Wenn der Cacher den Magneten vor dem Schalter laesst und geht, dann laeuft die Schaltung weiter und irgendwann ist die Batterie leer. Das kann man vermeiden, in dem man den Cache so baut, dass man den Magneten festhalten muss (im Gegensatz zu: Ihn irgendwo drauflegen).
Das läßt sich in der Software verhindern: entweder die Anzahl der Durchläufe oder die Laufzeit pro Auslösung begrenzen.
 

schatzi-s

Geowizard
Das alleine bringt noch nichts.
Anschließend muss man alle möglichen Verbraucher ausschalten, die Pins entsprechend konfigurieren und den Prozess in den tiefsten Schlaf versetzen.

Alles machbar, aber aktuell noch nicht vom TO.
 

Womo8

Geocacher
Zufällig bin ich gerade dabei einen ganz ähnlichen Cache zu bauen.

Ein Digispark wird über einen Klingeltaster gestartet und lässt dann eine 5mm-Led 10 Ziffern blinken.W ird der Taster losgelassen hat der Digispark keinen Strom mehr und hört natürlich auf zu blinken.

Stromversorgung mit 4xAA hält sicher ein Jahr. Sourcecode:
C++:
int blinkPin = 2;

//Hier Koordinaten hinterlegen
int koordinaten[] = {4, 4, 9, 5, 2, 4, 9, 5, 5, 5};

void on() {
  digitalWrite(blinkPin, LOW); 
  delay(500);
}

void off() {
  digitalWrite(blinkPin, HIGH); 
  delay(500);
}

void setup() {

  pinMode(blinkPin, OUTPUT);

  //Startsignal einmal lang leuchten
  on();
  delay(1000);
  off();
  delay(1000);

//Koordinaten ausgeben
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < koordinaten[I]; j++) {
      on();
      off();
    }
    delay(3000);
  }

  //Endesignal einmal lang leuchten
  on();
  delay(1000);
  off(
);
  delay(1000);
}
void loop() {
}

Die Elektronik ist soweit fertig, fehlt nur noch ein nettes Gehäuse 😄
 
Zuletzt bearbeitet von einem Moderator:

schatzi-s

Geowizard
Endlich mal eine Loesung und keine Frage ;-)

Kleiner Programmiertipp: Da Du die Kombination on/ off immer gemeinsam nutzt (teilweise durch delays verlaengert) kannst Du daraus auch eine Funktion machen. Das macht Dein Programm dann uebersichtlicher (aber das sind Feinheiten ;-)
(leuchtet bei Dir wirklich die LED, wenn Du du den Pin auf low setzt?)

das macht Dein Script zu:

C++:
#define blinkPin 2
#define kurz 500
#define lang 1500

void blink(int dauer) {
 digitalWrite(blinkPin, LOW);
 delay(dauer);
 digitalWrite(blinkPin, HIGH);
 delay(dauer);
}

//Hier Koordinaten hinterlegen
int koordinaten[] = {4, 4, 9, 5, 2, 4, 9, 5, 5, 5};
void setup() {
 pinMode(blinkPin, OUTPUT);

//Startsignal einmal lang leuchten
 blink(lang);

//Koordinaten ausgeben
for (int i = 0; i < 10; i++) {
  for (int j = 0; j < koordinaten[j]; j++) {
     blink(kurz);
  }
  delay(3000);
}

//Endesignal einmal lang leuchten
 blink(lang);
}
void loop() {
}/CODE]
 
Zuletzt bearbeitet von einem Moderator:

schatzi-s

Geowizard
@Womo8 kurze Frage: Dauert es bei Dir gut 5 Sekunden, bis der Sketch beginnt? Mir ist das nie so aufgefallen, da meine Programme normalerweise durchlaufen. Aber bei einer Anwendung, die auf Knopfdruck starten soll, ist das doch eher stoerend?!
 

schatzi-s

Geowizard
@Womo8 wenn ja:

ich habe gerade folgende Anleitung

https://bytelude.de/2018/04/20/wie-...y-beim-digispark-digistump-attiny85-entfernt/

ausprobiert (gute Nachricht: Bei Github befindet sich auch ein fertiges Binary des micronucleus).

Das hat perfekt funktioniert und nun blinkt mein Digispark sobald er Strom hat :) Achtung: Anschliessend musst Du Deinen Sketch erneut hochladen.

(und ich muss den Original-Bootloader finden/ einspielen, da ich mir nicht merken kann, dass mein Testdigispark nun mittels Bruecke zwischen Pin0 und GND programmiert wird).

P. S.: kann es ein, dass Du die LED zwischen dem Pin und an 5V angeschlossen hast?
 

RSKBerlin

Geonewbie
Teammitglied
Off-topic, aber:
Screenshot_20240316-222406.png

Damit könnt Ihr bequem Code in diversen Programmiersprachen einfügen, ohne, dass die Forensoftware Teile davon als BBCode fehlinterpretiert.
 

RSKBerlin

Geonewbie
Teammitglied
ah, danke ... und wie kriegt man die Leerzeilen da raus?
Die sind da nicht drin, wenn Du Deinen Code gleich in die Eingabemaske einfügst. Das da oben ist passiert, weil ich den bereits von der Forensoftware interpretierten Code da eingefügt habe. Ich habe das jetzt mal korrigiert - bitte kurz prüfen, ob noch alles stimmt.
 
Zuletzt bearbeitet:

schatzi-s

Geowizard
Ja, stimmt. Ich bin meist etwas schnell beim Basteln und passe dann eben die Software an. Mir ist aber schon aufgefallen, dass sich die LED invers zur internen verhält...
Ich weiss nicht, welche Konsequenzen das hat, aber es laeuft ja ;-)

Es hat zumindest einen Vorteil: Dadurch ist das Loetauge fuer GND frei und du kannst zum Programmieren (nach dem Update des Bootloaders) bequem einen Draht oder - besser - Widerstand zwischen GND und Pin 0 klemmen.

Zur besseren Lesbarkeit (und Anpassung, wenn sich die Hardware aendert), bieten sich noch zwei Defines an
#define LedAn LOW
#define LedAus HIGH
damit sich niemand wundert mit einem Kommentar, wie die LED angeschlossen ist, denn der "Klassiker" waere ja Pin, Widerstand, LED, GND und HIGH = true = an

Das macht den Sketch im weiteren Verlauf selbsterklaerend (das ist fuer mich wichtig, weil ich seeeehr wenig dokumentiere).
Bei einem digitalWrite(blinkPin, LedAn) weiss jeder, dass die Led anschliessend leuchtet.
 
OP
esbrittl

esbrittl

Geocacher
Aber mit dem Uno reduzierst Du die ersten Schritte quasi auf die Software. Das Teil bringt eine LED mit (Port 13). Mit der kannst Du die ersten Versuche starten und sie blinken lassen, wie Du es moechtest.

Wenn das laeuft, kannst Du dir ueberlegen, ob Du Deinen Cache schnell fertig haben willst oder erst noch weiter "rumspielen" moechtest".
Ich habe Deinen Rat befolgt und mir ein Starter Kit gekauft, irre interessant.
Bestellt war Uno, geliefert wurde Mega.
Jetzt übe ich und weiß jetzt auch, was IDE bedeutet, was ein Sketch ist etc.
Mann war ich naiv.
Bin auch besser darin die Fehlermeldungen zu deuten und zu korrigieren.
Mal schauen, ob ich die Ostertage benutzen kann, mit dem attiny auf dem breadbord zu probieren.
 
Oben