
Successful acro and level mode now! Relying on MPU9250 as base sensor. I'm working continuously on tuning and features :) NEWEST VERSION ON: https://github.com/MaEtUgR/FlyBed (CODE 100% compatible/copyable)
LED/LED.cpp@8:609a2ad4c30e, 2015-11-19 (annotated)
- Committer:
- maetugr
- Date:
- Thu Nov 19 18:47:27 2015 +0000
- Revision:
- 8:609a2ad4c30e
- Parent:
- 0:37f0c1e8fa66
made I2C-Sensors working in parallel, added rolling buffer for PID derivative, played with the PID and frequency parameters in main
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
maetugr | 0:37f0c1e8fa66 | 1 | #include "LED.h" |
maetugr | 0:37f0c1e8fa66 | 2 | #include "mbed.h" |
maetugr | 0:37f0c1e8fa66 | 3 | |
maetugr | 0:37f0c1e8fa66 | 4 | LED::LED() : Led(LED1, LED2, LED3, LED4){ |
maetugr | 0:37f0c1e8fa66 | 5 | roller = 0; |
maetugr | 0:37f0c1e8fa66 | 6 | } |
maetugr | 0:37f0c1e8fa66 | 7 | |
maetugr | 0:37f0c1e8fa66 | 8 | void LED::shownumber(int number) { |
maetugr | 0:37f0c1e8fa66 | 9 | Led = number; |
maetugr | 0:37f0c1e8fa66 | 10 | } |
maetugr | 0:37f0c1e8fa66 | 11 | |
maetugr | 0:37f0c1e8fa66 | 12 | void LED::ride(int times = 1) { |
maetugr | 0:37f0c1e8fa66 | 13 | Led = 0; |
maetugr | 0:37f0c1e8fa66 | 14 | for (int j = 0; j < times; j++) { |
maetugr | 0:37f0c1e8fa66 | 15 | for(int i=0; i < 4; i++) { |
maetugr | 0:37f0c1e8fa66 | 16 | Led = 1 << i; |
maetugr | 0:37f0c1e8fa66 | 17 | wait(0.2); |
maetugr | 0:37f0c1e8fa66 | 18 | } |
maetugr | 0:37f0c1e8fa66 | 19 | } |
maetugr | 0:37f0c1e8fa66 | 20 | Led = 0; |
maetugr | 0:37f0c1e8fa66 | 21 | } |
maetugr | 0:37f0c1e8fa66 | 22 | |
maetugr | 0:37f0c1e8fa66 | 23 | void LED::roll(int times = 1) { |
maetugr | 0:37f0c1e8fa66 | 24 | Led = 0; |
maetugr | 0:37f0c1e8fa66 | 25 | for (int j = 0; j < (times*2); j++) { |
maetugr | 0:37f0c1e8fa66 | 26 | for(int roller = 1; roller <= 4; roller++) { |
maetugr | 0:37f0c1e8fa66 | 27 | tilt(roller); |
maetugr | 0:37f0c1e8fa66 | 28 | wait(0.1); |
maetugr | 0:37f0c1e8fa66 | 29 | } |
maetugr | 0:37f0c1e8fa66 | 30 | } |
maetugr | 0:37f0c1e8fa66 | 31 | roller = 0; |
maetugr | 0:37f0c1e8fa66 | 32 | Led = 0; |
maetugr | 0:37f0c1e8fa66 | 33 | } |
maetugr | 0:37f0c1e8fa66 | 34 | |
maetugr | 0:37f0c1e8fa66 | 35 | void LED::rollnext() { |
maetugr | 0:37f0c1e8fa66 | 36 | if (roller >= 4) |
maetugr | 0:37f0c1e8fa66 | 37 | roller = 0; |
maetugr | 0:37f0c1e8fa66 | 38 | roller++; |
maetugr | 0:37f0c1e8fa66 | 39 | tilt(roller); |
maetugr | 0:37f0c1e8fa66 | 40 | } |
maetugr | 0:37f0c1e8fa66 | 41 | |
maetugr | 0:37f0c1e8fa66 | 42 | void LED::tilt(int index) { |
maetugr | 0:37f0c1e8fa66 | 43 | Led = Led ^ (1 << (index-1)); //XOR |
maetugr | 0:37f0c1e8fa66 | 44 | } |
maetugr | 0:37f0c1e8fa66 | 45 | |
maetugr | 0:37f0c1e8fa66 | 46 | void LED::set(int index) { |
maetugr | 0:37f0c1e8fa66 | 47 | Led = Led | (1 << (index-1)); //OR |
maetugr | 0:37f0c1e8fa66 | 48 | } |
maetugr | 0:37f0c1e8fa66 | 49 | |
maetugr | 0:37f0c1e8fa66 | 50 | void LED::reset(int index) { |
maetugr | 0:37f0c1e8fa66 | 51 | Led = Led & ~(1 << (index-1)); //OR |
maetugr | 0:37f0c1e8fa66 | 52 | } |
maetugr | 0:37f0c1e8fa66 | 53 | |
maetugr | 0:37f0c1e8fa66 | 54 | int LED::check(int index) { |
maetugr | 0:37f0c1e8fa66 | 55 | return Led & (1 << (index-1)); |
maetugr | 0:37f0c1e8fa66 | 56 | } |
maetugr | 0:37f0c1e8fa66 | 57 | |
maetugr | 0:37f0c1e8fa66 | 58 | void LED::operator=(int value) { |
maetugr | 0:37f0c1e8fa66 | 59 | Led = value; |
maetugr | 0:37f0c1e8fa66 | 60 | } |