K.I.T.T. Scanner (Knight Rider) http://mbed.org/users/okini3939/programs/KittScanner_sample/latest
KITTScanner.cpp
- Committer:
- okini3939
- Date:
- 2010-10-18
- Revision:
- 0:9d29ea3f1886
- Child:
- 1:bb116abfe905
File content as of revision 0:9d29ea3f1886:
/* * mbed library for K.I.T.T. Scanner * Copyright (c) 2010 Hiroshi Suga * Released under the MIT License: http://mbed.org/license/mit */ #include "mbed.h" #include "KITTScanner.h" PwmOut led[] = { PwmOut(LED1), PwmOut(LED2), PwmOut(LED3), PwmOut(LED4) }; //KITTScanner::KITTScanner () : led{LED1, LED2, LED3, LED4} { /* KITTScanner::KITTScanner () { new(led + 0) PwmOut(LED1); new(led + 1) PwmOut(LED2); new(led + 2) PwmOut(LED3); new(led + 3) PwmOut(LED4); */ KITTScanner::KITTScanner () { } void KITTScanner::start (float speed) { int i; for (i = 0; i < 4; i ++) bright[i] = 0.0; num = 0; kill = 0; ticker.attach(this, &KITTScanner::int_KITTScanner, speed / 6.0); } void KITTScanner::stop (int flg) { int i; if (flg) { ticker.detach(); for (i = 0; i < 4; i ++) led[i] = 0.0; } else { kill = 1; } } void KITTScanner::int_KITTScanner () { int i, flg; for (i = 0; i < 4; i ++) { led[i] = bright[i]; bright[i] = bright[i] / 3.0; if (bright[i] < (1.0 / 3.0 / 3.0)) bright[i] = 0.0; } if (! kill) { if (num >= 0) { bright[num] = 1.0; num ++; if (num > 3) num = -2; } else { bright[- num] = 1.0; num ++; } } else { flg = 0; for (i = 0; i < 4; i ++) if (bright[i] > 0) flg = 1; if (! flg) { ticker.detach(); for (i = 0; i < 4; i ++) led[i] = 0.0; } } }