Go Down

Topic: passing parameters (Read 771 times) previous topic - next topic

n46130

The following code does not pass parameters to loop in getpulseStep.  All it does is print the number 5 and "pulseStep".


int rS;
int pD;
int k;
#define motorStep 11
#define runStop    6
#define  pedalDown  5
void setup(){
Serial.begin (9600);
pinMode (motorStep, OUTPUT);
pinMode (runStop, INPUT);
pinMode (pedalDown, INPUT);
}
void loop(){
  rS = digitalRead (runStop);
  pD = digitalRead (pedalDown); 

while (rS == LOW){
      rS = digitalRead (runStop);
     pD = digitalRead (pedalDown);   
   while (pD == HIGH){
       pD = digitalRead (pedalDown);   
     Serial.println (pD);
      return;
   }
    int i = 5;
    k=getpulseStep(i);
   Serial.println (k);
}
}
   int getpulseStep(int c){           
   Serial.println ("pulseStep");
     for (int C=c ; C > 0; C--){
     Serial.println (C);
     return (C) ; 
   } 
}           

majenko

Code: [Select]

for (int C=c ; C > 0; C--){
     Serial.println (C);
     return (C) ;
   } 


It does pass parameters.

But you just throw them away.

This loop is fundamentally flawed:

1. Loop for c to 0 times:
1.1 Print C
1.2 return C
2. Never gets here - it just returned.

n46130

  The intent is to pass the parameter 5 to getpulseStep and have the for l.oop execute it 5 times. The program runs on the Arduino simulator but not on the actualcard. Any suggestions as how implement it correctly?
 
  int i = 5;
    k=getpulseStep(i);
   Serial.println (k);
}
}
   int getpulseStep(int c){           
   Serial.println ("pulseStep");
     for (int C=c ; C > 0; C--){
     Serial.println (C);
     return (C) ; 
   } 
}           

majenko

You can implement it correctly by not aborting your for loop partway through the first iteration with that return(C) line.

n46130

Thanks, that fixed the problem but how do I return the value of "C" if it is outside the for loop?

AWOL

Quote
but how do I return the value of "C" if it is outside the for loop?

But if you return it, you have to exit the loop.
What do you want to do?
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Nick Gammon


The program runs on the Arduino simulator but not on the actualcard.


Oh? Strange.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

majenko

Why do you even want to return C?  It will always be 0.

Go Up