Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 12:97c71b84c984, committed 2013-08-22
- Comitter:
- vsluiter
- Date:
- Thu Aug 22 22:35:36 2013 +0000
- Parent:
- 11:fc80c39ba9f0
- Child:
- 13:e96098b6660d
- Commit message:
- Somehow the ledstrip registers paddle at wrong spot?
Changed in this revision
| MODSERIAL.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MODSERIAL.lib Thu Aug 22 22:35:36 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Sissors/code/MODSERIAL/#9a41078f0488
--- a/main.cpp Thu Aug 22 07:11:27 2013 +0000
+++ b/main.cpp Thu Aug 22 22:35:36 2013 +0000
@@ -1,7 +1,8 @@
#include "mbed.h"
-
+#include "MODSERIAL.h"
#define NUMBER_OF_PIXELS 50
#define PADDLE_LENGTH 5
+#define STARTING_SPEED 20
#define LEFT false
#define RIGHT true
@@ -16,6 +17,7 @@
uint16_t totalstrip[NUMBER_OF_PIXELS];
volatile int8_t paddlestart= 0;
SPI ledstrip(PTD2,NC,PTD1);
+MODSERIAL pc(USBTX,USBRX);
class Paddle
{
@@ -24,7 +26,7 @@
// ~Paddle();//deconstructor
int16_t position;
uint8_t direction;
- void setSpeed(float speed);
+ void setSpeed(float speed); //pixels per second
void setColor(uint8_t red, uint8_t green, uint8_t blue);
uint8_t getSize(void);
void setSize(uint8_t size);
@@ -130,15 +132,17 @@
Paddle paddle;
bool leftpushed = false, rightpushed = false;
-
+int16_t leftpushpos= 0, rightpushpos = 0;
void left_pushed(void)
{
+ leftpushpos = paddle.position;
if(paddle.direction != 1)
leftpushed = true;
}
void right_pushed(void)
{
+ rightpushpos = paddle.position;
if(paddle.direction == 1)
rightpushed = true;
}
@@ -146,49 +150,79 @@
int main()
{
Ticker updater;
- Ticker demopaddlepos;
+ //Ticker demopaddlepos;
Timer gametimer;
InterruptIn buttonleft(PTD5);
InterruptIn buttonright(PTD0);
uint8_t ledcounter;
uint8_t left_score = 0, right_score = 0;
+ pc.baud(115200);
buttonleft.mode(PullUp);
buttonright.mode(PullUp);
buttonright.fall(right_pushed);
buttonleft.fall(left_pushed);
- updater.attach(UpdateLEDstrip, .01);
- demopaddlepos.attach(UpdateDemoPaddle, .03);
+ updater.attach(UpdateLEDstrip, .03);
+ //demopaddlepos.attach(UpdateDemoPaddle, .03);
ledstrip.format(8,0); //15 bits, mode '0'
ledstrip.frequency(1000000); //1MHz clock
for(ledcounter = 0; ledcounter < NUMBER_OF_PIXELS; ledcounter++) {//turn off leds
write_led(&totalstrip[ledcounter], 0,0,0);
}
paddle.setSize(6);
- paddle.setSpeed(30);
+ paddle.setSpeed(STARTING_SPEED);
paddle.setColor(255,0,255);
gametimer.start();
while(1) {
static uint8_t naglevel1 = 0, naglevel2 = 0;
- DrawGamePaddle();
+ //paddle.position = 48;
+ //while(1);
if(paddle.direction == 1)
{
if(rightpushed)
{
+ //printf("\n\rright pushed");
rightpushed = false;
- if(paddle.position > (NUMBER_OF_PIXELS - paddle.getSize()) && paddle.position < NUMBER_OF_PIXELS)
+ if(rightpushpos >= NUMBER_OF_PIXELS && rightpushpos < (NUMBER_OF_PIXELS + paddle.getSize()) )
+ {
paddle.direction = 0;
+ paddle.position = NUMBER_OF_PIXELS;
+ }
+ pc.printf("\n\rright pushed. Paddle position: %d, registered: %d", paddle.position, rightpushpos);
}
}
else
{
if(leftpushed)
{
+ //printf("\n\rleft pushed");
leftpushed = false;
- if(paddle.position > -paddle.getSize() && (paddle.position <= 0 ) )
+ if(leftpushpos > -paddle.getSize() && (paddle.position <= 0 ) )
+ {
paddle.direction = 1;
+ paddle.position = 0;
+ }
+ pc.printf("\n\rleft pushed. Paddle position: %d, registered: %d", paddle.position, leftpushpos);
}
}
- if(gametimer.read()>6 && !naglevel1)
+ if(paddle.position > ( NUMBER_OF_PIXELS + paddle.getSize() ) && (paddle.direction == 1))
+ {
+ pc.printf("\n\rleft player score. Paddle position: %d", paddle.position);
+ //left player scores!
+ left_score++;
+ HandleScore(&left_score,&right_score,false, &gametimer);
+ paddle.position = -paddle.getSize();
+ naglevel1=naglevel2 = 0;
+ }
+ if(paddle.position < -paddle.getSize() && (paddle.direction == 0))
+ {
+ pc.printf("\n\rleft player score. Paddle position: %d", paddle.position);
+ //right player scores!
+ right_score++;
+ HandleScore(&left_score,&right_score,true, &gametimer);
+ naglevel1=naglevel2 = 0;
+ paddle.position = NUMBER_OF_PIXELS;
+ }
+ if(gametimer.read()>6 && !naglevel1)
{
naglevel1 = 1;
paddle.setSize(4);
@@ -200,22 +234,7 @@
paddle.setSize(2);
paddle.setSpeed(70);
}
- if(paddle.position >= NUMBER_OF_PIXELS && (paddle.direction == 1))
- {
- //left player scores!
- left_score++;
- HandleScore(&left_score,&right_score,false, &gametimer);
- paddle.position = -paddle.getSize();
- naglevel1=naglevel2 = 0;
- }
- if(paddle.position < -paddle.getSize() && (paddle.direction == 0))
- {
- //right player scores!
- right_score++;
- HandleScore(&left_score,&right_score,true, &gametimer);
- naglevel1=naglevel2 = 0;
- paddle.position = NUMBER_OF_PIXELS;
- }
+ DrawGamePaddle();
}
}
@@ -231,30 +250,35 @@
}
(*(mbed::Timer *)gametimer).reset();
paddle.setSize(6);
- paddle.setSpeed(30);
+ paddle.setSpeed(STARTING_SPEED);
}
void DrawGamePaddle(void)
{
uint8_t ledcounter;
+ uint8_t colorpos;
for(ledcounter = 0; ledcounter< NUMBER_OF_PIXELS; ledcounter++)
{
- if(ledcounter >= paddle.position && ledcounter <= paddle.position+paddle.getSize())
+ if(paddle.direction == 1)
{
- uint8_t colorpos;
- if(paddle.direction ==1)
+ if(ledcounter > paddle.position-paddle.getSize() && ledcounter <= paddle.position)
{
- colorpos = ledcounter-paddle.position;
+ colorpos = paddle.getSize()-(paddle.position - ledcounter);//paddle.getSize()-(ledcounter-paddle.position);
write_led(&totalstrip[ledcounter],paddle.getColor(colorpos,0),paddle.getColor(colorpos,1),paddle.getColor(colorpos,2));
}
else
+ write_led(&totalstrip[ledcounter], 0,0,0);
+ }
+ else
+ {
+ if(ledcounter >= paddle.position && ledcounter <= paddle.position+paddle.getSize())
{
colorpos = paddle.getSize()-(ledcounter-paddle.position);
write_led(&totalstrip[ledcounter],paddle.getColor(colorpos,0),paddle.getColor(colorpos,1),paddle.getColor(colorpos,2));
}
+ else
+ write_led(&totalstrip[ledcounter], 0,0,0);
}
- else
- write_led(&totalstrip[ledcounter], 0,0,0);
}
}