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.
Diff: main.cpp
- Revision:
- 5:495d64d8934d
- Parent:
- 4:75498bd2e742
- Child:
- 6:baece3338bfe
--- a/main.cpp Fri May 01 03:26:50 2015 +0000
+++ b/main.cpp Fri May 01 05:25:19 2015 +0000
@@ -3,7 +3,7 @@
#include <string>
#include "constants.h"
-#include "shape.h"
+#include "shape_drawer.h"
// RF tranceiver to link with handheld.
MRF24J40 mrf(p11, p12, p13, p14, p26);
@@ -149,66 +149,19 @@
int displaces[HEIGHT];
-void init_displaces(){
- for(int i = 0; i < HEIGHT; i++){
- switch(i){
- case 0: displaces[i] = 0; break;
- case 1: displaces[i] = 4 * SLICES / 8; break;
- case 2: displaces[i] = 7 * SLICES / 8 - 5; break;
- case 3: displaces[i] = 3 * SLICES / 8 - 8; break;
- case 4: displaces[i] = 6 * SLICES / 8 - 6; break;
- case 5: displaces[i] = 2 * SLICES / 8 - 7; break;
- case 6: displaces[i] = 5 * SLICES / 8 - 7; break;
- case 7: displaces[i] = 1 * SLICES / 8 - 8; break;
- }
- }
-}
-
void convert_array(){
- static bool initialized = false;
- int array_i;
-
- if(!initialized){
- init_displaces();
+ if(frame_id == 0){
+ move_buffer(&frame_buffer2);
+ frame_id = 1;
+ } else {
+ move_buffer(&frame_buffer1);
+ frame_id = 0;
}
-
- for(int i = 0; i < SLICES; i++){
- for(int j = 0; j < WIDTH; j++){
- char bit = 0x00;
-
- for(int h = 0; h < HEIGHT; h++){
- bit |= (work_buffer[(i + displaces[h]) % SLICES][j] & (0x01 << h));
- }
-
- if(frame_id == 0)
- frame_buffer2[i][j] = bit;
- else
- frame_buffer1[i][j] = bit;
- }
- }
-
- if(frame_id == 0)
- frame_id = 1;
- else
- frame_id = 0;
}
int display_mode = 0;
Ticker animate_ticker;
void animate(){
- static WaveCircle *wc1 = NULL;
- static WaveCircle *wc2 = NULL;
- static WaveCircle *wc3 = NULL;
- static WaveCircle *wc4 = NULL;
- static WaveCircle *wc5 = NULL;
- static WaveCircle *wc6 = NULL;
- static WaveCircle *wc7 = NULL;
- static WaveCircle *wc8 = NULL;
- static WaveCircle *wc9 = NULL;
- static WaveCircle *wc10 = NULL;
- static WaveCircle *wc11 = NULL;
- static WaveCircle *wc12 = NULL;
- static WaveCircle *wc13 = NULL;
for(int i = 0; i < SLICES; i++){
for(int j = 0; j < WIDTH; j++){
@@ -218,118 +171,42 @@
if(display_mode == 1)
{
- if(wc1 == NULL){
- wc1 = new WaveCircle(3, 4, &work_buffer);
- wc2 = new WaveCircle(4, 4, &work_buffer);
- wc3 = new WaveCircle(5, 4, &work_buffer);
- wc4 = new WaveCircle(6, 4, &work_buffer);
- wc5 = new WaveCircle(7, 4, &work_buffer);
- wc6 = new WaveCircle(8, 4, &work_buffer);
- wc7 = new WaveCircle(9, 4, &work_buffer);
- wc8 = new WaveCircle(10, 4, &work_buffer);
- wc9 = new WaveCircle(11, 4, &work_buffer);
- wc10 = new WaveCircle(12, 4, &work_buffer);
- wc11 = new WaveCircle(13, 4, &work_buffer);
- wc12 = new WaveCircle(14, 4, &work_buffer);
- wc13 = new WaveCircle(15, 4, &work_buffer);
- }
+ static int disp = 0;
+ for(int i = 3; i < WIDTH; i++){
+ draw_wavecircle(i, 4, disp);
+ }
- wc1->animate();
- wc2->animate();
- wc3->animate();
- wc4->animate();
- wc5->animate();
- wc6->animate();
- wc7->animate();
- wc8->animate();
- wc9->animate();
- wc10->animate();
- wc11->animate();
- wc12->animate();
- wc13->animate();
-
- wc1->draw();
- wc2->draw();
- wc3->draw();
- wc4->draw();
- wc5->draw();
- wc6->draw();
- wc7->draw();
- wc8->draw();
- wc9->draw();
- wc10->draw();
- wc11->draw();
- wc12->draw();
- wc13->draw();
+ disp += 10;
+ if(disp >= SLICES){
+ disp = 0;
+ }
}
else if(display_mode == 2)
{
- Line line1(10, 10, 0, 10, -10, 0, &work_buffer);
- Line line2(10, -10, 0, -10, -10, 0, &work_buffer);
- Line line3(-10, -10, 0, -10, 10, 0, &work_buffer);
- Line line4(-10, 10, 0, 10, 10, 0, &work_buffer);
-
- line1.draw();
- line2.draw();
- line3.draw();
- line4.draw();
-
- Line line5(10, 10, 7, 10, -10, 7, &work_buffer);
- Line line6(10, -10, 7, -10, -10, 7, &work_buffer);
- Line line7(-10, -10, 7, -10, 10, 7, &work_buffer);
- Line line8(-10, 10, 7, 10, 10, 7, &work_buffer);
+ draw_line(10, 10, 0, 10, -10, 0);
+ draw_line(10, -10, 0, -10, -10, 0);
+ draw_line(-10, -10, 0, -10, 10, 0);
+ draw_line(-10, 10, 0, 10, 10, 0);
+
+ draw_line(10, 10, 7, 10, -10, 7);
+ draw_line(10, -10, 7, -10, -10, 7);
+ draw_line(-10, -10, 7, -10, 10, 7);
+ draw_line(-10, 10, 7, 10, 10, 7);
- line5.draw();
- line6.draw();
- line7.draw();
- line8.draw();
-
- Line line9(10, 10, 0, 10, 10, 7, &work_buffer);
- Line line10(10, -10, 0, 10, -10, 7, &work_buffer);
- Line line11(-10, -10, 0, -10, -10, 7, &work_buffer);
- Line line12(-10, 10, 0, -10, 10, 7, &work_buffer);
-
- line9.draw();
- line10.draw();
- line11.draw();
- line12.draw();
+ draw_line(10, 10, 0, 10, 10, 7);
+ draw_line(10, -10, 0, 10, -10, 7);
+ draw_line(-10, -10, 0, -10, -10, 7);
+ draw_line(-10, 10, 0, -10, 10, 7);
+
}
else if(display_mode == 3)
{
} else if(display_mode == 4){
-
- Line line1(0, 16, 0, 0, -16, 7, &work_buffer);
- Line line2(4, 16, 0, 4, -16, 7, &work_buffer);
- Line line3(8, 16, 0, 8, -16, 7, &work_buffer);
- Line line4(12, 16, 0, 12, -16, 7, &work_buffer);
- Line line5(-4, 16, 0, -4, -16, 7, &work_buffer);
- Line line6(-8, 16, 0, -8, -16, 7, &work_buffer);
- Line line7(-12, 16, 0, -12, -16, 7, &work_buffer);
-
- line1.draw();
- line2.draw();
- line3.draw();
- line4.draw();
- line5.draw();
- line6.draw();
- line7.draw();
-
- Line line11(16, 4, 0, -16, 4, 7, &work_buffer);
- Line line21(16, 8, 0, -16, 8, 7, &work_buffer);
- Line line31(16, 12, 0, -16, 12, 7, &work_buffer);
- Line line41(16, 0, 0, -16, 0, 7, &work_buffer);
- Line line51(16, -4, 0, -16, -4, 7, &work_buffer);
- Line line61(16, -8, 0, -16, -8, 7, &work_buffer);
- Line line71(16, -12, 0, -16, -12, 7, &work_buffer);
-
- line11.draw();
- line21.draw();
- line31.draw();
- line41.draw();
- line51.draw();
- line61.draw();
- line71.draw();
+ for(int i = -12; i < 13; i += 4){
+ draw_line(i, 16, 0, i, -16, 0);
+ draw_line(16, i, 0, -16, i, 0);
+ }
}
convert_array();
@@ -342,7 +219,7 @@
int main (void)
{
- display_mode = 2;
+ display_mode = 1;
InterruptIn hall_pin(p25);
hall_pin.fall(&rotate_sense);