Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

if else anweisung in c funktioniert nicht

Hallo community,

ich bekomm diese blöde if else anweiung einfach nicht gebacken ???...was mach ich falsch?!   :-\

kurz zur beschreibung:

motor soll +100steps fahren wenn USB 5V liefert andernfalls wenn USB keine 5V liefert soll er -100steps fahren.

hier der code in C:


#include <Stepper.h>

#define motorSteps 200     
#define motorPin1 8
#define motorPin2 9
#define ledPin 13
int USBPin = 10;



Stepper myStepper(motorSteps, motorPin1,motorPin2);

void setup() {
 
  myStepper.setSpeed(60);

 
  Serial.begin(9600);

    pinMode(ledPin, OUTPUT);
 
  blink(3);
}

void loop()
 
   if( 10, HIGH){
   
   
 
  Serial.println("Forward");
  myStepper.step(100);
 
   }
   
   else{
 
  Serial.println("Backward");
  myStepper.step(-100);
   
  }

void blink(int howmanytimes) {
  int i;
  for (i=0; i< howmanytimes; i++)
    digitalWrite(ledPin, HIGH);
    delay(200);
    digitalWrite(ledPin, LOW);
    delay(200);
  }

danke für die hilfe und ja ich habe die suche benutzt...aber gib mal "if, else oder c" ein  :P;D


Antworten zu if else anweisung in c funktioniert nicht:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... alle Semikola vorhanden?
 

Zitat
if( 10, HIGH){
Stimmt diese Bedingung?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

die geschweiften Klammern für void loop() -> einfach nur beim reinkopieren hier vergessen? 

Also der Code ist hier so wie in meinem Programm auch 1:1, nichts vergessen!!

Bedingung if( 10, HIGH):
soll soviel heißen wie: Wenn PIN 10 5V führt dann...
 
Gehören die Semis wirklich an jedes zeilenende?

Ich habe im Netz folgenden vorschlag für ne if else anweisung gefunden (die so nicht bei mir funktioniert)

------------------------------------------
if (bedingung)
{
aktion.....
.......
}

else

{
aktion......
.........
}
---------------------------------------------

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
Ich habe im Netz folgenden vorschlag für ne if else anweisung gefunden (die so nicht bei mir funktioniert)
Das ist aber der korrekte Ablauf, warum sollte der bei Dir nicht funktionieren?

Zitat
Gehören die Semis wirklich an jedes zeilenende?
nein

schau Dir void loop() nochmal an!

//edit jetzt erst gesehen:
Zitat
Bedingung if( 10, HIGH):
soll soviel heißen wie: Wenn PIN 10 5V führt dann...
funktioniert so nicht -> damit kann keiner(inkl. Deiner Bedingung) was anfangen. 
« Letzte Änderung: 14.03.12, 22:39:49 von SQL-Freak »

okay hab die if else anweisung hinbekommen... :)

wie kann ich jetz aber meinem stepper sagen das er z.b. 200steps machen soll, dann warten soll, bis USB LOW hat das er dann die else anweisung nimmt und wieder 200 steps zurückfährt und da wiederrum auf USB HIGH wartet...???

bin mit Arduino & C noch sich so ganz freund auf Facebook  ;D

Danke schon mal für die tips

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
hab die if else anweisung hinbekommen

... und wie sieht sie jetzt aus?

Die else Anweisung ist jetzt gänzlich weggefallen dafür gibt es zweimal   if !!! ;)

jetzt gehts dadrum die stepper auf position zu halten (siehe oberen beitrag)
Hier nochmal der überarbeitete Code:



#include <Stepper.h>

#define motorSteps 20     
#define motorPin1 11
#define motorPin2 10
#define motorPin3 9
#define motorPin4 8
#define ledPin 13
#define usbPin 2
int val;

Stepper myStepper(motorSteps, motorPin1,motorPin2,motorPin3,motorPin4);

void setup() {
 
  myStepper.setSpeed(200);
  pinMode(usbPin, INPUT);
  pinMode(ledPin, OUTPUT);
 
 
  blink(5);
}

void loop() {
 
  val=digitalRead(usbPin);
  if(val == HIGH)
   
  {
  myStepper.step(100);
  }
 
  if(val == LOW)

  {   
  myStepper.step(-100);
  }
 
}


//LED Blinker bei reset:
void blink(int howManyTimes) {
  int i;
  for (i=0; i< howManyTimes; i++) {
    digitalWrite(ledPin, HIGH);
    delay(50);
    digitalWrite(ledPin, LOW);
    delay(120);
  }
}

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... etwa so
 

Zitat
# endlosschleife

while (bis Abbruchbedingung) {

  while (NOT HIGH) { # warten
    tut nichts
  }

  # jetzt ist HIGH
  gehe 200 Schritte vor

  while (NOT LOW) { # warten
    tut nichts
  }

  # jetzt ist LOW
  gehe 200 Schritte zurück

# zum Anfang oder Abbruch

}
 

ja genau...

praktisch is mein usb der signalgeber ob der stepper vor oder zurück fahren soll und jeweils am endpunkt soll er warten

weiß trotzdem noch nicht wie die gleichung aussehen muss

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... verstehe

Jetzt zuerst C lernen ;)

wenn du sehen würdest was hier alles rumliegt an tutorials und lernbooks  :o

ich brauche nur den befehl das ich den stepper anhalte!?
gibt es so einen überhaupt?

myStepper stop oder motor.stop()!?
 

GOT IT!!!

 

Zitat
#include <Stepper.h>

#define motorSteps 20     
#define motorPin1 8
#define motorPin2 9
#define motorPin3 10
#define motorPin4 11
#define ledPin 13
#define usbPin 2
int val;

Stepper myStepper(motorSteps, motorPin1,motorPin2,motorPin3,motorPin4);

void setup() {
 
  myStepper.setSpeed(150);
  Serial.begin(9600);
  pinMode(usbPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode (motorPin1, OUTPUT);
  pinMode (motorPin2, OUTPUT);
  pinMode (motorPin3, OUTPUT);
  pinMode (motorPin4, OUTPUT);
  blink(5);
}


void ledEnd()

  {
  Serial.println("Endpunkt erreicht");
  digitalWrite(ledPin, HIGH);
  delay(20);
  digitalWrite(ledPin, LOW);
  delay(10000);
  }


void loop() { 
 
  val = digitalRead(usbPin);
  if(val == HIGH)
 
  { 
  Serial.println("AUSFAHREN"); 
  myStepper.step(100);
  ledEnd();
  while(digitalRead(usbPin) == HIGH){}
  }
 
  if(val == LOW)
 
  { 
  Serial.println("EINFAHREN"); 
  myStepper.step(-100);
  ledEnd();
  while(digitalRead(usbPin) == LOW){}
  }
}


//LED Blinker bei reset:
void blink(int blinker) {
  Serial.println("RESET");
  int i;
  for (i=0; i< blinker; i++) {
    digitalWrite(ledPin, HIGH);
    delay(50);
    digitalWrite(ledPin, LOW);
    delay(120);
  }
}
 

while(digitalRead(usbPin) == HIGH){} war die Lösung  ;)

Vielen dank und Servus

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... na, Glückwunsch und danke für Rückinfo  :)

PS. Schau mal, ob Du Dir die If's in der Schleife nicht schenken kannst.


« Ausschnitt aus Pascal kommentierenexcel Tippspiel »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
USB
USB steht für Universal Serial Bus, ein serieller Anschluss am Gehäuse des Computers. Hier lassen sich zahlreiche Geräte, zum Beispiel Drucker, Tastat...

USB Anschluss
USB (der Universal Serial Bus) ist ein Standard zum Anschließen von unter anderem Speichermedien, der sich plattformübergreifend - sowohl bei den Windows und L...

USB Stick
Ein Speichermedium mit verschiedenen Speichergrößen. Siehe auch USB. USB Sticks sind kleine Flash-Speicher, die meistens mit einem USB-A Anschluss versehe...