2532
Dependencies: QEI WS2812 PixelArray DFPlayerMini MODSERIAL PCA9685_ pca9685
main.cpp@0:474fb16588bf, 2019-06-02 (annotated)
- Committer:
- dimavb
- Date:
- Sun Jun 02 14:42:26 2019 +0000
- Revision:
- 0:474fb16588bf
- Child:
- 2:ed1f45f9b06a
start
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dimavb | 0:474fb16588bf | 1 | /* mbed Microcontroller Library |
dimavb | 0:474fb16588bf | 2 | * Copyright (c) 2018 ARM Limited |
dimavb | 0:474fb16588bf | 3 | * SPDX-License-Identifier: Apache-2.0 |
dimavb | 0:474fb16588bf | 4 | */ |
dimavb | 0:474fb16588bf | 5 | |
dimavb | 0:474fb16588bf | 6 | #include "mbed.h" |
dimavb | 0:474fb16588bf | 7 | #include "stats_report.h" |
dimavb | 0:474fb16588bf | 8 | #include "PCA9685.h" |
dimavb | 0:474fb16588bf | 9 | #include "QEI.h" |
dimavb | 0:474fb16588bf | 10 | #include "WS2812.h" |
dimavb | 0:474fb16588bf | 11 | #include "PixelArray.h" |
dimavb | 0:474fb16588bf | 12 | #include "DebounceIn.h" |
dimavb | 0:474fb16588bf | 13 | |
dimavb | 0:474fb16588bf | 14 | |
dimavb | 0:474fb16588bf | 15 | //InterruptIn int0 (PB_0); |
dimavb | 0:474fb16588bf | 16 | //enc pb2 pb4 |
dimavb | 0:474fb16588bf | 17 | //zero pb5 |
dimavb | 0:474fb16588bf | 18 | DebounceIn zerosens(PB_6); |
dimavb | 0:474fb16588bf | 19 | QEI enc(PB_2,PB_4,NC,1); |
dimavb | 0:474fb16588bf | 20 | I2C i2c (PB_9,PB_8); |
dimavb | 0:474fb16588bf | 21 | PCA9685 pwmouts(0x40<<1,i2c,500); |
dimavb | 0:474fb16588bf | 22 | WS2812 ws(PB_15,500, 0, 18, 10, 15); |
dimavb | 0:474fb16588bf | 23 | PixelArray px(500); |
dimavb | 0:474fb16588bf | 24 | DigitalOut led1(LED1); |
dimavb | 0:474fb16588bf | 25 | |
dimavb | 0:474fb16588bf | 26 | #define SLEEP_TIME 200 // (msec) |
dimavb | 0:474fb16588bf | 27 | #define PRINT_AFTER_N_LOOPS 20 |
dimavb | 0:474fb16588bf | 28 | #define REVCNT 500 |
dimavb | 0:474fb16588bf | 29 | |
dimavb | 0:474fb16588bf | 30 | void int0f (void) |
dimavb | 0:474fb16588bf | 31 | { |
dimavb | 0:474fb16588bf | 32 | led1=!led1; |
dimavb | 0:474fb16588bf | 33 | } |
dimavb | 0:474fb16588bf | 34 | void encworker() |
dimavb | 0:474fb16588bf | 35 | { |
dimavb | 0:474fb16588bf | 36 | printf("hello encoder\n"); |
dimavb | 0:474fb16588bf | 37 | int pos=0; |
dimavb | 0:474fb16588bf | 38 | int pos_=0; |
dimavb | 0:474fb16588bf | 39 | int npos=0; |
dimavb | 0:474fb16588bf | 40 | int lastdirection=0; |
dimavb | 0:474fb16588bf | 41 | while(1) |
dimavb | 0:474fb16588bf | 42 | { |
dimavb | 0:474fb16588bf | 43 | if (zerosens.ntrig()) |
dimavb | 0:474fb16588bf | 44 | { |
dimavb | 0:474fb16588bf | 45 | printf("zero\n"); |
dimavb | 0:474fb16588bf | 46 | npos=enc.getPulses(); |
dimavb | 0:474fb16588bf | 47 | enc.reset(); |
dimavb | 0:474fb16588bf | 48 | } |
dimavb | 0:474fb16588bf | 49 | pos=enc.getPulses(); |
dimavb | 0:474fb16588bf | 50 | |
dimavb | 0:474fb16588bf | 51 | printf("pos: %d \t%d \t%d\n",pos,npos,zerosens.read()); |
dimavb | 0:474fb16588bf | 52 | wait(0.1); |
dimavb | 0:474fb16588bf | 53 | } |
dimavb | 0:474fb16588bf | 54 | } |
dimavb | 0:474fb16588bf | 55 | void ledworker() |
dimavb | 0:474fb16588bf | 56 | { |
dimavb | 0:474fb16588bf | 57 | printf("hello leds\n"); |
dimavb | 0:474fb16588bf | 58 | |
dimavb | 0:474fb16588bf | 59 | ws.useII(WS2812::OFF); // use no intensity scaling |
dimavb | 0:474fb16588bf | 60 | Timer t; |
dimavb | 0:474fb16588bf | 61 | t.start(); |
dimavb | 0:474fb16588bf | 62 | while(1) |
dimavb | 0:474fb16588bf | 63 | { |
dimavb | 0:474fb16588bf | 64 | int p=(enc.getPulses()%160)/10; |
dimavb | 0:474fb16588bf | 65 | for (uint8_t i=0; i<15; i++) |
dimavb | 0:474fb16588bf | 66 | { |
dimavb | 0:474fb16588bf | 67 | if (i==p) pwmouts.set_pwm_duty(i,1); else pwmouts.set_pwm_duty(i,0); |
dimavb | 0:474fb16588bf | 68 | } |
dimavb | 0:474fb16588bf | 69 | px.SetAll(3000000+t.read_ms()); |
dimavb | 0:474fb16588bf | 70 | |
dimavb | 0:474fb16588bf | 71 | //ws.write(px.getBuf()); |
dimavb | 0:474fb16588bf | 72 | wait(0.02); |
dimavb | 0:474fb16588bf | 73 | } |
dimavb | 0:474fb16588bf | 74 | } |
dimavb | 0:474fb16588bf | 75 | int main() |
dimavb | 0:474fb16588bf | 76 | { |
dimavb | 0:474fb16588bf | 77 | Thread ledsthread; |
dimavb | 0:474fb16588bf | 78 | Thread encthread; |
dimavb | 0:474fb16588bf | 79 | |
dimavb | 0:474fb16588bf | 80 | ledsthread.start(ledworker); |
dimavb | 0:474fb16588bf | 81 | encthread.start(encworker); |
dimavb | 0:474fb16588bf | 82 | printf("hello\n"); |
dimavb | 0:474fb16588bf | 83 | pwmouts.init(); |
dimavb | 0:474fb16588bf | 84 | float v=0; |
dimavb | 0:474fb16588bf | 85 | Timer t; |
dimavb | 0:474fb16588bf | 86 | t.start(); |
dimavb | 0:474fb16588bf | 87 | while (true) |
dimavb | 0:474fb16588bf | 88 | { |
dimavb | 0:474fb16588bf | 89 | wait(10); |
dimavb | 0:474fb16588bf | 90 | printf("TITS!\n (.)(.)\n"); |
dimavb | 0:474fb16588bf | 91 | } |
dimavb | 0:474fb16588bf | 92 | } |