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
Arduino HC-SR04 Interrupt
24.04.2015, 09:25
Beitrag #1
Arduino HC-SR04 Interrupt
Hi, kleines Problem und bräuchte Hilfe!
Ich habe ein kleines laufende Programm und möchte mit Hilfe eines
HC-SR04 Ultraschallsensor das laufende Programm stoppen, ein kleines
Unterprogramm ablaufen lassen und zum Hauptprogramm zurückkehren.
Der Sensor muss mit ein Triggersignal dauerhaft gespeist werden und auf
das Echosignal über die Interrupts reagieren. Im Hauptprogramm blinkt
eine LED1 und wenn man sich dem Sensor nährt soll das Hauptprogramm
unterbrochen werden und ein Unterprogram, z.B. LED2 blinken, gestartet
werden. So lange wie ich den Sensor aktiviere.
Ich habe keine leise Idee wie ich das anstellen kann.
Ich habe mal den Code mit beigefügt und hoffe auf hilfe.

Code:
int pin = 13;
int pin1 = 8;
volatile int state = LOW;

void setup()
{
   pinMode(pin, OUTPUT);
   pinMode(pin1, OUTPUT);
   attachInterrupt(0, blink, CHANGE);
}

void loop()
{
   digitalWrite(pin, HIGH);
   delay(1000);
   digitalWrite(pin, LOW);
   delay(1000);
}

void blink()
{
   state = !state;
   if (state == HIGH)
   {
     digitalWrite(pin1, HIGH);
   }
   else {
     digitalWrite(pin1, LOW);
   }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 09:41
Beitrag #2
RE: Arduino HC-SR04 Interrupt
Hi,
als allererstes würde ich an Deiner Stelle mal die delays loswerden. Schau Dir mal "blink without delay" an. Damit kannst Du dann neben dem Geblinke auch noch den Sensor speisen und darauf reagieren. Erstmal auch ganz ohne Interrupts.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 10:31
Beitrag #3
RE: Arduino HC-SR04 Interrupt
Ich habe den Code jetzt so verändert das das mit dem Delay raus ist. War halt so in den Beispielen halt immer erklärt worden. Wie kann ich das nmit dem Sensor verbinden! So das der Schalter halt weg ist und über den Ultraschallsensor gesteuert wird?

Code:
byte ledPin = 13;                  
boolean value = LOW;                  
unsigned long previousMillis = 0;
unsigned long interval = 1000;
int pin1 = 8;
volatile int state = LOW;

void setup()
{
   pinMode(ledPin, OUTPUT);
   pinMode(pin1, OUTPUT);
   attachInterrupt(0, blink, CHANGE);
}

void loop()
{
   if (millis() - previousMillis > interval) {
   previousMillis = millis();
   value = !value;
   digitalWrite(ledPin, value);
}
}
void blink()
{
   state = !state;
   if (state == HIGH)
   {        
     digitalWrite(pin1, HIGH);  
   }
   else {
     digitalWrite(pin1, LOW);
   }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 11:09
Beitrag #4
RE: Arduino HC-SR04 Interrupt
Hi,
na, jetzt kannst Du in loop() vor der millis-Abfrage noch den Ping senden. Ich glaube, das mit den Ultraschallsensoren geht dann so, dass Du Dir mit micros() die momentane Zeit merkst und in der Interrupt-Routine die seit dem Ping vergangene Zeit misst. Das stellst Du dann in eine globale Variable (volatile nicht vergessen), die Du auch in loop() abfragst.
Dazu muss dann wahrscheinlich noch irgendwas mit rein, dass den Fall behandelt, wenn der Ping gar nicht zurück kommt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 11:30
Beitrag #5
RE: Arduino HC-SR04 Interrupt
Schon mal Danke für die Tipps, aber ganz ehrlich, ich kann mir nichts darunter vorstellen wie das gehen soll.
Ich probiere schon eine ganz rum und schaue ob es Beispiele im Netz gibt. Komme aber nicht wirklich weiter.

Das das gehen wird, ist mir klar nur wie? Mit dem Sensor eine LED anmachen geht auch schon.
Nur halt nicht als Unterbrechung des Hauptprogramms. Denn es muss ja Dauernd ein Triggersignal gesendet werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 11:44
Beitrag #6
RE: Arduino HC-SR04 Interrupt
Hi,
@Lehmann, ähm ich kann in deinem Code keine Stelle finden wo du den Ultraschalli einlesen tust...also bislang machte man das so:
Code:
digitalWrite(triggerport, HIGH);
digtialWrite(triggerport, LOW);  // Triggerimpuls erzeugt
laufzeit = pulseIn(messpin, HIGH, 20000); //  Ausgangssignal vom 04, High Pegel messen, Timeout wo die Messzeit begrenzt
und dann mußte noch aus der Laufzeit den Abstand berechnen 1 sec = ~330 Meter
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 11:58
Beitrag #7
RE: Arduino HC-SR04 Interrupt
Im jetzigen Code ist noch nichts mit dem Sensor geschrieben. Das Programm mit dem ich getestet habe,
arbeitet zur zeit noch mit einem Schalter als Unterbrecher (Interrupt).
Das Triggersignal mit
digitalWrite(triggerport, HIGH);
digtialWrite(triggerport, LOW);
müsste dann im Loop() rein
und das laufzeit = pulseIn(messpin, HIGH, 20000); blink() rein???
So wie es Thorsten Pferdekämper angedeutet hat???
Nur wie merkt er dann das es eine Änderung gab und das Interrupt setzt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.04.2015, 15:25
Beitrag #8
RE: Arduino HC-SR04 Interrupt
Hi,
zeig doch mal das Coding, mit dem Du den Sensor abfragst und die LED leuchten lässt. Dann sehen wir mal, ob man das integrieren kann.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Kettenoeler = EEPROM, serielle Kommunikation, externer Interrupt anwo 0 712 19.01.2016 12:21
Letzter Beitrag: anwo
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.511 02.02.2014 07:59
Letzter Beitrag: Ikearegal

Gehe zu:


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