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.
Dependencies: 4DGL-uLCD-SE PinDetect mbed-rtos mbed
Fork of ScreenSaver by
main.cpp@0:b7019deacc63, 2015-10-21 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
