Derek Travisano / Mbed 2 deprecated ScreenSaver

Dependencies:   4DGL-uLCD-SE PinDetect mbed-rtos mbed

Fork of ScreenSaver by Derek Travisano

Committer:
dtravisano3
Date:
Wed Oct 21 04:58:31 2015 +0000
Revision:
0:b7019deacc63
Child:
1:76a052237fca
ScreenSaver Example Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dtravisano3 0:b7019deacc63 1 #include "mbed.h"
dtravisano3 0:b7019deacc63 2 #include "uLCD_4DGL.h"
dtravisano3 0:b7019deacc63 3 #include "rtos.h"
dtravisano3 0:b7019deacc63 4 #include "PinDetect.h"
dtravisano3 0:b7019deacc63 5 //Joystick Inputs
dtravisano3 0:b7019deacc63 6 PinDetect up(p17);
dtravisano3 0:b7019deacc63 7 PinDetect down(p13);
dtravisano3 0:b7019deacc63 8 PinDetect left(p15);
dtravisano3 0:b7019deacc63 9 PinDetect right(p14);
dtravisano3 0:b7019deacc63 10 PinDetect c(p16);
dtravisano3 0:b7019deacc63 11 //RTOS Mutex
dtravisano3 0:b7019deacc63 12 Mutex DAmu;
dtravisano3 0:b7019deacc63 13 //uLCD
dtravisano3 0:b7019deacc63 14 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
dtravisano3 0:b7019deacc63 15
dtravisano3 0:b7019deacc63 16 //SCREENSAVER VARIABLES
dtravisano3 0:b7019deacc63 17 int volatile counter=0; //GLOBAL COUNTER VARIABLE FOR SCREENSAVER MODE
dtravisano3 0:b7019deacc63 18 int color[] = {RED,BLUE,GREEN}; //color to be written to screen
dtravisano3 0:b7019deacc63 19
dtravisano3 0:b7019deacc63 20 // SCREENSAVER FUNCTION
dtravisano3 0:b7019deacc63 21 void screensaver(void const *args)
dtravisano3 0:b7019deacc63 22 {
dtravisano3 0:b7019deacc63 23 //pc.printf("/n %d", counter);
dtravisano3 0:b7019deacc63 24 while(counter!=0) {
dtravisano3 0:b7019deacc63 25 uLCD.cls();
dtravisano3 0:b7019deacc63 26 for(int i=0; i<(128)&&counter!=0; i++) {
dtravisano3 0:b7019deacc63 27 for(int k=0; (k<128)&&counter!=0; k++) {
dtravisano3 0:b7019deacc63 28 DAmu.lock(); //Use Mutex to decide which function writes to screen
dtravisano3 0:b7019deacc63 29 uLCD.pixel(k,i,color[rand()%3]); //Randomizes color to be written to screen
dtravisano3 0:b7019deacc63 30 DAmu.unlock();
dtravisano3 0:b7019deacc63 31 }
dtravisano3 0:b7019deacc63 32 }
dtravisano3 0:b7019deacc63 33 uLCD.cls();
dtravisano3 0:b7019deacc63 34 Thread::wait(1000);
dtravisano3 0:b7019deacc63 35 }
dtravisano3 0:b7019deacc63 36 }
dtravisano3 0:b7019deacc63 37
dtravisano3 0:b7019deacc63 38
dtravisano3 0:b7019deacc63 39 //Variables and function calls for sample program (NOT REQUIRED)
dtravisano3 0:b7019deacc63 40 int volatile count=0;
dtravisano3 0:b7019deacc63 41 int volatile dy=64;
dtravisano3 0:b7019deacc63 42 int volatile dx=64;
dtravisano3 0:b7019deacc63 43
dtravisano3 0:b7019deacc63 44 void up_hit_callback (void)
dtravisano3 0:b7019deacc63 45 {
dtravisano3 0:b7019deacc63 46 dy--;
dtravisano3 0:b7019deacc63 47 count =1;
dtravisano3 0:b7019deacc63 48 counter=0;
dtravisano3 0:b7019deacc63 49 Thread::wait(1);
dtravisano3 0:b7019deacc63 50 }
dtravisano3 0:b7019deacc63 51 void down_hit_callback (void)
dtravisano3 0:b7019deacc63 52 {
dtravisano3 0:b7019deacc63 53 dy++;
dtravisano3 0:b7019deacc63 54 count =1;
dtravisano3 0:b7019deacc63 55 counter=0;
dtravisano3 0:b7019deacc63 56 Thread::wait(1);
dtravisano3 0:b7019deacc63 57 }
dtravisano3 0:b7019deacc63 58 void left_hit_callback (void)
dtravisano3 0:b7019deacc63 59 {
dtravisano3 0:b7019deacc63 60 dx--;
dtravisano3 0:b7019deacc63 61 count =1;
dtravisano3 0:b7019deacc63 62 counter=0;
dtravisano3 0:b7019deacc63 63 Thread::wait(1);
dtravisano3 0:b7019deacc63 64 }
dtravisano3 0:b7019deacc63 65 void right_hit_callback (void)
dtravisano3 0:b7019deacc63 66 {
dtravisano3 0:b7019deacc63 67 dx++;
dtravisano3 0:b7019deacc63 68 count =1;
dtravisano3 0:b7019deacc63 69 counter=0;
dtravisano3 0:b7019deacc63 70 Thread::wait(1);
dtravisano3 0:b7019deacc63 71 }
dtravisano3 0:b7019deacc63 72
dtravisano3 0:b7019deacc63 73 void c_hit_callback (void)
dtravisano3 0:b7019deacc63 74 {
dtravisano3 0:b7019deacc63 75 count = 1;
dtravisano3 0:b7019deacc63 76 counter=0;
dtravisano3 0:b7019deacc63 77 Thread::wait(1);
dtravisano3 0:b7019deacc63 78 }
dtravisano3 0:b7019deacc63 79
dtravisano3 0:b7019deacc63 80
dtravisano3 0:b7019deacc63 81 int main()
dtravisano3 0:b7019deacc63 82 {
dtravisano3 0:b7019deacc63 83 //Setup Pushbuttons or Joystick
dtravisano3 0:b7019deacc63 84 up.mode(PullDown);
dtravisano3 0:b7019deacc63 85 down.mode(PullDown);
dtravisano3 0:b7019deacc63 86 left.mode(PullDown);
dtravisano3 0:b7019deacc63 87 right.mode(PullDown);
dtravisano3 0:b7019deacc63 88 c.mode(PullDown);
dtravisano3 0:b7019deacc63 89
dtravisano3 0:b7019deacc63 90 up.setSampleFrequency();
dtravisano3 0:b7019deacc63 91 down.setSampleFrequency();
dtravisano3 0:b7019deacc63 92 left.setSampleFrequency();
dtravisano3 0:b7019deacc63 93 right.setSampleFrequency();
dtravisano3 0:b7019deacc63 94 c.setSampleFrequency();
dtravisano3 0:b7019deacc63 95
dtravisano3 0:b7019deacc63 96 //JoyStick or Pushbutton functional fall interrupts set up
dtravisano3 0:b7019deacc63 97 up.attach_deasserted(&up_hit_callback);
dtravisano3 0:b7019deacc63 98 down.attach_deasserted(&down_hit_callback);
dtravisano3 0:b7019deacc63 99 left.attach_deasserted(&left_hit_callback);
dtravisano3 0:b7019deacc63 100 right.attach_deasserted(&right_hit_callback);
dtravisano3 0:b7019deacc63 101 c.attach_deasserted(&c_hit_callback);
dtravisano3 0:b7019deacc63 102
dtravisano3 0:b7019deacc63 103 //initialize screen
dtravisano3 0:b7019deacc63 104 uLCD.baudrate(100000);
dtravisano3 0:b7019deacc63 105 DAmu.lock();
dtravisano3 0:b7019deacc63 106 uLCD.background_color(BLACK);
dtravisano3 0:b7019deacc63 107 uLCD.cls();
dtravisano3 0:b7019deacc63 108 DAmu.unlock();
dtravisano3 0:b7019deacc63 109
dtravisano3 0:b7019deacc63 110 while(1) {
dtravisano3 0:b7019deacc63 111 DAmu.lock();
dtravisano3 0:b7019deacc63 112 if(counter==500) { //screensaver mode conditional and desired wait time counter
dtravisano3 0:b7019deacc63 113 DAmu.unlock();
dtravisano3 0:b7019deacc63 114 screensaver(0);
dtravisano3 0:b7019deacc63 115 counter++;
dtravisano3 0:b7019deacc63 116 } else { // Desired code for MBED uLCD program (Not screensaver mode)
dtravisano3 0:b7019deacc63 117 if (count==1) {
dtravisano3 0:b7019deacc63 118 uLCD.cls();
dtravisano3 0:b7019deacc63 119 DAmu.unlock();
dtravisano3 0:b7019deacc63 120 count=0;
dtravisano3 0:b7019deacc63 121 } else {
dtravisano3 0:b7019deacc63 122 DAmu.lock();
dtravisano3 0:b7019deacc63 123 uLCD.filled_rectangle(dx+2,dy+2 ,dx-2, dy-2, WHITE);
dtravisano3 0:b7019deacc63 124 DAmu.unlock();
dtravisano3 0:b7019deacc63 125 }
dtravisano3 0:b7019deacc63 126 counter++;
dtravisano3 0:b7019deacc63 127 }
dtravisano3 0:b7019deacc63 128 Thread::wait(1);
dtravisano3 0:b7019deacc63 129 }
dtravisano3 0:b7019deacc63 130 }