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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Laserlichtschranke mit Arduino UNO
03.09.2015, 15:34 (Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2015 15:57 von Rossy.)
Beitrag #17
RE: Laserlichtschranke mit Arduino UNO
So das Magnetventil arbeitet und die Kamera löst aus passt also.
Hier mal ein Bild auf die schnelle.
[Bild: 7989fe-1441292951.jpg]


Code:
// Piezo
const int buzzerPin = 12;          // Anschluss des Piezos an den Arduino

// Lichtschranke
#define LDR 0                      // Anschluss der Lichtschranke an den Arduino
#define SCHALTER1 10               // Anschluss des Transistors Magnetventil an den Arduino
#define SCHALTER2 9                // Anschluss des Transistors Fernauslöser

int helligkeitsgrenze = 650;       // Bestimmt ab welcher Helligkeit ausgelöst wird

// Einstellungen
int wartezeit =415;

void setup() {
  // Serial.begin( 9600 );
  pinMode(SCHALTER1, OUTPUT);       // Schalter 1 Mosfet als Output
  digitalWrite(SCHALTER1, LOW);     // Schalter 1 Mosfet in Ruhestellung geschlossen
  pinMode(SCHALTER2, OUTPUT);       // Schalter 2 Transistor als Output
  digitalWrite(SCHALTER2, LOW);     // Schalter 2 Transitor in Ruhestellung geschlossen
  tone(buzzerPin, 440, 500);        // Pizo ertönt bein Starten
  delay(500);                       // Wartezeit 500 ms
}

void loop() {
  // Licht erkennen
  int licht = analogRead( LDR );    
  //Serial.write ( licht );
  if (licht < helligkeitsgrenze) {  
    tone(buzzerPin, 440, 200);      // Pizo ertönt bein unterbrechen der Lichtschranke
    // Warte und schalte dann den Schalter ein
  
    digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet
    delay( 50 );                     // Magentventil ist 50ms offen
    digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt
    delay(wartezeit);                // Wartezeit bis die Kamera auslöst aktuell 415ms
    digitalWrite(SCHALTER2, HIGH);   // Kamera löst aus
    delay( 500 );                    // Wartezeit 500ms
    digitalWrite(SCHALTER2, LOW);    // Fernausöser Kamera stoppt
  }
}


Jetzt würde ich gerne, dass das Magnetventil nochmal auslöst.
Ich hab das jetzt so Programiert, aber das Magnetventil löst leider immer nur einmal aus. Jemand eine Idee wo der Fehler ist??


Code:
// Piezo
const int buzzerPin = 12;          // Anschluss des Piezos an den Arduino

// Lichtschranke
#define LDR 0                      // Anschluss der Lichtschranke an den Arduino
#define SCHALTER1 10               // Anschluss des Transistors Magnetventil an den Arduino
#define SCHALTER2 9                // Anschluss des Transistors Fernauslöser

int helligkeitsgrenze = 650;       // Bestimmt ab welcher Helligkeit ausgelöst wird

// Einstellungen
int wartezeit =415;

void setup() {
  // Serial.begin( 9600 );
  pinMode(SCHALTER1, OUTPUT);       // Schalter 1 Mosfet als Output
  digitalWrite(SCHALTER1, LOW);     // Schalter 1 Mosfet in Ruhestellung geschlossen
  pinMode(SCHALTER2, OUTPUT);       // Schalter 2 Transistor als Output
  digitalWrite(SCHALTER2, LOW);     // Schalter 2 Transitor in Ruhestellung geschlossen
  tone(buzzerPin, 440, 500);        // Pizo ertönt bein Starten
  delay(500);                       // Wartezeit 500 ms
}

void loop() {
  // Licht erkennen
  int licht = analogRead( LDR );    
  //Serial.write ( licht );
  if (licht < helligkeitsgrenze) {  
    tone(buzzerPin, 440, 200);      // Pizo ertönt bein unterbrechen der Lichtschranke
    // Warte und schalte dann den Schalter ein
  
    digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet
    delay( 50 );                     // Magentventil ist 50ms offen
    digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt
  
    digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet
    delay( 50 );                     // Magentventil ist 50ms offen
    digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt
  
    delay(wartezeit);                // Wartezeit bis die Kamera auslöst aktuell 415ms
    digitalWrite(SCHALTER2, HIGH);   // Kamera löst aus
    delay( 500 );                    // Wartezeit 500ms
    digitalWrite(SCHALTER2, LOW);    // Fernausöser Kamera stoppt
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2015, 15:59 (Dieser Beitrag wurde zuletzt bearbeitet: 03.09.2015 16:12 von hotsystems.)
Beitrag #18
RE: Laserlichtschranke mit Arduino UNO
Das erkennt er als eine Steuerung:

Code:
digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet
     delay( 50 );                     // Magentventil ist 50ms offen
     digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt

>>Hier ein weiteres delay
    
     digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet
     delay( 50 );                     // Magentventil ist 50ms offen
     digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt

Da musst du zwischen die beiden eine Pause (delay) einbringen.
Wenn das so reicht, ist es ok, sonst müssen wir noch etwas ändern.

Edit:

Das Bild sieht super aus.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2015, 16:12
Beitrag #19
RE: Laserlichtschranke mit Arduino UNO
Bin mir nicht 100% sicher aber ich glaube hatte ich probiert, wenn ich mich richtig erinnere hatte ich ein delay ( 5 ), aber ich werd es nochmal testen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2015, 16:26
Beitrag #20
RE: Laserlichtschranke mit Arduino UNO
(03.09.2015 16:12)Rossy schrieb:  Bin mir nicht 100% sicher aber ich glaube hatte ich probiert, wenn ich mich richtig erinnere hatte ich ein delay ( 5 ), aber ich werd es nochmal testen.

Das ist zu klein, dafür ist das Magnetventil zu träge.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2015, 20:01
Beitrag #21
RE: Laserlichtschranke mit Arduino UNO
Habs nochmal etwas angepasst: Damit kommen zwei Tropfen.
Jetzt heist es probieren damit sich zwei tropfen treffen.

Code:
// Piezo
const int buzzerPin = 12;          // Anschluss des Piezos an den Arduino

// Lichtschranke
#define LDR 0                      // Anschluss der Lichtschranke an den Arduino
#define SCHALTER1 10               // Anschluss des Transistors Magnetventil an den Arduino
#define SCHALTER2 9                // Anschluss des Transistors Fernauslöser

int helligkeitsgrenze = 650;       // Bestimmt ab welcher Helligkeit ausgelöst wird

// Einstellungen                    
int wartezeit =350;                // Wartezeit ab wann die Kamera auslöst in ms  
int Magnetventil_offen =50;        // Zeit wie lange das Magnetventil offen ist in ms
int Magnetventil_zu =40;           // Zeit wie lange das Magnetventil geschlossen ist in ms
int Magnetventil_offen2 =50;       // Zeit wie lange das Magnetventil das zweite mal offen ist in ms


void setup() {
  // Serial.begin( 9600 );
  pinMode(SCHALTER1, OUTPUT);       // Schalter 1 Mosfet als Output
  digitalWrite(SCHALTER1, LOW);     // Schalter 1 Mosfet in Ruhestellung geschlossen
  pinMode(SCHALTER2, OUTPUT);       // Schalter 2 Transistor als Output
  digitalWrite(SCHALTER2, LOW);     // Schalter 2 Transitor in Ruhestellung geschlossen
  tone(buzzerPin, 440, 500);        // Pizo ertönt bein Starten
  delay(500);                       // Wartezeit 500 ms
}

void loop() {
  // Licht erkennen
  int licht = analogRead( LDR );    
  //Serial.write ( licht );
  if (licht < helligkeitsgrenze) {  
    tone(buzzerPin, 440, 200);      // Pizo ertönt bein unterbrechen der Lichtschranke
    // Warte und schalte dann den Schalter ein
  
    digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet das erste mal
    delay( Magnetventil_offen );     // Magentventil ist aktuel 50ms offen
    digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt das erste mal
    delay( Magnetventil_zu  );       // Wartezeit Magnetventil schließt
    digitalWrite(SCHALTER1, HIGH);   // Magnetventil öffnet das zweite mal
    delay( Magnetventil_offen2 );    // Magentventil ist offen
    digitalWrite(SCHALTER1, LOW);    // Magnetventil schließt das zweite mal
    delay(wartezeit);                // Wartezeit bis die Kamera auslöst aktuell 350ms
    digitalWrite(SCHALTER2, HIGH);   // Kamera löst aus
    delay( 500 );                    // Wartezeit 500ms
    digitalWrite(SCHALTER2, LOW);    // Fernausöser Kamera stoppt
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.09.2015, 21:19
Beitrag #22
RE: Laserlichtschranke mit Arduino UNO
Ja, prima. Dann weiterhin viel Erfolg.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.09.2015, 08:52
Beitrag #23
RE: Laserlichtschranke mit Arduino UNO
Immer wenn eine Herausforderung gemeistert worden ist kommt eine neue. Im Forum und im Internet hab ich gelesen, das eine Wartezeit mit (Delay) nicht so glücklich ist.
Ich hab mir Blink ohne Delay hier: http://playground.arduino.cc/Learning/Bl...outDelayDe durchgelesen werde aber nicht so richtig schlau draus. Wie kann ich das bei mir verwirklichen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.09.2015, 09:09
Beitrag #24
RE: Laserlichtschranke mit Arduino UNO
(04.09.2015 08:52)Rossy schrieb:  Immer wenn eine Herausforderung gemeistert worden ist kommt eine neue. Im Forum und im Internet hab ich gelesen, das eine Wartezeit mit (Delay) nicht so glücklich ist.
Ich hab mir Blink ohne Delay hier: http://playground.arduino.cc/Learning/Bl...outDelayDe durchgelesen werde aber nicht so richtig schlau draus. Wie kann ich das bei mir verwirklichen?

Wenn du nur kurze delays in deinem Sketch hast und während dieser Zeit nichts anderes vom Programm erledigen lässt, ist es nicht dringend notwendig "millis" einzusetzen.

Es macht aber durchaus Sinn, sich damit zu beschäftigen.

Für deine kurzen delays ist es aber einfacher, wenn du mit "SimpleTimer" arbeitest. Das ist deutlich einfacher und effektiver.

Beschreibung:
http://playground.arduino.cc/Code/SimpleTimer

Download:
https://github.com/jfturcot/SimpleTimer

SimpleTimer wird als Funktion aufgerufen und kann ähnlich wie delay angesprochen werden.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.517 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


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