• Herzlich willkommen im "neuen" DSLR-Forum!

    Wir hoffen, dass Euch das neue Design und die neuen Features gefallen und Ihr Euch schnell zurechtfindet.
    Wir werden wohl alle etwas Zeit brauchen, um uns in die neue Umgebung einzuleben. Auch für uns ist das alles neu.

    Euer DSLR-Forum-Team

  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • DSLR-Forum Fotowettbewerb neu erfunden!
    Nach wochenlanger intensiver Arbeit an der Erneuerung des Formates unseres internen Fotowettbewerbes ist es Frosty als Moderator
    und au lait als Programmierer gelungen, unseren Wettbewerb auf ein völlig neues Level zu heben!
    Lest hier alle Infos zum DSLR-Forum Fotowettbewerb 2.0
    Einen voll funktionsfähigen Demowettbewerb kannst du dir hier ansehen.
  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2024
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien der Eigenmarken "Upscreen", "Brotec", "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs April 2024.
    Thema: "Sprichwörtlich"

    Nur noch bis zum 30.04.2024 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
WERBUNG

Bastelanleitung: Arduino-basierter Lichtschranken-Trigger

Ich habe übrigens nicht den Eindruck, dass mir mein Studium hier je weitergeholfen hätte. War vielleicht auch die falsche Fachrichtung ;)

@xisco:
Gratuliere zur Überwindung der nächsten Hürde. Ich hoffe, Du hast inzwischen auch ein bisschen Spaß am Basteln gefunden. Die ersten Schritte sind getan, der nachfolgende Teil wird wesentlich leichter :)
 
Da taucht schon wieder ein Problem auf. Die Zeiten ließen sich am Anfang wunderbar ändern, später aber nicht mehr und es kommt im unteren Feld des Arduino:

Done uploading
Binary sketch size: 3810 bytes (of a 32256 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

Kann mir dazu jemand helfen?
 
Zuletzt bearbeitet:
PS: Staun !!! Ich habe den Fehler gefunden - der falsche Port war ausgewählt!
 
endlich!...ich bin auch schon so weit dass ich die CrazyMachine-SW ausprobieren kann :)
Ich bin gerade dabei das ganze in ein Gehäuse zu stecken. Da mir noch ein paar Teile fehlen, habe ich mich kurz nur mit den Sensoren gespielt.
Aber es ist ein Problem aufgetreten. Mein Fototransistor lässt sich nicht kalibrieren.

Genauer: der Wert von "sensor_trigger_threshold[SENSOR_ID]" ist immer "0" wenn "treshold" auf weniger als "100%" eingestellt ist. (ich habe mir die Werte auf das Display zeigen lassen) Und auch der Text der eine Kalibrierung bestätigen sollte sind bei mir nur ein paar komische Zeichen (Englisch ausgewählt). Hat wer eine Idee woran es liegen könnte?
 
Da muss ich mal in den Quelltext schauen, um herauszufinden, woran es genau liegt. Klingt aber nach einem Softwareproblem.
Hab leider momentan keine funktionsfähige Lichtschranke hier rumliegen, deswegen ist der ganze Sensor-Teil nicht sonderlich gut getestet in den letzten Versionen.

Welche Software-Version benutzt Du denn?
 
Also den Fehler mit dem falschen Text nach Kalibrierung habe ich gefunden, zumindest für die 0.4beta.

Unter sensor_functions gibt es ganz unten eine Funktion die wie folgt aussieht:
Code:
// Sensorkalibierung
void sensor_calibrate(byte SENSOR_ID) {
  // Variablen für diese Funktion
  unsigned long save_millis = millis();
  // Mittelwert aus vielen Messwerten bilden
  sensor_trigger_threshold[SENSOR_ID] = analogRead(sensor_pin[SENSOR_ID]);
  while (millis() - save_millis < sensor_calibration_time) {
    sensor_current_value[SENSOR_ID] = analogRead(sensor_pin[SENSOR_ID]);
    sensor_trigger_threshold[SENSOR_ID] += sensor_current_value[SENSOR_ID];
    sensor_trigger_threshold[SENSOR_ID] /= 2;
  }
  // Schwellenwert ausrechnen aus durchschnittlichem Messwert und festgelegtem Faktor
  sensor_trigger_threshold[SENSOR_ID] *= sensor_trigger_threshold_percentage[SENSOR_ID] / 100;
  clear_second_line();
  lcd.setCursor(0,1);
  lcd.print(TEXT_SENSORCALIBRATED);
}

Da löscht Du die letzten 3 Zeilen und ersetzt sie durch
Code:
  lcd_print_string(TEXT_SENSORCALIBRATED);

Sprich am Ende sollte die Funktion so aussehen:

Code:
// Sensorkalibierung
void sensor_calibrate(byte SENSOR_ID) {
  // Variablen für diese Funktion
  unsigned long save_millis = millis();
  // Mittelwert aus vielen Messwerten bilden
  sensor_trigger_threshold[SENSOR_ID] = analogRead(sensor_pin[SENSOR_ID]);
  while (millis() - save_millis < sensor_calibration_time) {
    sensor_current_value[SENSOR_ID] = analogRead(sensor_pin[SENSOR_ID]);
    sensor_trigger_threshold[SENSOR_ID] += sensor_current_value[SENSOR_ID];
    sensor_trigger_threshold[SENSOR_ID] /= 2;
  }
  // Schwellenwert ausrechnen aus durchschnittlichem Messwert und festgelegtem Faktor
  sensor_trigger_threshold[SENSOR_ID] *= sensor_trigger_threshold_percentage[SENSOR_ID] / 100;
  lcd_print_string(TEXT_SENSORCALIBRATED);
}

Warum der Sensor allerdings nicht kalibriert wird, habe ich noch nicht nachvollziehen können.
 
Da muss ich mal in den Quelltext schauen, um herauszufinden, woran es genau liegt. Klingt aber nach einem Softwareproblem.
Hab leider momentan keine funktionsfähige Lichtschranke hier rumliegen, deswegen ist der ganze Sensor-Teil nicht sonderlich gut getestet in den letzten Versionen.

Welche Software-Version benutzt Du denn?

Ich habe 0.3 und 0.4 ausprobiert. Bei beiden das gleiche...
Bei 0.3 werden keine "komische Zeichen" angezeigt (eigentlich nichts) und die aktuelle Werte vom Sensor sind viel kleiner (ca. 11 statt ca. 40) bei gleichem Sensorsetup...hmm...jetzt verstehe ich gar nichts...


P.S. Text ist jetzt nach deiner Anleitung i.O. !
 
Zuletzt bearbeitet:
Hm, einen Fehler hab noch gefunden, wobei der noch nicht erklärt, warum Werte unter 100 immer 0 als Schwellenwert ergeben.

Unter default_values müsste der letzte Block geändert werden, die ganzen Nullen in eckigen Klammern müssten Einsen sein. Sprich so:
Code:
// Sensor 1 - Lichtschranke 2
    sensor_type[1] = SENSOR_TYPE_LIGHTBARRIER;
    sensor_use[1] = true;
    sensor_trigger_threshold_percentage[1] = 80;
    sensor_activation_mode[1] = BELOW_THRESHOLD;

Jetzt schaue ich mir die Formel für die Schwellenwertberechnung nochmal genau an, kann mir eigentlich nur vorstellen, dass es da Probleme mit dem Datentyp gibt, der nicht mit Brüchen umgehen kann. Ich melde mich nochmal.

EDIT: Hab den Fehler in der Kalibrierung gefunden. In der Kalibierungsfunktion muss eine Zeile geändert werden.
Code:
  sensor_trigger_threshold[SENSOR_ID] *= sensor_trigger_threshold_percentage[SENSOR_ID] / 100;
in
Code:
  sensor_trigger_threshold[SENSOR_ID] = sensor_trigger_threshold[SENSOR_ID] * sensor_trigger_threshold_percentage[SENSOR_ID] / 100;
Das hat das Problem zumindest bei mir im Testprogramm behoben. Probiers mal aus und poste, wenn es funktioniert. Eigentlich hätte das *= auch funktionieren sollen, aber vielleicht habe ich da auch einen Denkfehler drin.
 
Zuletzt bearbeitet:
Hallo Zusammen!

Nachdem ich endlich mein KeyPad mit LCD bekommen hab und den Code aufgespielt habe, stehe ich nun vor dem Problem der Verkabelung.
Ich habe laut Niggoh mehrere Ein/Ausgänge bzw. Aus/Sensorports.
Wie deklariere ich was an welchem Pin hängt?

Über eine Hilfe wäre ich dankbar!


Grüße Dino86
 
Hatte noch einen gravierenden Fehler in der letzten Beta, der ist jetzt korrigiert. Außerdem befindet sich die Menübibliothek jetzt mit in der zip-Datei und muss nicht separat heruntergeladen werden.

Zu Deiner Sensorfrage:

Es gibt zwei Zeilen, in denen Du die Sensor-Pins anpassen kannst.
Code:
  const byte sensor_pin[MAX_SENSOR_COUNT] = {A6, A5}; // Pins für Sensoren
und
Code:
  const byte sensor_pin[MAX_SENSOR_COUNT] = {A1, A2, A3, A4}; // Pins für Sensoren
Die erste ist falls Du die Platine von Hoekri nutzt (und die Zeile #define USE_NANO_PCB nicht mehr auskommentiert hast), die andere ist für die Eigenbauten ausgelegt. Einfach Deine Sensorpins in der Reihenfolge eintragen, wie Du sie haben willst, dabei bitte die maximale Sensorzahl (über MAX_SENSOR_COUNT festgelegt) beachten.
Bei Problemen bitte einfach nochmal melden.
 
Vielen Dank für dein Antwort,
Bei den Sensoren gibt es ja nicht viel Möglickeiten...

Wie sieht es mit den Ausgängen aus?
Hier Haben wir ja diese Zeile dafür:
Code:
  const byte device_pin[MAX_DEVICE_COUNT] = {13, 12, 11, 3, 2, 1, 0, A5}; // Pins für Geräte

Wie kann ich nun sagen das z.b. an Pin 13 die Kamera hängt und an Pin 12 und 11 der Blitz und an pin 3,2,1 die Ventile.

Bin iwie noch ned so ganz dahintergestiegen.
 
Das kannst Du über das Menü festlegen. Einfach ins Geräte-Menü, Geräte-ID auswählen, Gerätetyp auswählen, etc. Die Geräte-IDs werden in der gleichen Reihenfolge wie die Pins vergeben, d.h. ID 0 hängt an Pin 13, ID 1 an Pin 12, usw.
 
Das sind in dieser Reihenfolge die Geräte 0 bis 7.

In der Default-Einstellung ist 13 Autofocus, 12 Shutter, dann 11 und 3 für jeweils einen Blitz und Pin 2, 1 und 0 für Magnetventile. Die restlichen zwei sind nicht belegt.

Wie gesagt kannst Du die Zuordnung bei Bedarf im Menü ändern.

fG Ralf

EDIT: war ich zu langsam;)
 
Nachdem ich zunächst ein kaputtes Arduino-Nano aus Hong Kong geschickt bekommen hatte, habe ich jetzt für den doppelten Preis bei einem Händler aus Deutschland ein Heiles bekommen. Allerdings hat der aus Fernost noch Nachbesserung versprochen, ich hatte nur keine Lust, wieder zwei Wochen auf die Post zu warten.
Ralfs Platine funktioniert bestens, ich bin äußerst begeistert! Hab nur leider momentan keine Zeit, meine Tropfenmaschine aufzubauen.
 
Herzlichen Dank für die Blumen!
Ich habe mir auch eine zusammen gebaut:lol:, Zeit zum Tropfen finde ich momentan leider auch nicht.
Konstruktive Rückmeldungen sind jederzeit willkommen, wenn jemand Probleme beim Aufbauen hat, einfach fragen!

fG Ralf
 
Ich habe irgendwie einen Löt und Denkfehler.
Programm lädt ohne Probleme hoch, allerdings reagiert es nicht auf Tastendrücke... also Werte auslesen.
Jetzt das komische:
Nichts gedrückt 1023
Hoch 1017
Runter 1022
Links 1023
Rechts 30 und Display dunkel
Select 1023

Widerstandswerte sind alle korrekt... wenn ich die Taster kurzschliesse, selbes Spiel... k.A.
Wird wohl noch mal einen Lötstunde heute abend ;-)
Sollte jemand eine Idee haben - immer her damit
 
Verfolge mal die Anschlüsse von Taste rechts, sieht nach einer Lötzinnbrücke aus (Display dunkel-Kurzschluss)

Edit: Taste "Right " ist mit 0V und Arduino-Pin verbunden, direkt daneben liegt 5V am Arduino. Da würde ich zuerst mal schauen.
 
Zuletzt bearbeitet:
WERBUNG
Zurück
Oben Unten