Demo of low res colour vga video for stm32f3 discovery board
Dependencies: STM32F3-Discovery-minimal
Fork of Space_Invaders_Demo by
bounce.c@17:833f1b69e11d, 2019-04-03 (annotated)
- Committer:
- MartinJohnson
- Date:
- Wed Apr 03 22:05:56 2019 +0000
- Revision:
- 17:833f1b69e11d
- Parent:
- 14:3035b3271395
update library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MartinJohnson | 3:93e488fbb8a2 | 1 | #include "stm32f30x.h" |
MartinJohnson | 3:93e488fbb8a2 | 2 | #include "sys.h" |
MartinJohnson | 3:93e488fbb8a2 | 3 | #include "video.h" |
MartinJohnson | 3:93e488fbb8a2 | 4 | #include "gdi.h" |
MartinJohnson | 3:93e488fbb8a2 | 5 | #include <string.h> |
MartinJohnson | 3:93e488fbb8a2 | 6 | #include <stdio.h> |
MartinJohnson | 3:93e488fbb8a2 | 7 | |
MartinJohnson | 3:93e488fbb8a2 | 8 | int ballx=100,bally=100; |
MartinJohnson | 3:93e488fbb8a2 | 9 | int ballvx=10,ballvy=8; |
MartinJohnson | 3:93e488fbb8a2 | 10 | int px=400; |
MartinJohnson | 3:93e488fbb8a2 | 11 | |
MartinJohnson | 3:93e488fbb8a2 | 12 | void bounce() { |
MartinJohnson | 3:93e488fbb8a2 | 13 | int16_t accel[3]; |
MartinJohnson | 3:93e488fbb8a2 | 14 | MemsConfig(); |
MartinJohnson | 3:93e488fbb8a2 | 15 | vidClearScreen(); |
MartinJohnson | 3:93e488fbb8a2 | 16 | int count=0; |
MartinJohnson | 3:93e488fbb8a2 | 17 | int maxcount=0; |
MartinJohnson | 3:93e488fbb8a2 | 18 | char string[16]; |
MartinJohnson | 3:93e488fbb8a2 | 19 | while(1) { |
MartinJohnson | 3:93e488fbb8a2 | 20 | gdiSetColour(3); |
MartinJohnson | 3:93e488fbb8a2 | 21 | gdiRectangle(0,0,(VID_HSIZE - 1),VID_VSIZE - 1,0); |
MartinJohnson | 3:93e488fbb8a2 | 22 | gdiSetColour(2); |
MartinJohnson | 3:93e488fbb8a2 | 23 | gdiCircle(ballx/16,bally/16,4,0); |
MartinJohnson | 3:93e488fbb8a2 | 24 | gdiSetColour(7); |
MartinJohnson | 14:3035b3271395 | 25 | gdiFilledCircle(ballx/16,bally/16,3,0); |
MartinJohnson | 14:3035b3271395 | 26 | // gdiCircle(ballx/16,bally/16,2,0); |
MartinJohnson | 14:3035b3271395 | 27 | // gdiCircle(ballx/16,bally/16,1,0); |
MartinJohnson | 3:93e488fbb8a2 | 28 | |
MartinJohnson | 3:93e488fbb8a2 | 29 | gdiSetColour(4); |
MartinJohnson | 3:93e488fbb8a2 | 30 | gdiRectangle(px-8,VID_VSIZE-5,px+7,VID_VSIZE-2,0); |
MartinJohnson | 3:93e488fbb8a2 | 31 | gdiRectangle(px-8,VID_VSIZE-4,px+7,VID_VSIZE-3,0); |
MartinJohnson | 3:93e488fbb8a2 | 32 | gdiSetColour(7); |
MartinJohnson | 14:3035b3271395 | 33 | sprintf(string,"Count=%d",count); |
MartinJohnson | 3:93e488fbb8a2 | 34 | gdiDrawTextEx(4,4,(pu8)string,0); |
MartinJohnson | 14:3035b3271395 | 35 | sprintf(string,"High=%d",maxcount); |
MartinJohnson | 3:93e488fbb8a2 | 36 | gdiDrawTextEx(VID_HSIZE-6*strlen(string)-4,4,(pu8)string,0); |
MartinJohnson | 3:93e488fbb8a2 | 37 | |
MartinJohnson | 3:93e488fbb8a2 | 38 | // sysDelayMs(5); |
MartinJohnson | 3:93e488fbb8a2 | 39 | waitForRefresh(); |
MartinJohnson | 3:93e488fbb8a2 | 40 | vidNextBuffer(); |
MartinJohnson | 3:93e488fbb8a2 | 41 | ReadAccelerometer( accel ); |
MartinJohnson | 3:93e488fbb8a2 | 42 | |
MartinJohnson | 14:3035b3271395 | 43 | px=(VID_HSIZE/2+accel[1]/100)/8+7*px/8; |
MartinJohnson | 3:93e488fbb8a2 | 44 | if(px<9) px=9; |
MartinJohnson | 3:93e488fbb8a2 | 45 | if(px>VID_HSIZE-9) px=VID_HSIZE-9; |
MartinJohnson | 3:93e488fbb8a2 | 46 | ballx+=ballvx; |
MartinJohnson | 3:93e488fbb8a2 | 47 | bally+=ballvy; |
MartinJohnson | 3:93e488fbb8a2 | 48 | if(ballx/16>VID_HSIZE - 6 || ballx<80) { |
MartinJohnson | 3:93e488fbb8a2 | 49 | ballvx=-ballvx; |
MartinJohnson | 3:93e488fbb8a2 | 50 | ballx+=ballvx; |
MartinJohnson | 3:93e488fbb8a2 | 51 | } |
MartinJohnson | 3:93e488fbb8a2 | 52 | if(bally<80) { |
MartinJohnson | 3:93e488fbb8a2 | 53 | ballvy=-ballvy; |
MartinJohnson | 3:93e488fbb8a2 | 54 | bally+=ballvy; |
MartinJohnson | 3:93e488fbb8a2 | 55 | } |
MartinJohnson | 3:93e488fbb8a2 | 56 | if(bally/16>VID_VSIZE - 6) { |
MartinJohnson | 3:93e488fbb8a2 | 57 | if(ballx/16>px-12&&ballx/16<px+12) { |
MartinJohnson | 3:93e488fbb8a2 | 58 | ballvy=-ballvy-1; |
MartinJohnson | 3:93e488fbb8a2 | 59 | bally+=ballvy; |
MartinJohnson | 3:93e488fbb8a2 | 60 | ballvx=ballvx+ballx/16-px; |
MartinJohnson | 3:93e488fbb8a2 | 61 | count++; |
MartinJohnson | 3:93e488fbb8a2 | 62 | if(count>maxcount) |
MartinJohnson | 3:93e488fbb8a2 | 63 | maxcount=count; |
MartinJohnson | 3:93e488fbb8a2 | 64 | } |
MartinJohnson | 3:93e488fbb8a2 | 65 | else { |
MartinJohnson | 3:93e488fbb8a2 | 66 | bally=100; |
MartinJohnson | 3:93e488fbb8a2 | 67 | ballvy=10; |
MartinJohnson | 3:93e488fbb8a2 | 68 | count=0; |
MartinJohnson | 3:93e488fbb8a2 | 69 | } |
MartinJohnson | 3:93e488fbb8a2 | 70 | } |
MartinJohnson | 3:93e488fbb8a2 | 71 | ballvy=ballvy+1; |
MartinJohnson | 14:3035b3271395 | 72 | if(buttonPress()) return; |
MartinJohnson | 3:93e488fbb8a2 | 73 | } |
MartinJohnson | 3:93e488fbb8a2 | 74 | |
MartinJohnson | 3:93e488fbb8a2 | 75 | } |