INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Kamera Blitz Signal für Steppermotor
31.01.2021, 10:42
Beitrag #9
RE: Kamera Blitz Signal für Steppermotor
Glaube Lösung gefunden zu haben: "Interrupt"

Code:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
volatile int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
   Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  // Attach an interrupt to the ISR vector
  attachInterrupt(0, pin_ISR, CHANGE);
}

void loop() {
  // Nothing here!
}

void pin_ISR() {
  buttonState = digitalRead(buttonPin);
  digitalWrite(ledPin, buttonState);
  Serial.println(buttonPin);
}

Nun wird ein Wert ausgegeben.

LG Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2021, 14:12
Beitrag #10
RE: Kamera Blitz Signal für Steppermotor
Hallo Stephan,
schön dass es so funktioniert. Aber wenn du das Programm wie im Eingangspost beschrieben erweitern willst bekommst du Probleme.
Du solltest in der Interruptroutine lediglich eine Variable setzen und nicht auch noch weitere Aufgaben darin unter bringen.
In loop() fragst du dann die Variable ab, schaltest die LED entsprechend, machst die serielle Ausgabe und setzt die Variable anschließend wieder zurück.
Es ist auch ungünstig attachInterrupt(0, pin_ISR, CHANGE); zu verwenden.
CHANGE löst bei jedem Flankenwechsel einen Interrupt aus. Also einmal wenn das Signal vom Blitz kommt und einmal wenn es weggeht.
Besser wäre attachInterrupt(0, pin_ISR, RISING); oder attachInterrupt(0, pin_ISR, FALLING); je nachdem wie der Interruptpin beschaltet ist und der Ruhepegel an diesem Anschluss ist.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2021, 14:59
Beitrag #11
RE: Kamera Blitz Signal für Steppermotor
Hast du GND der Cam mit dem Arduino verbunden?

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2021, 20:03
Beitrag #12
RE: Kamera Blitz Signal für Steppermotor
Danke für die Anregungen und Hilfen.

Die nächste Aufgabe ist, den Sketch für den Slider oder den Panoramateller über die Kamera zu steuern, die ihrerseits mit RAWOPINT.LUA von CHDK gesteuert wird.

Dazu brauche ich noch ein wenig "Lockdown" Big Grin

LG Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2021, 22:30
Beitrag #13
RE: Kamera Blitz Signal für Steppermotor
(31.01.2021 20:03)Stephan123 schrieb:  Danke für die Anregungen und Hilfen.

Und, läuft das mit dem Blitzschuh jetzt?

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.02.2021, 08:38
Beitrag #14
RE: Kamera Blitz Signal für Steppermotor
Ja ich kann das Signal auslesen. Damit 100% Fortschritt.

Da ich eigentlich vom Programmieren keine Ahnung habe, taste ich mich Schritt für Schritt an einen brauchbaren Sketch heran.

1. Schritt: Mit "void pin_ISR() usw. " näher Bekanntschaft zu machen.
2. Schritt: Sketch Grundgedanke ausarbeiten
3. Schritt: Das Alles auch noch lauffähig zu programmieren.

Der Grundgedanke sprießt schon:

Master ist das Programm RAWOPINT.LUA in der CANON G1x.
Das Programm ist ideal insbesondere für timelapse Tag/Nacht Übergänge.

Über "Interval" z.B. 10 Sec iVm "Shots" z.B. 900 kommt eine Beobachtungsdauer von 9000 Sec = 2,5 Std heraus. Das reicht gut für einen Sonnenuntergang und kann ja frei variiert werden.

Der Stepper macht 1,8 Grad pro Step oder bei 1/8 Step 0,45 Grad. 120 Grad dürfte jedenfalls mal reichen, um der Sonne/Mond/Milchstraße gut hinterher zu wandern. 3 Bilder pro Step = 266 Steps = etwa 120 Grad.

Ist doch ganz OK oder.

Wenn jemand einen paar Vorschläge hat; lese ich immer gerne UND

wenn jemand ein paar Zeilen Programm mit schreiben will: immer!

LG Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2021, 19:21
Beitrag #15
RE: Kamera Blitz Signal für Steppermotor
OK,

jetzt löst die CANON, laufend unter CHDK Programmen, zuverlässig den Stepper aus.

Hier mein letzter Sketch:

Code:
/*Example sketch to control a stepper motor with A4988 stepper motor driver, AccelStepper library and Arduino: number of steps or revolutions. More info: https://www.makerguides.com */
// Include the AccelStepper library:
#include <AccelStepper.h>
// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:
#define dirPin 5
#define stepPin 6
#define motorInterfaceType 1
// Create a new instance of the AccelStepper class:
AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

int interruptPin = 2;
const int ledPin =  13;
volatile int buttonState = 0;  

int counter;
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time;


void setup() {
  Serial.begin(9600);
  stepper.setMaxSpeed(1000);
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), interrupt_call, RISING);
            }

void loop() {
  counter++;  
        Serial.println(counter);
  buttonState = digitalRead(interruptPin);
  digitalWrite(ledPin, buttonState);
       Serial.println(buttonState);
  delay(1000);
  buttonState = buttonState -1;
       Serial.println(buttonState);
  digitalWrite(ledPin, buttonState);
  if (counter >= 50)
  counter =0;    
          }


void interrupt_call() {  
   interrupt_time = millis();
   if (interrupt_time - last_interrupt_time > 550) {//if interrupt comes faster than 550ms, ignore it
      Serial.print("InterruptPin   ");
      Serial.println(buttonState);  
   last_interrupt_time = interrupt_time;              
      stepper.setSpeed(1000);
      stepper.runSpeed();    
      delay(1000);
                                  
                      }
         }

Der Sketch funktioniert. Das ist zunächst mal das Wichtigste.

Wehmutstropfen. Die LED schaltet so nicht. Ändere ich den Sketch, funktioniert die Auslösung nicht.
Oder: Wechsle ich von RISING zu FALLING ist der Ausgabewert plötzlich 0 statt 1

M.E. liegt das am Zusammenspiel von void loop und interrupt.

Irgendwie unterscheiden sich wohl die Auslesewerte (laienhaft formuliert). Da habe ich wohl was grundlegendes noch nicht verstanden.

Aber, wie gesagt, der Stepper dreht zuverlässig step by step.

LG step han

Ev. hat jemand eine Idee.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2021, 19:33
Beitrag #16
RE: Kamera Blitz Signal für Steppermotor
Du hast Buttonstate volatile deklariert, benutzt ihn aber im Interrupt nicht wirklich - in dem Sinne, dass Du ihn veränderst.
Serial und delay haben in einer ISR nichts zu suchen, ob die Steuerung des Steppers dort gut ist, ist strittig.
Es funktioniert, aber wohl eher zufällig.
Wenn Du buttonstate in der ISR setzen willst (was eigentlich wohl Deine Intention war), dann mache es boolean oder byte, nicht int.
Es geht anscheinend auch ohne Interrupt, da der nichts sinnvolles im Sinne eines Interrupt macht.
Setze in interrupt_call() den Buttonstate, wenn Du Interrupt nutzen willst und mache alles andere abhängig davon im loop.
Das wäre zumindest mein Vorgehen.

Also wenn Du daran weiter arbeiten willst. CHDC ist übrigens schön. Ich habe da mal eine Weile mit meiner A700 powershot damit gearbeitet.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  RC-Signal mit Attiny85 einlesen chcs 4 551 08.12.2020 08:51
Letzter Beitrag: hotsystems
  Kamera Slider mit kleinen Problemen Giuseppe 12 1.962 25.07.2020 13:49
Letzter Beitrag: MicroBahner
  Auto mit Kamera über Bluetooth gnagfloW 4 1.199 19.06.2020 08:23
Letzter Beitrag: gnagfloW
  negatives Signal an analogem Eingang flint74 2 1.189 23.03.2019 23:01
Letzter Beitrag: Tommy56
  Differenz untereinander gestaffelter Werte an Steppermotor vermitteln Snekels 3 1.261 22.10.2018 12:34
Letzter Beitrag: Tommy56
  Arduino/Nano 3 Phasen Signal PWM erzeugen nuernie88 10 5.912 04.07.2017 19:26
Letzter Beitrag: Franz54
  IR Signal Clonen/auswerten raubein01 6 3.432 23.04.2017 02:05
Letzter Beitrag: uxomm
  Steppermotor Frankeg 1 2.132 27.01.2017 22:46
Letzter Beitrag: Tommy56
  PWM Signal imitieren Marc2014 5 2.168 15.10.2016 11:34
Letzter Beitrag: Binatone
  PWM-Signal Ben-g 9 4.557 21.04.2016 13:09
Letzter Beitrag: Ben-g

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste