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: mbed 4DGL-uLCD-SE
main.cpp@1:dc89a801cfa2, 2021-04-07 (annotated)
- Committer:
- glanier9
- Date:
- Wed Apr 07 15:10:47 2021 +0000
- Revision:
- 1:dc89a801cfa2
- Parent:
- 0:a91a9be54fc2
Added a comment to remind to delete comments before submission;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| glanier9 | 1:dc89a801cfa2 | 1 | /* |
| glanier9 | 1:dc89a801cfa2 | 2 | |
| glanier9 | 1:dc89a801cfa2 | 3 | DELETE ANY COMMENTS BEFORE SUBMITTING EXAM |
| glanier9 | 1:dc89a801cfa2 | 4 | |
| glanier9 | 1:dc89a801cfa2 | 5 | */ |
| glanier9 | 1:dc89a801cfa2 | 6 | |
| glanier9 | 1:dc89a801cfa2 | 7 | |
| glanier9 | 0:a91a9be54fc2 | 8 | // Given Includes and Global Vars |
| glanier9 | 0:a91a9be54fc2 | 9 | |
| glanier9 | 0:a91a9be54fc2 | 10 | |
| glanier9 | 0:a91a9be54fc2 | 11 | // Added Global Vars |
| glanier9 | 0:a91a9be54fc2 | 12 | Mutex LCD; |
| glanier9 | 0:a91a9be54fc2 | 13 | Timer timer; |
| glanier9 | 0:a91a9be54fc2 | 14 | |
| glanier9 | 0:a91a9be54fc2 | 15 | |
| glanier9 | 0:a91a9be54fc2 | 16 | // Thread Callbacks |
| glanier9 | 0:a91a9be54fc2 | 17 | void callback1(void const *argument) |
| glanier9 | 0:a91a9be54fc2 | 18 | { |
| glanier9 | 0:a91a9be54fc2 | 19 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 20 | |
| glanier9 | 0:a91a9be54fc2 | 21 | Thread::wait(500); |
| glanier9 | 0:a91a9be54fc2 | 22 | } |
| glanier9 | 0:a91a9be54fc2 | 23 | } |
| glanier9 | 0:a91a9be54fc2 | 24 | |
| glanier9 | 0:a91a9be54fc2 | 25 | void callback2(void const *argument) |
| glanier9 | 0:a91a9be54fc2 | 26 | { |
| glanier9 | 0:a91a9be54fc2 | 27 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 28 | |
| glanier9 | 0:a91a9be54fc2 | 29 | Thread::wait(500); |
| glanier9 | 0:a91a9be54fc2 | 30 | } |
| glanier9 | 0:a91a9be54fc2 | 31 | } |
| glanier9 | 0:a91a9be54fc2 | 32 | |
| glanier9 | 0:a91a9be54fc2 | 33 | void callback3(void const *argument) |
| glanier9 | 0:a91a9be54fc2 | 34 | { |
| glanier9 | 0:a91a9be54fc2 | 35 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 36 | |
| glanier9 | 0:a91a9be54fc2 | 37 | Thread::wait(500); |
| glanier9 | 0:a91a9be54fc2 | 38 | } |
| glanier9 | 0:a91a9be54fc2 | 39 | } |
| glanier9 | 0:a91a9be54fc2 | 40 | |
| glanier9 | 0:a91a9be54fc2 | 41 | void callback4(void const *argument) |
| glanier9 | 0:a91a9be54fc2 | 42 | { |
| glanier9 | 0:a91a9be54fc2 | 43 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 44 | |
| glanier9 | 0:a91a9be54fc2 | 45 | Thread::wait(500); |
| glanier9 | 0:a91a9be54fc2 | 46 | } |
| glanier9 | 0:a91a9be54fc2 | 47 | } |
| glanier9 | 0:a91a9be54fc2 | 48 | |
| glanier9 | 0:a91a9be54fc2 | 49 | void callback5(void const *argument) |
| glanier9 | 0:a91a9be54fc2 | 50 | { |
| glanier9 | 0:a91a9be54fc2 | 51 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 52 | |
| glanier9 | 0:a91a9be54fc2 | 53 | Thread::wait(500); |
| glanier9 | 0:a91a9be54fc2 | 54 | } |
| glanier9 | 0:a91a9be54fc2 | 55 | } |
| glanier9 | 0:a91a9be54fc2 | 56 | |
| glanier9 | 0:a91a9be54fc2 | 57 | //Main Thread |
| glanier9 | 0:a91a9be54fc2 | 58 | int main() |
| glanier9 | 0:a91a9be54fc2 | 59 | { |
| glanier9 | 0:a91a9be54fc2 | 60 | // Assign Any Pullup Modes (if not done already) |
| glanier9 | 0:a91a9be54fc2 | 61 | |
| glanier9 | 0:a91a9be54fc2 | 62 | // Set Speaker Period |
| glanier9 | 0:a91a9be54fc2 | 63 | speaker.period(1.0/800.0); // 1/Hz |
| glanier9 | 0:a91a9be54fc2 | 64 | |
| glanier9 | 0:a91a9be54fc2 | 65 | // uLCD Init |
| glanier9 | 0:a91a9be54fc2 | 66 | uLCD.cls(); |
| glanier9 | 0:a91a9be54fc2 | 67 | uLCD.baudrate(3000000); //jack up baud rate to max |
| glanier9 | 0:a91a9be54fc2 | 68 | uLCD.text_height(2); |
| glanier9 | 0:a91a9be54fc2 | 69 | uLCD.text_width(2); |
| glanier9 | 0:a91a9be54fc2 | 70 | uLCD.color(RED); |
| glanier9 | 0:a91a9be54fc2 | 71 | uLCD.locate(2,1); |
| glanier9 | 0:a91a9be54fc2 | 72 | uLCD.printf("Text"); |
| glanier9 | 0:a91a9be54fc2 | 73 | |
| glanier9 | 0:a91a9be54fc2 | 74 | // Start other Threads |
| glanier9 | 0:a91a9be54fc2 | 75 | Thread thread2(callback2); |
| glanier9 | 0:a91a9be54fc2 | 76 | Thread thread3(callabck3); |
| glanier9 | 0:a91a9be54fc2 | 77 | Thread thread4(callback4); |
| glanier9 | 0:a91a9be54fc2 | 78 | Thread thread5(callback5); |
| glanier9 | 0:a91a9be54fc2 | 79 | |
| glanier9 | 0:a91a9be54fc2 | 80 | // Start timers (if any) |
| glanier9 | 0:a91a9be54fc2 | 81 | |
| glanier9 | 0:a91a9be54fc2 | 82 | //Continue Main Thread (thread1) |
| glanier9 | 0:a91a9be54fc2 | 83 | while(1) { |
| glanier9 | 0:a91a9be54fc2 | 84 | |
| glanier9 | 0:a91a9be54fc2 | 85 | |
| glanier9 | 0:a91a9be54fc2 | 86 | Thread::wait(1000); |
| glanier9 | 0:a91a9be54fc2 | 87 | } |
| glanier9 | 0:a91a9be54fc2 | 88 | } |