K.I.T.T. Scanner (Knight Rider) http://mbed.org/users/okini3939/programs/KittScanner_sample/latest
KITTScanner.cpp@0:9d29ea3f1886, 2010-10-18 (annotated)
- Committer:
- okini3939
- Date:
- Mon Oct 18 14:27:30 2010 +0000
- Revision:
- 0:9d29ea3f1886
- Child:
- 1:bb116abfe905
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:9d29ea3f1886 | 1 | /* |
okini3939 | 0:9d29ea3f1886 | 2 | * mbed library for K.I.T.T. Scanner |
okini3939 | 0:9d29ea3f1886 | 3 | * Copyright (c) 2010 Hiroshi Suga |
okini3939 | 0:9d29ea3f1886 | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 0:9d29ea3f1886 | 5 | */ |
okini3939 | 0:9d29ea3f1886 | 6 | |
okini3939 | 0:9d29ea3f1886 | 7 | #include "mbed.h" |
okini3939 | 0:9d29ea3f1886 | 8 | #include "KITTScanner.h" |
okini3939 | 0:9d29ea3f1886 | 9 | |
okini3939 | 0:9d29ea3f1886 | 10 | PwmOut led[] = { |
okini3939 | 0:9d29ea3f1886 | 11 | PwmOut(LED1), |
okini3939 | 0:9d29ea3f1886 | 12 | PwmOut(LED2), |
okini3939 | 0:9d29ea3f1886 | 13 | PwmOut(LED3), |
okini3939 | 0:9d29ea3f1886 | 14 | PwmOut(LED4) |
okini3939 | 0:9d29ea3f1886 | 15 | }; |
okini3939 | 0:9d29ea3f1886 | 16 | |
okini3939 | 0:9d29ea3f1886 | 17 | //KITTScanner::KITTScanner () : led{LED1, LED2, LED3, LED4} { |
okini3939 | 0:9d29ea3f1886 | 18 | /* |
okini3939 | 0:9d29ea3f1886 | 19 | KITTScanner::KITTScanner () { |
okini3939 | 0:9d29ea3f1886 | 20 | new(led + 0) PwmOut(LED1); |
okini3939 | 0:9d29ea3f1886 | 21 | new(led + 1) PwmOut(LED2); |
okini3939 | 0:9d29ea3f1886 | 22 | new(led + 2) PwmOut(LED3); |
okini3939 | 0:9d29ea3f1886 | 23 | new(led + 3) PwmOut(LED4); |
okini3939 | 0:9d29ea3f1886 | 24 | */ |
okini3939 | 0:9d29ea3f1886 | 25 | KITTScanner::KITTScanner () { |
okini3939 | 0:9d29ea3f1886 | 26 | } |
okini3939 | 0:9d29ea3f1886 | 27 | |
okini3939 | 0:9d29ea3f1886 | 28 | void KITTScanner::start (float speed) { |
okini3939 | 0:9d29ea3f1886 | 29 | int i; |
okini3939 | 0:9d29ea3f1886 | 30 | |
okini3939 | 0:9d29ea3f1886 | 31 | for (i = 0; i < 4; i ++) |
okini3939 | 0:9d29ea3f1886 | 32 | bright[i] = 0.0; |
okini3939 | 0:9d29ea3f1886 | 33 | num = 0; |
okini3939 | 0:9d29ea3f1886 | 34 | kill = 0; |
okini3939 | 0:9d29ea3f1886 | 35 | ticker.attach(this, &KITTScanner::int_KITTScanner, speed / 6.0); |
okini3939 | 0:9d29ea3f1886 | 36 | } |
okini3939 | 0:9d29ea3f1886 | 37 | |
okini3939 | 0:9d29ea3f1886 | 38 | void KITTScanner::stop (int flg) { |
okini3939 | 0:9d29ea3f1886 | 39 | int i; |
okini3939 | 0:9d29ea3f1886 | 40 | |
okini3939 | 0:9d29ea3f1886 | 41 | if (flg) { |
okini3939 | 0:9d29ea3f1886 | 42 | ticker.detach(); |
okini3939 | 0:9d29ea3f1886 | 43 | for (i = 0; i < 4; i ++) |
okini3939 | 0:9d29ea3f1886 | 44 | led[i] = 0.0; |
okini3939 | 0:9d29ea3f1886 | 45 | } else { |
okini3939 | 0:9d29ea3f1886 | 46 | kill = 1; |
okini3939 | 0:9d29ea3f1886 | 47 | } |
okini3939 | 0:9d29ea3f1886 | 48 | } |
okini3939 | 0:9d29ea3f1886 | 49 | |
okini3939 | 0:9d29ea3f1886 | 50 | void KITTScanner::int_KITTScanner () { |
okini3939 | 0:9d29ea3f1886 | 51 | int i, flg; |
okini3939 | 0:9d29ea3f1886 | 52 | |
okini3939 | 0:9d29ea3f1886 | 53 | for (i = 0; i < 4; i ++) { |
okini3939 | 0:9d29ea3f1886 | 54 | led[i] = bright[i]; |
okini3939 | 0:9d29ea3f1886 | 55 | bright[i] = bright[i] / 3.0; |
okini3939 | 0:9d29ea3f1886 | 56 | if (bright[i] < (1.0 / 3.0 / 3.0)) bright[i] = 0.0; |
okini3939 | 0:9d29ea3f1886 | 57 | } |
okini3939 | 0:9d29ea3f1886 | 58 | |
okini3939 | 0:9d29ea3f1886 | 59 | if (! kill) { |
okini3939 | 0:9d29ea3f1886 | 60 | if (num >= 0) { |
okini3939 | 0:9d29ea3f1886 | 61 | bright[num] = 1.0; |
okini3939 | 0:9d29ea3f1886 | 62 | num ++; |
okini3939 | 0:9d29ea3f1886 | 63 | if (num > 3) num = -2; |
okini3939 | 0:9d29ea3f1886 | 64 | } else { |
okini3939 | 0:9d29ea3f1886 | 65 | bright[- num] = 1.0; |
okini3939 | 0:9d29ea3f1886 | 66 | num ++; |
okini3939 | 0:9d29ea3f1886 | 67 | } |
okini3939 | 0:9d29ea3f1886 | 68 | } else { |
okini3939 | 0:9d29ea3f1886 | 69 | flg = 0; |
okini3939 | 0:9d29ea3f1886 | 70 | for (i = 0; i < 4; i ++) |
okini3939 | 0:9d29ea3f1886 | 71 | if (bright[i] > 0) flg = 1; |
okini3939 | 0:9d29ea3f1886 | 72 | if (! flg) { |
okini3939 | 0:9d29ea3f1886 | 73 | ticker.detach(); |
okini3939 | 0:9d29ea3f1886 | 74 | for (i = 0; i < 4; i ++) |
okini3939 | 0:9d29ea3f1886 | 75 | led[i] = 0.0; |
okini3939 | 0:9d29ea3f1886 | 76 | } |
okini3939 | 0:9d29ea3f1886 | 77 | } |
okini3939 | 0:9d29ea3f1886 | 78 | } |