mbed_binary_counter
Diff: main.cpp
- Revision:
- 1:4e311ab3af04
- Parent:
- 0:858e3371c27e
--- a/main.cpp Tue Oct 07 23:55:54 2014 +0000
+++ b/main.cpp Thu Oct 09 20:30:07 2014 +0000
@@ -1,36 +1,54 @@
+// for LPC1768
+//binary counter with 4 onboard leds. counts +1 with every button press
+
#include "mbed.h"
#define PRESSED 0
#define UNPRESSED 1
-
-int getNext();
+#define BUTTONPIN p8
-DigitalIn pin8(p8); //button on pin8
-BusOut counter(LED4, LED3, LED2, LED1);
+int getNext(); //get next num for counter. ( counts 0 to 15) after 15 there is a rollback.
+void setLeds(int); //sets the leds to show in binary the argument
+Serial pc(USBTX, USBRX);//initialize serial connection
+
+DigitalIn button(BUTTONPIN); //button on pin8
+DigitalOut leds[4]={ DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4) };
//-----------------------------------------------
int main() {
- pin8.mode(PullUp); //set internal pullup
+ button.mode(PullUp); //set button internal pullup
- bool previousState=pin8;
+ bool previousState=button;
bool currentState;
- while(1) {
+ while(1) {//polling
- currentState=pin8;
- if(currentState==PRESSED && previousState==UNPRESSED){
- counter=getNext();
+ currentState=button;
+ if(currentState==PRESSED && previousState==UNPRESSED){ //on button push
+ setLeds(getNext());
+
}
previousState=currentState;
- wait(0.1);
-
-
-
+ wait(0.1); //small delay for debounce
+
}
}
-
-
+//------------------------------------------
+void setLeds(int num){
+
+ int eights =num/8; //how many of 8's the number has...
+ int fours =(num - eights*8) /4 ;
+ int twos =(num - eights*8 -fours*4)/2;
+ int ones =num%2;
+
+ leds[0]=eights;
+ leds[1]=fours;
+ leds[2]=twos;
+ leds[3]=ones;
+ pc.printf("dec=%d bin=%d%d%d%d \n",num,eights,fours,twos,ones);
+
+}
//-----------------------------------------------
int getNext(){
static int i=0;