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 - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Frage zu Interrupts
17.02.2014, 08:44
Beitrag #1
Frage zu Interrupts
Hallo,

Suche Hilfe bei meinem Projekt.
Ich möchte mit einem Poti den Programablauf für einen Motor steuern.
Also ständig den Wert des Potis auslesen und dann zu den verschiedenen
Funktionen springen.
Kann ich das mit einem Interrupt bewerkstelligen?
zb wenn Poti Wert zwischen 10 + 50 springe zu funktion
if (poti>=10 && poti <=50)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);
oder wenn wenn Poti Wert zwischen 100 + 150 springe zu funktion
if (poti>=100 && poti <=150)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

usw.
wie kann ich das umsetzen ? ist ein interrupt die richtige vogehensweise?
wie sage ich dem Interrupt wo er hin springen soll?
danke für eure Hilfe.

mein angefangener code:

#include "DualVNH5019MotorShield.h"
DualVNH5019MotorShield md;

int poti = 0;
int V =200; //verzögerung motorlauf

void setup(){
md.init();
poti = analogRead(2);
attachInterrupt(2, FUNCTION, change)
}

void loop()
{
if (poti>=2 &&poti <=50)
md.setM1Speed(50);
delay(V);
md.setM1Speed(400);
delay(V);

if (poti>=51 &&poti <=99)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

if (poti>=100 &&poti <=150)
md.setM1Speed(200);
delay(V);
md.setM1Speed(100);
delay(V);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2014, 09:14
Beitrag #2
RE: Frage zu Interrupts
(17.02.2014 08:44)schnutzkurt schrieb:  Hallo,

Suche Hilfe bei meinem Projekt.
Ich möchte mit einem Poti den Programablauf für einen Motor steuern.
Also ständig den Wert des Potis auslesen und dann zu den verschiedenen
Funktionen springen.
Kann ich das mit einem Interrupt bewerkstelligen?
zb wenn Poti Wert zwischen 10 + 50 springe zu funktion
if (poti>=10 && poti <=50)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);
oder wenn wenn Poti Wert zwischen 100 + 150 springe zu funktion
if (poti>=100 && poti <=150)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

usw.
wie kann ich das umsetzen ? ist ein interrupt die richtige vogehensweise?
wie sage ich dem Interrupt wo er hin springen soll?
danke für eure Hilfe.

mein angefangener code:

#include "DualVNH5019MotorShield.h"
DualVNH5019MotorShield md;

int poti = 0;
int V =200; //verzögerung motorlauf

void setup(){
md.init();
poti = analogRead(2);
attachInterrupt(2, FUNCTION, change)
}

void loop()
{
if (poti>=2 &&poti <=50)
md.setM1Speed(50);
delay(V);
md.setM1Speed(400);
delay(V);

if (poti>=51 &&poti <=99)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

if (poti>=100 &&poti <=150)
md.setM1Speed(200);
delay(V);
md.setM1Speed(100);
delay(V);
}

...also mal grundsätzliches, ein Interrupt ist ein Event-Eingang rein Digital orientiert. Das Poti benötigt einen Analog-Eingang. Wie du siehst passt das nicht wirklich zusammen. Also bleibt dir nur übrig den ADC zyklisch abzufragen und dann je nach Wert mit if/els/case etc. eine Verzeigung zu machen was nun zu tun ist.
Eine andere Idee wäre, wobei ich mir nicht sicher bin ob das unter Arduino so geht, einen Timer laufen zu lassen der zyklisch einen Interrupt auslöst der dann den ADC abruft und dann die Verzweigung macht was dann aber schon wieder kritisch ist weil du den Stack manipulieren mußt das der nicht überläuft... in Assembler sicherlich kein Problem...wohl aber unter der Azu-IDE.
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
17.02.2014, 10:10
Beitrag #3
RE: Frage zu Interrupts
(17.02.2014 09:14)Bitklopfer schrieb:  
(17.02.2014 08:44)schnutzkurt schrieb:  Hallo,

Suche Hilfe bei meinem Projekt.
Ich möchte mit einem Poti den Programablauf für einen Motor steuern.
Also ständig den Wert des Potis auslesen und dann zu den verschiedenen
Funktionen springen.
Kann ich das mit einem Interrupt bewerkstelligen?
zb wenn Poti Wert zwischen 10 + 50 springe zu funktion
if (poti>=10 && poti <=50)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);
oder wenn wenn Poti Wert zwischen 100 + 150 springe zu funktion
if (poti>=100 && poti <=150)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

usw.
wie kann ich das umsetzen ? ist ein interrupt die richtige vogehensweise?
wie sage ich dem Interrupt wo er hin springen soll?
danke für eure Hilfe.

mein angefangener code:

#include "DualVNH5019MotorShield.h"
DualVNH5019MotorShield md;

int poti = 0;
int V =200; //verzögerung motorlauf

void setup(){
md.init();
poti = analogRead(2);
attachInterrupt(2, FUNCTION, change)
}

void loop()
{
if (poti>=2 &&poti <=50)
md.setM1Speed(50);
delay(V);
md.setM1Speed(400);
delay(V);

if (poti>=51 &&poti <=99)
md.setM1Speed(100);
delay(V);
md.setM1Speed(300);
delay(V);

if (poti>=100 &&poti <=150)
md.setM1Speed(200);
delay(V);
md.setM1Speed(100);
delay(V);
}

...also mal grundsätzliches, ein Interrupt ist ein Event-Eingang rein Digital orientiert. Das Poti benötigt einen Analog-Eingang. Wie du siehst passt das nicht wirklich zusammen. Also bleibt dir nur übrig den ADC zyklisch abzufragen und dann je nach Wert mit if/els/case etc. eine Verzeigung zu machen was nun zu tun ist.
Eine andere Idee wäre, wobei ich mir nicht sicher bin ob das unter Arduino so geht, einen Timer laufen zu lassen der zyklisch einen Interrupt auslöst der dann den ADC abruft und dann die Verzweigung macht was dann aber schon wieder kritisch ist weil du den Stack manipulieren mußt das der nicht überläuft... in Assembler sicherlich kein Problem...wohl aber unter der Azu-IDE.
lg
bk

Hallo bk
danke für deine Antwort!

wäre es nicht möglich wenn ich den Poti verändere die Spannung einmal als 0 od.1 umzuwandeln das löst den Interrupt aus der dann die richtige Spannung ausliest und
zum passenden Code geht?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.02.2014, 10:47
Beitrag #4
RE: Frage zu Interrupts
...
Zitat:Hallo bk
danke für deine Antwort!

wäre es nicht möglich wenn ich den Poti verändere die Spannung einmal als 0 od.1 umzuwandeln das löst den Interrupt aus der dann die richtige Spannung ausliest und
zum passenden Code geht?

Nein. s.o.

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP8266 ESP12-E Webserver-Frage Claus_M 8 254 14.11.2016 22:02
Letzter Beitrag: Claus_M
  NRF24L01 Packet / Msg Frage Marc2014 5 123 07.11.2016 18:08
Letzter Beitrag: hotsystems
  Frage zur Programmierung eines Ultraschallsensors jalu4601 10 349 21.09.2016 15:06
Letzter Beitrag: Bitklopfer
  Frage zu One Button in Kombination mit Fast LED Wolfgang_2801 3 241 26.06.2016 22:11
Letzter Beitrag: hotsystems
  Frage zu FastLed First Light Wolfgang_2801 1 229 19.06.2016 16:57
Letzter Beitrag: hotsystems
  Frage zu Serial SMoTH 3 463 09.03.2016 18:13
Letzter Beitrag: SMoTH
  Frage zum Arduino Studio Compiler avoid 1 486 27.02.2016 09:15
Letzter Beitrag: amithlon
  html, client , NODEMCULUA, Wifi, match request , Frage Marc2014 2 364 15.02.2016 18:41
Letzter Beitrag: Marc2014
  Generelle Frage bn320 19 1.026 03.02.2016 21:50
Letzter Beitrag: bn320
  433 MHZ RCSwitch Library Frage Marc2014 5 709 11.01.2016 16:28
Letzter Beitrag: hotsystems

Gehe zu:


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