aa
Dependencies: mbed X_NUCLEO_IDB0XA1 SoftPWM USBDevice
main.cpp@0:604d4d2d331d, 2020-04-07 (annotated)
- Committer:
- TakahitoNiino
- Date:
- Tue Apr 07 08:43:03 2020 +0000
- Revision:
- 0:604d4d2d331d
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TakahitoNiino | 0:604d4d2d331d | 1 | #include "mbed.h" |
TakahitoNiino | 0:604d4d2d331d | 2 | #include "SoftPWM.h" |
TakahitoNiino | 0:604d4d2d331d | 3 | |
TakahitoNiino | 0:604d4d2d331d | 4 | #define LED_ON 0 |
TakahitoNiino | 0:604d4d2d331d | 5 | #define LED_OFF 1 |
TakahitoNiino | 0:604d4d2d331d | 6 | |
TakahitoNiino | 0:604d4d2d331d | 7 | #define TIME_5ms 5 |
TakahitoNiino | 0:604d4d2d331d | 8 | #define TIME_10ms 10 |
TakahitoNiino | 0:604d4d2d331d | 9 | #define TIME_50ms 50 |
TakahitoNiino | 0:604d4d2d331d | 10 | #define TIME_100ms 100 |
TakahitoNiino | 0:604d4d2d331d | 11 | #define TIME_500ms 500 |
TakahitoNiino | 0:604d4d2d331d | 12 | #define TIME_1s 1000 |
TakahitoNiino | 0:604d4d2d331d | 13 | |
TakahitoNiino | 0:604d4d2d331d | 14 | Ticker flipper; // Tick Timer |
TakahitoNiino | 0:604d4d2d331d | 15 | |
TakahitoNiino | 0:604d4d2d331d | 16 | //DigitalOut led_r(PA_15); |
TakahitoNiino | 0:604d4d2d331d | 17 | PwmOut led_r(PA_15); |
TakahitoNiino | 0:604d4d2d331d | 18 | PwmOut led_g(PB_10); |
TakahitoNiino | 0:604d4d2d331d | 19 | PwmOut led_b(PB_11); |
TakahitoNiino | 0:604d4d2d331d | 20 | //SoftPWM led_r(PA_15); |
TakahitoNiino | 0:604d4d2d331d | 21 | //DigitalOut mosi(PA_7,PullUp); |
TakahitoNiino | 0:604d4d2d331d | 22 | //DigitalOut miso(PA_6,PullUp); |
TakahitoNiino | 0:604d4d2d331d | 23 | //DigitalOut sck(PA_5,PullUp); |
TakahitoNiino | 0:604d4d2d331d | 24 | SPI spi(PA_7,PA_6,PA_5); |
TakahitoNiino | 0:604d4d2d331d | 25 | DigitalOut cs(PA_4); |
TakahitoNiino | 0:604d4d2d331d | 26 | //DigitalOut rstble(PC_6,PullUp); |
TakahitoNiino | 0:604d4d2d331d | 27 | DigitalOut rstble(PC_6); |
TakahitoNiino | 0:604d4d2d331d | 28 | |
TakahitoNiino | 0:604d4d2d331d | 29 | unsigned int syscnt = 0; // SystemCounter |
TakahitoNiino | 0:604d4d2d331d | 30 | unsigned char flg_led = 0; |
TakahitoNiino | 0:604d4d2d331d | 31 | unsigned char flg_cnt = 0; |
TakahitoNiino | 0:604d4d2d331d | 32 | unsigned char flg_spi = 0; |
TakahitoNiino | 0:604d4d2d331d | 33 | uint16_t cnt = 180; |
TakahitoNiino | 0:604d4d2d331d | 34 | double ledr_duty; // LED-Red PWM duty |
TakahitoNiino | 0:604d4d2d331d | 35 | double ledg_duty; // LED-Red PWM duty |
TakahitoNiino | 0:604d4d2d331d | 36 | double ledb_duty; // LED-Red PWM duty |
TakahitoNiino | 0:604d4d2d331d | 37 | |
TakahitoNiino | 0:604d4d2d331d | 38 | void flip() { |
TakahitoNiino | 0:604d4d2d331d | 39 | syscnt++; // increment SystemCounter |
TakahitoNiino | 0:604d4d2d331d | 40 | syscnt = syscnt % 86400000; |
TakahitoNiino | 0:604d4d2d331d | 41 | |
TakahitoNiino | 0:604d4d2d331d | 42 | if(syscnt % TIME_5ms == 0) { |
TakahitoNiino | 0:604d4d2d331d | 43 | flg_cnt = 1; |
TakahitoNiino | 0:604d4d2d331d | 44 | } |
TakahitoNiino | 0:604d4d2d331d | 45 | |
TakahitoNiino | 0:604d4d2d331d | 46 | if(syscnt % TIME_500ms == 0) { |
TakahitoNiino | 0:604d4d2d331d | 47 | flg_led = 1; |
TakahitoNiino | 0:604d4d2d331d | 48 | } |
TakahitoNiino | 0:604d4d2d331d | 49 | |
TakahitoNiino | 0:604d4d2d331d | 50 | if(syscnt % TIME_1s == 0) { |
TakahitoNiino | 0:604d4d2d331d | 51 | flg_spi = 1; |
TakahitoNiino | 0:604d4d2d331d | 52 | } |
TakahitoNiino | 0:604d4d2d331d | 53 | } |
TakahitoNiino | 0:604d4d2d331d | 54 | |
TakahitoNiino | 0:604d4d2d331d | 55 | int main() { |
TakahitoNiino | 0:604d4d2d331d | 56 | // led_r = LED_OFF; |
TakahitoNiino | 0:604d4d2d331d | 57 | // led_g = LED_OFF; |
TakahitoNiino | 0:604d4d2d331d | 58 | // led_b = LED_OFF; |
TakahitoNiino | 0:604d4d2d331d | 59 | |
TakahitoNiino | 0:604d4d2d331d | 60 | // led_r.period(); |
TakahitoNiino | 0:604d4d2d331d | 61 | // led_r.period_ms(1); // Set PWM Period 1ms |
TakahitoNiino | 0:604d4d2d331d | 62 | // ledr_duty = 1.0f; // Set Duty 0 |
TakahitoNiino | 0:604d4d2d331d | 63 | // led_r = ledr_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 64 | |
TakahitoNiino | 0:604d4d2d331d | 65 | // led_g.period_ms(1); // Set PWM Period 1ms |
TakahitoNiino | 0:604d4d2d331d | 66 | // ledg_duty = 0.0f; // Set Duty 0 |
TakahitoNiino | 0:604d4d2d331d | 67 | // led_g = ledr_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 68 | |
TakahitoNiino | 0:604d4d2d331d | 69 | // led_b.period_ms(1); // Set PWM Period 1ms |
TakahitoNiino | 0:604d4d2d331d | 70 | // ledb_duty = 0.0f; // Set Duty 0 |
TakahitoNiino | 0:604d4d2d331d | 71 | // led_b = ledr_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 72 | |
TakahitoNiino | 0:604d4d2d331d | 73 | spi.format(8,3); |
TakahitoNiino | 0:604d4d2d331d | 74 | spi.frequency(2000000); |
TakahitoNiino | 0:604d4d2d331d | 75 | |
TakahitoNiino | 0:604d4d2d331d | 76 | cs = 1; |
TakahitoNiino | 0:604d4d2d331d | 77 | rstble = 0; |
TakahitoNiino | 0:604d4d2d331d | 78 | wait(0.2); |
TakahitoNiino | 0:604d4d2d331d | 79 | rstble = 1; |
TakahitoNiino | 0:604d4d2d331d | 80 | wait(0.2); |
TakahitoNiino | 0:604d4d2d331d | 81 | |
TakahitoNiino | 0:604d4d2d331d | 82 | flipper.attach_us(&flip, 1000); // TickerTime Set 1ms |
TakahitoNiino | 0:604d4d2d331d | 83 | |
TakahitoNiino | 0:604d4d2d331d | 84 | while(1) { |
TakahitoNiino | 0:604d4d2d331d | 85 | if(flg_led) { |
TakahitoNiino | 0:604d4d2d331d | 86 | flg_led = 0; |
TakahitoNiino | 0:604d4d2d331d | 87 | // led_g = !led_g; |
TakahitoNiino | 0:604d4d2d331d | 88 | } |
TakahitoNiino | 0:604d4d2d331d | 89 | |
TakahitoNiino | 0:604d4d2d331d | 90 | if(flg_cnt) { |
TakahitoNiino | 0:604d4d2d331d | 91 | flg_cnt = 0; |
TakahitoNiino | 0:604d4d2d331d | 92 | ledr_duty = (sin(double(cnt) / 180 * 3.14f) + 1 ) / 2; |
TakahitoNiino | 0:604d4d2d331d | 93 | ledg_duty = (sin(double((cnt + 120) % 360) / 180 * 3.14f) + 1 ) / 2; |
TakahitoNiino | 0:604d4d2d331d | 94 | ledb_duty = (sin(double((cnt + 240) % 360) / 180 * 3.14f) + 1 ) / 2; |
TakahitoNiino | 0:604d4d2d331d | 95 | led_r = ledr_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 96 | led_g = ledg_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 97 | led_b = ledb_duty; // Set LED-Red Duty |
TakahitoNiino | 0:604d4d2d331d | 98 | cnt++; |
TakahitoNiino | 0:604d4d2d331d | 99 | cnt%=360; |
TakahitoNiino | 0:604d4d2d331d | 100 | } |
TakahitoNiino | 0:604d4d2d331d | 101 | |
TakahitoNiino | 0:604d4d2d331d | 102 | if(flg_spi) { |
TakahitoNiino | 0:604d4d2d331d | 103 | flg_spi = 0; |
TakahitoNiino | 0:604d4d2d331d | 104 | |
TakahitoNiino | 0:604d4d2d331d | 105 | spi.write(0x55); |
TakahitoNiino | 0:604d4d2d331d | 106 | } |
TakahitoNiino | 0:604d4d2d331d | 107 | |
TakahitoNiino | 0:604d4d2d331d | 108 | } |
TakahitoNiino | 0:604d4d2d331d | 109 | } |