2532

Dependencies:   QEI WS2812 PixelArray DFPlayerMini MODSERIAL PCA9685_ pca9685

Committer:
dimavb
Date:
Sun Jun 02 14:42:26 2019 +0000
Revision:
0:474fb16588bf
Child:
2:ed1f45f9b06a
start

Who changed what in which revision?

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