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.
main.cpp
- Committer:
- TheChrisyd
- Date:
- 2012-12-21
- Revision:
- 1:d6cb4e7c1518
- Parent:
- 0:31e2d78f22ef
File content as of revision 1:d6cb4e7c1518:
#include "mbed.h"
#include "GD.h"
#include "arduino.h"
#include "shield.h"
GDClass GD(ARD_MOSI, ARD_MISO, ARD_SCK, ARD_D9, USBTX, USBRX) ;
SPI spimain(ARD_MOSI, ARD_MISO, ARD_SCK); // mosi, miso, sclk
#define PI 3.1415926535
void readn(byte *dst, unsigned int addr, int c) {
GD.__start(addr);
while (c--)
*dst++ = spimain.write(0);
GD.__end();
}
static byte coll[256];
static void load_coll() {
while (GD.rd(VBLANK) == 0) // Wait until vblank
;
while (GD.rd(VBLANK) == 1) // Wait until display
;
while (GD.rd(VBLANK) == 0) // Wait until vblank
;
readn(coll, COLLISION, sizeof(coll));
}
void setup() {
int i;
GD.begin();
GD.wr(JK_MODE, 1);
GD.wr16(RAM_PAL, RGB(255,255,255));
// Use the 4 palettes:
// 0 pink, for J sprites
// 1 green, for K sprites
// 2 dark pink, J collisions
// 3 dark green, K collisions
for (i = 0; i < 256; i++) {
GD.wr16(RAM_SPRPAL + (0 * 512) + (i << 1), RGB(255, 0, 255));
GD.wr16(RAM_SPRPAL + (1 * 512) + (i << 1), RGB(0, 255, 0));
GD.wr16(RAM_SPRPAL + (2 * 512) + (i << 1), RGB(100, 0, 100));
GD.wr16(RAM_SPRPAL + (3 * 512) + (i << 1), RGB(0, 100, 0));
}
}
byte spr;
static void polar(float th, int r, byte jk) {
// add 2 to the palette if this sprite is colliding
byte colliding = coll[spr] != 0xff;
GD.sprite(spr, 200 + int(r * sin(th)), 142 + int(r * cos(th)), 0, jk + (colliding ? 2 : 0), 0, jk);
spr++;
}
Timer timer;
int main() {
timer.start();
setup();
byte i;
float th;
while (1) {
spr = 0;
// draw the J sprites (pink)
for (i = 0; i < 5; i++) {
th = (((timer.read_us()+2147)/500) / 3000.) + 2 * PI * i / 5;
polar(th, 134, 0);
}
// draw the K sprites (green)
randomSeed(4);
for (i = 0; i < 17; i++) {
th = (((timer.read_us()+2147)/500) / float((rand()%2000)+1000)) + 2 * PI * i / 17;
polar(th, 134, 1);
}
load_coll();
}
}