K.I.T.T. Scanner (Knight Rider) http://mbed.org/users/okini3939/programs/KittScanner_sample/latest

Committer:
okini3939
Date:
Mon Oct 18 14:27:30 2010 +0000
Revision:
0:9d29ea3f1886
Child:
1:bb116abfe905

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }