First Last / Mbed 2 deprecated 1D-Pong

Dependencies:   MODSERIAL mbed

Files at this revision

API Documentation at this revision

Comitter:
vsluiter
Date:
Wed Aug 21 16:52:51 2013 +0000
Child:
1:7a2ec350cdf5
Commit message:
Demo application

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 21 16:52:51 2013 +0000
@@ -0,0 +1,115 @@
+#include "mbed.h"
+
+#define NUMBER_OF_PIXELS 50
+#define PADDLE_LENGTH    5
+
+void Randomblinks(float seconds, bool colored = false);
+void PaddleDemo(float seconds, uint8_t red, uint8_t green, uint8_t blue);
+
+uint16_t totalstrip[NUMBER_OF_PIXELS];
+volatile int8_t paddlestart= 0;
+SPI ledstrip(PTD2,NC,PTD1);
+
+void UpdatePaddle(void)
+{
+    static uint8_t direction = 1;
+    if(direction) {
+        paddlestart++;
+    } else {
+        paddlestart--;
+    }
+
+    if(paddlestart > (NUMBER_OF_PIXELS - PADDLE_LENGTH))
+        direction = 0;
+    if(paddlestart < 0)
+        direction = 1;
+
+}
+
+void UpdateLEDstrip(void)
+{
+    uint8_t pixelcounter;
+    /*start by writing 32 zeroes */
+    ledstrip.write(0);
+    ledstrip.write(0);
+    ledstrip.write(0);
+    ledstrip.write(0);
+    for(pixelcounter = 0 ; pixelcounter < NUMBER_OF_PIXELS; pixelcounter++) {
+        ledstrip.write( uint8_t(totalstrip[pixelcounter]>>8));//uint8_t(temp16));//(totalstrip.ledcounter[pixelcounter].red << 2) | (totalstrip.ledcounter[pixelcounter].high << 7)  |(totalstrip.ledcounter[pixelcounter].green & 0x << 2)  );
+        ledstrip.write( uint8_t(totalstrip[pixelcounter]));//(*(uint16_t *)(&totalstrip[pixelcounter]))>>8);
+    }
+}
+
+void write_led(uint16_t * led, uint8_t red, uint8_t green, uint8_t blue)
+{
+    *led = (1<<15) | ((green >> 3)<<10) | ((red >>3)<< 5) | (blue >>3);
+}
+int main()
+{
+    Ticker updater;
+    Ticker paddlepos;
+    uint8_t ledcounter;
+    updater.attach(UpdateLEDstrip, .05);
+    paddlepos.attach(UpdatePaddle, .03);
+    ledstrip.format(8,0);        //15 bits, mode '0'
+    ledstrip.frequency(100000);
+    for(ledcounter = 0; ledcounter < NUMBER_OF_PIXELS; ledcounter++) {
+        write_led(&totalstrip[ledcounter], 0,0,0);
+    }
+    while(1) {
+        PaddleDemo(5,255,10,100);
+        Randomblinks(5, true);
+    }
+}
+
+void PaddleDemo(float seconds, uint8_t red, uint8_t green, uint8_t blue)
+{
+    uint8_t ledcounter;
+    Timer timer;
+    timer.start();
+    while( timer.read() < seconds)
+    {
+         for(ledcounter = 0; ledcounter < NUMBER_OF_PIXELS; ledcounter++) 
+         {
+            if((ledcounter >= paddlestart) && ( ledcounter <= paddlestart+PADDLE_LENGTH))
+                write_led(&totalstrip[ledcounter], red,green,blue);
+            else
+                write_led(&totalstrip[ledcounter], 0,0,0);
+        }
+    }
+}
+
+void Randomblinks(float seconds, bool colored)
+{
+    uint8_t ledcounter;
+    uint8_t test;
+    Timer timer;
+    timer.start();
+    while( timer.read() < seconds ) 
+    {
+        test = 50.0*rand()/(RAND_MAX*1.0);
+        for(ledcounter = 0; ledcounter < NUMBER_OF_PIXELS; ledcounter++) 
+        {
+            if(ledcounter == test) 
+            {
+                if(colored)
+                    write_led(&totalstrip[ledcounter], test*5,(test%10)*25,(test%15)*15);
+                else
+                    write_led(&totalstrip[ledcounter], 255,255,255);
+            }
+            else
+                write_led(&totalstrip[ledcounter], 0,0,0);
+        }
+    }
+}
+
+//DigitalOut myled(LED1);
+
+//int main() {
+//    while(1) {
+//        myled = 1;
+//        wait(0.2);
+//        myled = 0;
+//        wait(0.2);
+//    }
+//}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Aug 21 16:52:51 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e3affc9e7238
\ No newline at end of file