aa

Dependencies:   mbed X_NUCLEO_IDB0XA1 SoftPWM USBDevice

Committer:
TakahitoNiino
Date:
Tue Apr 07 08:43:03 2020 +0000
Revision:
0:604d4d2d331d
a

Who changed what in which revision?

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