• 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

OP
esbrittl

esbrittl

Geocacher
Habe mal Probeweise einen Taster dazwischen gesetzt (vorläufig, wird ja dann zum Reed) und es klappt ;-).
Tja, im Moment lese ich mir die Augen blutig.
Auf dem Steckbrett das mit dem Arduino verbunden ist, läuft der Sketch sowohl mit einer 9V Blockbatterie als auch mit einer 3V Knopfzelle.
Auf dem Probebrett jedoch nur mit den 9V.
Meine Vermutung ist, das es mit der Verbindung reset am ATtiny zum Pin 10 (VCC beim Mega?)zu tun hat. Noch bin ich jedoch zu blöde das final herauszufinden und zu beheben.
 
OP
esbrittl

esbrittl

Geocacher
Achtung, dein ATtiny hat eine Maximum Operating Voltage von 6,0 V!


Ich dachte, jetzt geht alles?! Ich werde aus deinen Beschreibungen immer noch nicht schlau.
Tja, was soll ich sagen, ich bin einen Schritt weiter. Ich will später einen REED Sensor verbauen, mangels Magnet teste ich ob das mit einem Taster klappt. Ja, es klappt auf beiden Boards. Aber wie gesagt, mit dem Blockbatterieadapter am Arduino gehts, die Blockbatterie direkt an Board angeschlossen geht, die 3V Knopfzelle direkt ans Board angeschlossen geht.
Wenn ich den ATtiny auf das andere Board setze gehts nur mit der Blockbatterie. Und die hat 9V. Ich gehe davon aus, dass der Mega an der Steckbuchse gleich einen Widerstand hat, der aus den eingehenden ) die zum arbeiten benötigten 5V macht.
Aber der ATtiny solte doch mit 3V arbeiten, tut es jedoch nicht. Was die Blockbatterie betrifft, die ist steinalt, hat vielleicht nur noch 6V ;_), habe kein Multimeter zum messen, leider. der ATtiny ist jedenfalls nicht kaputt gegangen.
 

SammysHP

Moderator
Teammitglied
Aber wie gesagt, mit dem Blockbatterieadapter am Arduino gehts, die Blockbatterie direkt an Board angeschlossen geht, die 3V Knopfzelle direkt ans Board angeschlossen geht.
Wenig hilfreich, da wir jetzt immer noch nicht wissen, wie deine Schaltung aussieht.

Ich gehe davon aus, dass der Mega an der Steckbuchse gleich einen Widerstand hat, der aus den eingehenden ) die zum arbeiten benötigten 5V macht.
Ein Widerstand kann dir keine 5 V machen, dafür benötigst du einen Spannungsregler.

Aber der ATtiny solte doch mit 3V arbeiten, tut es jedoch nicht.
Dann geht deine Schaltung also doch noch nicht. Ja, mit 3 V sollte er gehen, je nach Taktfrequenz eventuell grenzwertig.

habe kein Multimeter zum messen
Das wichtigste Messgerät überhaupt, wenn du etwas mit Elektronik machst! Ohne ein Multimeter stocherst du doch nur blind herum.

Was die Blockbatterie betrifft, die ist steinalt, hat vielleicht nur noch 6V ;_)
Sehr gute Ausgangssituation… Und woher willst du das wissen, wenn du kein Messgerät hast?

der ATtiny ist jedenfalls nicht kaputt gegangen.
Und das weißt du, weil alles funktioniert?

Nochmal:
  • Ordentlicher Schaltplan, sodass man sieht, was du wie angeschlossen hast.
  • Das vollständige Programm.
  • Eine Schritt-für-Schritt-Anleitung, wie du den ATtiny programmiert hast, seit du ihn bekommen hast (Bootloader, Einstellungen, Fuses, Programmiergerät usw.)
Halt alles, was ein Dritter braucht, um deine Schritte komplett nachzuvollziehen.
 

schatzi-s

Geowizard
Ich wollte gerade schreiben: Und ein Foto der Schaltung, da habe ich mir das angesehen, das Du bereits gepostet hast. Kann es sein, dass Du GND gar nicht direkt angeschlossen hast?

Auf dem (sehr schlechten) Foto sieht es so aus, als ob GND nur indirekt ueber die LED an den Prozessor kommt. Der Pin rechts neben dem Pin fuer die LED muss an den Minuspol der Batterie angeschlossen werden.

Aber nicht an die 9V Batterie, egal, wie alt die ist!!!!
 

schatzi-s

Geowizard
Ich fasse mal zusammen, was ich verstanden habe: Du hast einen Attiny mittels Arduino as Programmer (ISP) dazu gebracht, dass er jetzt blinkt. In Deinem Blinksketch auf dem Arduino hat er das mit einer Frequenz von einem Hertz gemacht. Auf Deinem Attiny blinkt es mit einer anderen Frequenz.

Wie immer gibt es diverse Moegllichkeiten derartige Probleme zu beheben. Dir wuerde ich empfehlen die Taktfrequenz in der IDE auf das Minimum zu setzen und den Sketch auf dem Tiny zu installieren. Dann guckst Du Dir die Blinkfrequenz an, vergleichst sie mit dem Soll (z. B. 4 Sekunden, statt einer halben) und passt Du den Delaywert entsprechend an, in dem Du in diesem Beispiel statt 500 62 nimmst. Nicht schoen, macht aber, was es soll.
 
OP
esbrittl

esbrittl

Geocacher
mit welchem programm kann ich solche schaltungen vernünftig abbilden? von Hand zeichnen wird bei mir eher nichts
 
OP
esbrittl

esbrittl

Geocacher
Habe jetzt das endgültige Programm auf den ATtiny gespielt incl.Reed Sensor:
C++:
#include <avr/sleep.h>
#include <avr/power.h>

#define PIN_LED    PCINT4
#define PIN_BUTTON PCINT3

ISR (PCINT0_vect) {}

void setup()
{
    pinMode(PIN_LED, OUTPUT);
    pinMode(PIN_BUTTON, INPUT_PULLUP);

    // pin change interrupt
    PCMSK |= bit (PIN_BUTTON);
    GIFR  |= bit (PCIF); // clear any outstanding interrupts
    GIMSK |= bit (PCIE); // enable pin change interrupts
}

void loop()
{
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay (200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay(200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay(200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay(200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay(200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
    delay(200);
    digitalWrite (PIN_LED, HIGH);
    delay (200);
    digitalWrite (PIN_LED, LOW);
 
    goToSleep();
}

void goToSleep()
{
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    ADCSRA = 0;            // turn off ADC
    power_all_disable();  // power off ADC, Timer 0 and 1, serial interface
    sleep_enable();
    sleep_cpu();
    sleep_disable();
    power_all_enable();    // power everything back on
}

Wollte das mit der Funktion "Zähler" machen, aber das kollidiert irgendwie mit dem gotoSleep, egal, so gehts auch.
Jetzt versuche ich noch einmal das Ganze auf das Probrebrett zu stecken.
 
OP
esbrittl

esbrittl

Geocacher
So, Jippieh, alles neu verkabelt und es geht mit 3V.
nächster Schritt: Löten ;-(
Was muss ich dabei beachten?
 

schatzi-s

Geowizard
Was ist die Funktion Zaehler?
Du solltest Dir dringend (!) Schleifen ansehen.

Welche Sequenz genau willst Du denn blinken? Und bist Du sicher, dass Dein Sketch das aktuell tut?
Wolltest Du nicht urspruenglich morsen?


Die Befehlsfolge
digitalWrite (PIN_LED, HIGH);
delay (200);
digitalWrite (PIN_LED, LOW);
digitalWrite (PIN_LED, HIGH);
bewirkt maximal ein kurzes Flimmern, das man mit blossem Auge aber vermutlich gar nicht sehen kann.

Ich glaube, bevor Du loetest, solltest Du Dich noch ein wenig mit dem Sketch (und der Theorie) befassen ...
 

jennergruhle

Geoguru
Was ist die Funktion Zaehler?
Du solltest Dir dringend (!) Schleifen ansehen.

Welche Sequenz genau willst Du denn blinken? Und bist Du sicher, dass Dein Sketch das aktuell tut?
Wolltest Du nicht urspruenglich morsen?


Die Befehlsfolge
digitalWrite (PIN_LED, HIGH);
delay (200);
digitalWrite (PIN_LED, LOW);
digitalWrite (PIN_LED, HIGH);
bewirkt maximal ein kurzes Flimmern, das man mit blossem Auge aber vermutlich gar nicht sehen kann.

Ich glaube, bevor Du loetest, solltest Du Dich noch ein wenig mit dem Sketch (und der Theorie) befassen ...
Das Teil blinkt eben (fürs menschliche Auge) nur siebenmal (davon einmal doppelt so lange, nämlich ca. 400 ms), weil das eine Ausschalten nur Mikrosekunden dauert. Es fehlt ein delay(200).

Und ja, eine Schleife verkürzt den Code hier erheblich:

C++:
for (int i=0; i<8; i++){
  digitalWrite (PIN_LED, HIGH);
  delay (200);
  digitalWrite (PIN_LED, LOW);
  delay (200);
}
 

schatzi-s

Geowizard
Das Teil blinkt eben (fürs menschliche Auge) nur siebenmal (davon einmal doppelt so lange, nämlich ca. 400 ms), weil das eine Ausschalten nur Mikrosekunden dauert. Es fehlt ein delay(200).
Das ist das, was es tut, die Frage ist: Was soll es tun?
Im Topic steht morsen und im ersten Post dann "eine LED eine bestimmte Anzahl blinken läßt."

Statt des Aufwandes haette es dann auch ein Edding getan, um die Ziffer 8 darzustellen ;-)

Ich finde, Elektronik sollte einen Mehrwert bringen und kein Selbstzweck sein.
 
OP
esbrittl

esbrittl

Geocacher
irgendwelche Aehnlichkeiten des Codes mit Post #39 waeren rein zufaellig und schade ;-)
Äh, nicht wirklich, weil zum einen ist in #39 kein Code, zum zweiten habe ich fleißig gegoogelt und den gefundenen abgewandelt für meine Bedürfnisse.
Der Titel des Postes ist vielleicht irreführend, nein, morsen wollte ich nicht, lediglich siebenmal blinken.
Ich vertiefe mich noch mal in das Thema Schleifen. Ist sicher für weitere Projekte von Interesse.
Der Code wird kürzer okay, aber hey, für mein allerersters "Ding" und in "nur" knapp drei Wochen vom Eröffnen des Threads über das Bestellen des Arduino Starter Kits bis zu diesem Ergebnis bin ICH MEGA STOLZ.


"Statt des Aufwandes haette es dann auch ein Edding getan, um die Ziffer 8 darzustellen ;-)"
Hatte keinem magnetischen Edding zur Hand

"Ich finde, Elektronik sollte einen Mehrwert bringen und kein Selbstzweck sein."
Sorry, aber wenn es meinen Zweck erfüllt habe ich doch einen Mehrwert :)

Ich werde das Thema Elektronik doch jetzt nicht fallen lassen... und mit der Zeit werden die Codes sicher feiner und ich könnte mir vorstellen eine Box mit dem Logbuxh darüber aufspringen zu lassen o.ä. Da gibt es kaum Grenzen. Aber Eile mit Weile und es ist noch kein Meister vom Himmel gefallen.
Ich finde es jedenfalls ganz große Klasse, wieviel Unterstützung man hier erhält.
Habe mich zusätzlich noch bei Pollux Labs registriert.
 
Zuletzt bearbeitet:
OP
esbrittl

esbrittl

Geocacher
Das Teil blinkt eben (fürs menschliche Auge) nur siebenmal (davon einmal doppelt so lange, nämlich ca. 400 ms), weil das eine Ausschalten nur Mikrosekunden dauert. Es fehlt ein delay(200).

Und ja, eine Schleife verkürzt den Code hier erheblich:

C++:
for (int i=0; i<8; i++){
  digitalWrite (PIN_LED, HIGH);
  delay (200);
  digitalWrite (PIN_LED, LOW);
  delay (200);
}
Habe mich schon gewundert, habe das mit dem delay nicht gesehen Danke schön, dann war es einmal zu viel, wollte ja nur 7
 

schatzi-s

Geowizard
Äh, nicht wirklich, weil zum einen ist in #39 kein Code,
sorry, #37, aendert aber an der Aussage nichts

zum zweiten habe ich fleißig gegoogelt und den gefundenen abgewandelt für meine Bedürfnisse.
abgewandelt oder verstanden? ja, boese Fangfrage ;-)

Der Titel des Postes ist vielleicht irreführend, nein, morsen wollte ich nicht, lediglich siebenmal blinken.

dann ist der Titel nicht nur vielleicht irrefuehrend, sonst haettest du lang lang kurz kurz kurz blinken muessen

blink
Ich vertiefe mich noch mal in das Thema Schleifen. Ist sicher für weitere Projekte von Interesse.
Schleifen und Abfragen machen 99% aller Programme aus. Dass ein Programm wie in Deinem Fall immer sequentiell das Gleiche macht und keine variablen Daten, Eingaben ... verarbeitet ist eher selten

Der Code wird kürzer
darum geht es nicht, er wird lesbarer und wartbarer. Wenn Du nun beschliesst, dass 200ms der falsche Wert sind, musst Du da an X-Stellen aendern.
Grundsatz in der Informatik: Tippe keine Zeile zweimal.

Ergebnis bin ICH MEGA STOLZ.
das ist doch was :)
"Ich finde, Elektronik sollte einen Mehrwert bringen und kein Selbstzweck sein."
Sorry, aber wenn es meinen Zweck erfüllt habe ich doch einen Mehrwert :)
stimmt, so habe ich das nicht gesehen. Ich sah das jetzt aus Cachersicht.
Ich werde das Thema Elektronik doch jetzt nicht fallen lassen...
sollst Du ja auch nicht! Ich (und ich denke die Anderen auch) haben Dir geholfen, weil wir das als Einstieg sehen und hoffen, dass da irgendwann auch mal mehr kommt als ein Blinken. Ich weiss, Deine Kiste ist ein grosser Schritt fuer Dich, schliesslich war alles neu fuer Dich, aber fuer die Cacherwelt ist der Schritt eher ein kleiner ...
und mit der Zeit werden die Codes sicher feiner und ich könnte mir vorstellen eine Box mit dem Logbuxh darüber aufspringen zu lassen o.ä. Da gibt es kaum Grenzen.
oh doch ;-) Aber im Ernst: Fuer mich geht es nicht darum, ob ich eine Box per Knopfdruck erhalte oder sie in einer Asthoehle steckt. Wenn Elektronik, dann moechte ich unterhalten werden, also mir die Box quasi erarbeiten. Wenn ich die Auswahl haette zwischen einem Spiel, dass mir dann entweder die KO oder einen manuellen Schlosscode verraet oder eine Hightec-box, die das Logbuch freilegt, wuerde ich immer das Spiel vorziehen.

Aber Eile mit Weile und es ist noch kein Meister vom Himmel gefallen.
Ich finde es jedenfalls ganz große Klasse, wieviel Unterstützung man hier erhält.
:)
Ich freue mich, dass ich helfen konnte!
Habe mich zusätzlich noch bei Pollux Labs registriert.
Das sind "auch nur" Beispiele, aber keine wirklichen Anleitungen. Auch wenn ich mich wiederhole: Lerne erstmal die Theorie. Ich weiss, das ist langweilig und du willst programmieren. Aber sei gewiss, das bringt mehr Spass, wenn man es kann.

Uebrigens: Das "Problem" gab es schon vor der EDV:
"Ich kann die Axt jetzt nicht schaerfen, ich muss noch so viele Baeume faellen!"
 
OP
esbrittl

esbrittl

Geocacher
Mit einer Schleife waere das nicht passiert ;-)
@ schatzi-s
Ich habe das leider nicht hinbekommen, dazu verstehe ich es noch nicht gut genug, wenn ich das einfüge, meckert er über den Sleep Modus, den ich tatsächlich aus Deinem (schatzi-s) dritte Post herausgelesen habe.

"abgewandelt oder verstanden? ja, boese Fangfrage ;-)"

Ich kann doch nur etwas abwandeln, wenn ich das Prinzip verstehe, sonst stochere ich doch nur blind rum und das macht keinen Spaß weil das Ergebnis dann so schlecht reproduzierbar ist.

"Tippe keine Zeile zweimal."
Auch hier hast Du Recht, bei einer Fehlersuche total ineffektiv.

"Ich weiss, Deine Kiste ist ein grosser Schritt fuer Dich, schliesslich war alles neu fuer Dich, aber fuer die Cacherwelt ist der Schritt eher ein kleiner ..."

Glaube ich eher nicht, denn sooo viele Cacher programmieren anscheinend doch nicht, sondern lassen es tun oder kaufen, (wie einer der Mitforisten in diesem Thread) ist ja auch einfacher.
Und für mich ein großer Schritt, weil ich doch auch schon etwas älter bin und sehr viel um die Ohren habe und ich einfach mir ein Erfolgserlebnis verschafft habe.

Aber Du hast insofern Recht, ich löse gerne ?-Caches, auch von weiter weg, nur um des Rätsels willen, abholen tue ich mir die so gut wie nie.

Ich habe mir noch einen Tiny AVR Programmer bestellt um diese Steckerei vom Arduino zu umgehen, mit dem werde ich dann weiterlernen, blockiere mich aber nicht falls ich noch mal einen ATtiny programmieren will.
Dieser Development Programmer aus einem meiner ersten Posts scheint so etwas zu sein, nur dass man ihm das erst beibringen muss. wenn ich ihn einstecke bekommt mein PC das aber nicht mit, so dass cih nicht einfach einen Treiber installieren kann um ihn anzusprechen. Irgendwer hat das Ding erfolgreich zum Laufen gebracht und der von Dir eingangs erwähnte Development Mini Programmer ist irgendwie sehr ähnlich konstruiert. Bis auf den anderen USB Anschluss und den angebrachten Socket.
Finde ich aber noch raus, es gibt ja noch Sommerferien und Dank Zeitumstellung lange Abende (Jahresabschluß ist durch, ich kann auf der Arbeit schlafen ;-) )
Wenn ich darf, werde ich Dich weiter wegen irgendwelcher Dinge nerven.
Du bist ja Cacher, leider etwas weit weg, (gut für Dich, hihi)

Ich würde auch wahnsinnig gerne so was hier machen:

Agent Chopper und der verlorene Code Rätsel-Geocaches​

GC48F97
Also die Sache mit dem "Büro" (http://www.aspelin.com/agent-z/buero.php)

Kennst Du Dich evtl. auch mit alten 486ern aus?
Habe an meinem Retro-Schätzchen die leere onboard Batterie gegen eine externe getauscht, aber nun muss ich anscheinend mein CD Laufwerk neu hinzufügen. Aber er meckert auch dass er kein operating system findet, obwohl mir im BIOS die Festplatte angezeigt wird. Habe leider keine Disketten , war damals ein Präsent von einem mittlerweile entfernten Bekannten.

Bißchen viel auf einmal?
 
Oben