n46130
June 28, 2012, 12:08am
1
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) ;
}
}
system
June 28, 2012, 12:24am
2
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:
Loop for c to 0 times:
1.1 Print C
1.2 return C
Never gets here - it just returned.
n46130
June 28, 2012, 12:51am
3
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) ;
}
}
system
June 28, 2012, 12:55am
4
You can implement it correctly by not aborting your for loop partway through the first iteration with that return(C) line.
n46130
June 28, 2012, 1:01am
5
Thanks, that fixed the problem but how do I return the value of "C" if it is outside the for loop?
system
June 28, 2012, 5:49am
6
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?
system
June 28, 2012, 8:57am
8
Why do you even want to return C? It will always be 0.