A simple program built with mbed and a Nokia N3310LCD screen. Using the USB serial and any terminal application, you can change the brightness to 4 led's. Instructions are on the screen to start. Enjoy and have fun! All feedback is welcome. Please email: d.b.searle@reading.ac.uk
Dependencies: N3310LCD mbed-rtos mbed Functions
Welcome
A simple program built with mbed and a Nokia N3310LCD screen. Using the USB serial and any terminal application, you can change the brightness to 4 led's. Instructions are on the screen to start. Enjoy and have fun! All feedback is welcome. Please email: d.b.searle@reading.ac.uk
main.cpp@0:1a5ac0d2b2f6, 2013-07-29 (annotated)
- Committer:
- Searle95
- Date:
- Mon Jul 29 10:17:17 2013 +0000
- Revision:
- 0:1a5ac0d2b2f6
- Child:
- 1:69297d522e83
New simple program. New improvements to be added to future revisions based on feedback.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Searle95 | 0:1a5ac0d2b2f6 | 1 | #include "mbed.h" |
Searle95 | 0:1a5ac0d2b2f6 | 2 | #include "N3310SPIConfig.h" |
Searle95 | 0:1a5ac0d2b2f6 | 3 | #include "N3310LCD.h" |
Searle95 | 0:1a5ac0d2b2f6 | 4 | #include "rtos.h" |
Searle95 | 0:1a5ac0d2b2f6 | 5 | #include <string> |
Searle95 | 0:1a5ac0d2b2f6 | 6 | |
Searle95 | 0:1a5ac0d2b2f6 | 7 | Serial pc(USBTX, USBRX); // tx, rx |
Searle95 | 0:1a5ac0d2b2f6 | 8 | PwmOut led1(LED1); |
Searle95 | 0:1a5ac0d2b2f6 | 9 | PwmOut led2(LED2); |
Searle95 | 0:1a5ac0d2b2f6 | 10 | PwmOut led3(LED3); |
Searle95 | 0:1a5ac0d2b2f6 | 11 | PwmOut led4(LED4); |
Searle95 | 0:1a5ac0d2b2f6 | 12 | |
Searle95 | 0:1a5ac0d2b2f6 | 13 | N3310LCD lcd(N3310SPIPort::MOSI, N3310SPIPort::MISO, N3310SPIPort::SCK, N3310SPIPort::CE, N3310SPIPort::DAT_CMD, N3310SPIPort::LCD_RST, N3310SPIPort::BL_ON); |
Searle95 | 0:1a5ac0d2b2f6 | 14 | |
Searle95 | 0:1a5ac0d2b2f6 | 15 | double all_bright = 0.0; |
Searle95 | 0:1a5ac0d2b2f6 | 16 | double led1_bright = 0.0; |
Searle95 | 0:1a5ac0d2b2f6 | 17 | double led2_bright = 0.0; |
Searle95 | 0:1a5ac0d2b2f6 | 18 | double led3_bright = 0.0; |
Searle95 | 0:1a5ac0d2b2f6 | 19 | double led4_bright = 0.0; |
Searle95 | 0:1a5ac0d2b2f6 | 20 | |
Searle95 | 0:1a5ac0d2b2f6 | 21 | int main() { |
Searle95 | 0:1a5ac0d2b2f6 | 22 | lcd.init(); |
Searle95 | 0:1a5ac0d2b2f6 | 23 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 24 | int main; |
Searle95 | 0:1a5ac0d2b2f6 | 25 | int line; |
Searle95 | 0:1a5ac0d2b2f6 | 26 | int loop; |
Searle95 | 0:1a5ac0d2b2f6 | 27 | |
Searle95 | 0:1a5ac0d2b2f6 | 28 | main = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 29 | line = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 30 | loop = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 31 | |
Searle95 | 0:1a5ac0d2b2f6 | 32 | while(main < 1) { |
Searle95 | 0:1a5ac0d2b2f6 | 33 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 34 | lcd.writeString(19, 2, "Welcome!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 35 | wait(2); |
Searle95 | 0:1a5ac0d2b2f6 | 36 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 37 | lcd.writeString(25, 0, "Intro", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 38 | lcd.writeString(2, 2, "Continue = c", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 39 | lcd.writeString(2, 3, "Skip = x", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 40 | char c = pc.getc(); |
Searle95 | 0:1a5ac0d2b2f6 | 41 | if(c == 'x') { |
Searle95 | 0:1a5ac0d2b2f6 | 42 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 43 | lcd.writeString(10, 2, "Please wait", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 44 | main += 1; |
Searle95 | 0:1a5ac0d2b2f6 | 45 | break; |
Searle95 | 0:1a5ac0d2b2f6 | 46 | } |
Searle95 | 0:1a5ac0d2b2f6 | 47 | else if(c == 'c') { |
Searle95 | 0:1a5ac0d2b2f6 | 48 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 49 | lcd.printf(" All = q "); |
Searle95 | 0:1a5ac0d2b2f6 | 50 | lcd.printf(" LED 1 = w & a"); |
Searle95 | 0:1a5ac0d2b2f6 | 51 | lcd.printf(" LED 2 = e & s"); |
Searle95 | 0:1a5ac0d2b2f6 | 52 | lcd.printf(" LED 3 = r & d"); |
Searle95 | 0:1a5ac0d2b2f6 | 53 | lcd.printf(" LED 4 = t & f"); |
Searle95 | 0:1a5ac0d2b2f6 | 54 | lcd.printf(" All = y "); |
Searle95 | 0:1a5ac0d2b2f6 | 55 | wait(5); |
Searle95 | 0:1a5ac0d2b2f6 | 56 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 57 | lcd.writeString(10, 2, "Please wait", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 58 | main += 1; |
Searle95 | 0:1a5ac0d2b2f6 | 59 | } |
Searle95 | 0:1a5ac0d2b2f6 | 60 | } |
Searle95 | 0:1a5ac0d2b2f6 | 61 | |
Searle95 | 0:1a5ac0d2b2f6 | 62 | while(loop < 82) { |
Searle95 | 0:1a5ac0d2b2f6 | 63 | wait(0.05); |
Searle95 | 0:1a5ac0d2b2f6 | 64 | lcd.writeString(line, 2, ".", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 65 | line += 1; |
Searle95 | 0:1a5ac0d2b2f6 | 66 | if(line == 82) { |
Searle95 | 0:1a5ac0d2b2f6 | 67 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 68 | lcd.writeString(25, 2, "Ready!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 69 | } |
Searle95 | 0:1a5ac0d2b2f6 | 70 | loop += 1; |
Searle95 | 0:1a5ac0d2b2f6 | 71 | } |
Searle95 | 0:1a5ac0d2b2f6 | 72 | |
Searle95 | 0:1a5ac0d2b2f6 | 73 | while(1){ |
Searle95 | 0:1a5ac0d2b2f6 | 74 | char c = pc.getc(); |
Searle95 | 0:1a5ac0d2b2f6 | 75 | if((c == 'q') && (all_bright < 0.9)) { |
Searle95 | 0:1a5ac0d2b2f6 | 76 | led1_bright += 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 77 | led2_bright += 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 78 | led3_bright += 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 79 | led4_bright += 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 80 | all_bright += 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 81 | led1 = led1_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 82 | led2 = led2_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 83 | led3 = led3_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 84 | led4 = led4_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 85 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 86 | lcd.writeString(5, 2, "All LED's On!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 87 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 88 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", all_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 89 | } |
Searle95 | 0:1a5ac0d2b2f6 | 90 | |
Searle95 | 0:1a5ac0d2b2f6 | 91 | if((c == 'y') && (all_bright > 0.0)) { |
Searle95 | 0:1a5ac0d2b2f6 | 92 | led1_bright -= 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 93 | led2_bright -= 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 94 | led3_bright -= 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 95 | led4_bright -= 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 96 | all_bright -= 1.0; |
Searle95 | 0:1a5ac0d2b2f6 | 97 | led1 = led1_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 98 | led2 = led2_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 99 | led3 = led3_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 100 | led4 = led4_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 101 | if(all_bright < 0.00) { |
Searle95 | 0:1a5ac0d2b2f6 | 102 | all_bright = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 103 | } |
Searle95 | 0:1a5ac0d2b2f6 | 104 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 105 | lcd.writeString(2, 2, "All LED's Off!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 106 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 107 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", all_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 108 | } |
Searle95 | 0:1a5ac0d2b2f6 | 109 | |
Searle95 | 0:1a5ac0d2b2f6 | 110 | if((c == 'w') && (led1_bright < 0.9)) { |
Searle95 | 0:1a5ac0d2b2f6 | 111 | led1_bright += 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 112 | led1 = led1_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 113 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 114 | lcd.writeString(15, 2, "LED 1 Up!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 115 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 116 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led1_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 117 | } |
Searle95 | 0:1a5ac0d2b2f6 | 118 | |
Searle95 | 0:1a5ac0d2b2f6 | 119 | if((c == 'a') && (led1_bright > 0.0)) { |
Searle95 | 0:1a5ac0d2b2f6 | 120 | led1_bright -= 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 121 | led1 = led1_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 122 | if(led1_bright < 0.00) { |
Searle95 | 0:1a5ac0d2b2f6 | 123 | led1_bright = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 124 | } |
Searle95 | 0:1a5ac0d2b2f6 | 125 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 126 | lcd.writeString(10, 2, "LED 1 Down!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 127 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 128 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led1_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 129 | } |
Searle95 | 0:1a5ac0d2b2f6 | 130 | |
Searle95 | 0:1a5ac0d2b2f6 | 131 | if((c == 'e') && (led2_bright < 0.9)) { |
Searle95 | 0:1a5ac0d2b2f6 | 132 | led2_bright += 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 133 | led2 = led2_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 134 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 135 | lcd.writeString(15, 2, "LED 2 Up!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 136 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 137 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led2_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 138 | } |
Searle95 | 0:1a5ac0d2b2f6 | 139 | |
Searle95 | 0:1a5ac0d2b2f6 | 140 | if((c == 's') && (led2_bright > 0.0)) { |
Searle95 | 0:1a5ac0d2b2f6 | 141 | led2_bright -= 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 142 | led2 = led2_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 143 | if(led2_bright < 0.00) { |
Searle95 | 0:1a5ac0d2b2f6 | 144 | led2_bright = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 145 | } |
Searle95 | 0:1a5ac0d2b2f6 | 146 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 147 | lcd.writeString(10, 2, "LED 2 Down!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 148 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 149 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led2_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 150 | } |
Searle95 | 0:1a5ac0d2b2f6 | 151 | |
Searle95 | 0:1a5ac0d2b2f6 | 152 | if((c == 'r') && (led3_bright < 0.9)) { |
Searle95 | 0:1a5ac0d2b2f6 | 153 | led3_bright += 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 154 | led3 = led3_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 155 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 156 | lcd.writeString(15, 2, "LED 3 Up!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 157 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 158 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led3_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 159 | } |
Searle95 | 0:1a5ac0d2b2f6 | 160 | |
Searle95 | 0:1a5ac0d2b2f6 | 161 | if((c == 'd') && (led3_bright > 0.0)) { |
Searle95 | 0:1a5ac0d2b2f6 | 162 | led3_bright -= 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 163 | led3 = led3_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 164 | if(led3_bright < 0.00) { |
Searle95 | 0:1a5ac0d2b2f6 | 165 | led3_bright = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 166 | } |
Searle95 | 0:1a5ac0d2b2f6 | 167 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 168 | lcd.writeString(10, 2, "LED 3 Down!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 169 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 170 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led3_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 171 | } |
Searle95 | 0:1a5ac0d2b2f6 | 172 | |
Searle95 | 0:1a5ac0d2b2f6 | 173 | if((c == 't') && (led4_bright < 0.9)) { |
Searle95 | 0:1a5ac0d2b2f6 | 174 | led4_bright += 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 175 | led4 = led4_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 176 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 177 | lcd.writeString(15, 2, "LED 4 Up!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 178 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 179 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led4_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 180 | } |
Searle95 | 0:1a5ac0d2b2f6 | 181 | |
Searle95 | 0:1a5ac0d2b2f6 | 182 | if((c == 'f') && (led4_bright > 0.0)) { |
Searle95 | 0:1a5ac0d2b2f6 | 183 | led4_bright -= 0.1; |
Searle95 | 0:1a5ac0d2b2f6 | 184 | led4 = led4_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 185 | if(led4_bright < 0.00) { |
Searle95 | 0:1a5ac0d2b2f6 | 186 | led4_bright = 0; |
Searle95 | 0:1a5ac0d2b2f6 | 187 | } |
Searle95 | 0:1a5ac0d2b2f6 | 188 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 189 | lcd.writeString(10, 2, "LED 4 Down!", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 190 | lcd.writeString(13, 4, "Brightness", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 191 | lcd.printf("\n\n\n\n\n\n\n\n\n%g", led4_bright); |
Searle95 | 0:1a5ac0d2b2f6 | 192 | } |
Searle95 | 0:1a5ac0d2b2f6 | 193 | |
Searle95 | 0:1a5ac0d2b2f6 | 194 | if(c == 'z') { |
Searle95 | 0:1a5ac0d2b2f6 | 195 | lcd.cls(); |
Searle95 | 0:1a5ac0d2b2f6 | 196 | lcd.writeString(25, 2, "System", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 197 | lcd.writeString(23, 3, "Restart", NORMAL); |
Searle95 | 0:1a5ac0d2b2f6 | 198 | all_bright = 1; |
Searle95 | 0:1a5ac0d2b2f6 | 199 | led1 = all_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 200 | led2 = all_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 201 | led3 = all_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 202 | led4 = all_bright; |
Searle95 | 0:1a5ac0d2b2f6 | 203 | wait(2); |
Searle95 | 0:1a5ac0d2b2f6 | 204 | NVIC_SystemReset(); |
Searle95 | 0:1a5ac0d2b2f6 | 205 | } |
Searle95 | 0:1a5ac0d2b2f6 | 206 | } |
Searle95 | 0:1a5ac0d2b2f6 | 207 | } |