Hi.
I'm in the process of building a speedo for my motorbike. It's pretty much done except for the fact i've no idea how to zero pad in Wiring.
Is there a function/operator available or does it involve some bodging?
Hi.
I'm in the process of building a speedo for my motorbike. It's pretty much done except for the fact i've no idea how to zero pad in Wiring.
Is there a function/operator available or does it involve some bodging?
Your using Wiring?
I thought the language in the Arduino IDE is wiring. That or some kind of C.
No it's based on Wiring. It's essentially C/C++ (using avr-gcc to compile).
ok...
What do you mean by zero the pad?
What I mean by zero pad is to format a number.
Say I have a range of expected numbers, say 0 to 100, and I want every single one to be shown as a 3 digit number i.e. 1 = 001
In python it's easy
>>> a = 1
>>> "%03d" % a
'001'
Something like this ought to do it:
[UNTESTED CODE]
void setup(){
Serial.begin(9600);
Serial.print("Try to print 13 as 0013: ");
padding( 13, 4 );
}
void loop(){/*nothing to loop*/}
void padding( int number, byte width ) {
int currentMax = 10;
for (byte i=1; i<width; i++){
if (number < currentMax) {
Serial.print("0");
}
currentMax *= 10;
}
Serial.print(number);
}
I think this should print:
Try to print 13 as 0013: 0013
[edit]
But he did forget to put the opening curley bracket in the padding function)
Oh. Bummer.
:-[
Fixed.
Thank you mem![/edit]
Cheers. The code looks good from here even if it isn't a single line solution. Python + AVR would be awesome.
Just to show that you can have a one line solution on Arduino , if you include the following line in your sketch:
#define padding(number,width) for(int i=1; i < width - log10(number); i++) Serial.print('0'); Serial.println(number,DEC);
The following code :
padding(1);
padding(11);
padding(111);
prints:
001
011
111
This only works for numbers greater than 0 and its submitted with tongue planted firmly in cheek. My friend AlhpaBeta's function is a more efficient and flexible. (But he did forget to put the opening curley bracket in the padding function)