Interrupt changes LED

Dependencies:   m3pi mbed

Fork of Test1 by Martin Ofalt Jr.

Committer:
wqz9822
Date:
Thu Oct 15 16:51:04 2015 +0000
Revision:
1:963bf6581114
Parent:
0:1da3cc3bc3a5
Interrupt changes LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
powerstrokediesel97 0:1da3cc3bc3a5 1 #include "mbed.h"
wqz9822 1:963bf6581114 2 #include "m3pi.h"
powerstrokediesel97 0:1da3cc3bc3a5 3
wqz9822 1:963bf6581114 4 //Ticker toggler1; // periodic interrupt routines
powerstrokediesel97 0:1da3cc3bc3a5 5 InterruptIn risingEdge(p16);
powerstrokediesel97 0:1da3cc3bc3a5 6
wqz9822 1:963bf6581114 7 m3pi m3pi;
wqz9822 1:963bf6581114 8 Serial Wixel(p28, p27); // tx, rx
wqz9822 1:963bf6581114 9 AnalogIn analog (p20);
powerstrokediesel97 0:1da3cc3bc3a5 10 DigitalOut myled(LED1);
wqz9822 1:963bf6581114 11
wqz9822 1:963bf6581114 12 int behaviour;
wqz9822 1:963bf6581114 13 float inc;
wqz9822 1:963bf6581114 14 bool incCurve;
wqz9822 1:963bf6581114 15 bool sign = true;
wqz9822 1:963bf6581114 16 volatile int ledValue;
powerstrokediesel97 0:1da3cc3bc3a5 17
wqz9822 1:963bf6581114 18 void changeCurve()
wqz9822 1:963bf6581114 19 {
wqz9822 1:963bf6581114 20 if (sign)
wqz9822 1:963bf6581114 21 {
wqz9822 1:963bf6581114 22 inc = 0.35;
wqz9822 1:963bf6581114 23 }
wqz9822 1:963bf6581114 24 else
wqz9822 1:963bf6581114 25 {
wqz9822 1:963bf6581114 26 inc = 0.45;
wqz9822 1:963bf6581114 27 }
wqz9822 1:963bf6581114 28 sign = !sign;
wqz9822 1:963bf6581114 29 }
powerstrokediesel97 0:1da3cc3bc3a5 30
wqz9822 1:963bf6581114 31 //Generate series of circles with different radius
wqz9822 1:963bf6581114 32 void seriesOfCircle()
wqz9822 1:963bf6581114 33 {
wqz9822 1:963bf6581114 34 if(incCurve)
wqz9822 1:963bf6581114 35 {
wqz9822 1:963bf6581114 36 inc += 0.001;
wqz9822 1:963bf6581114 37 }
wqz9822 1:963bf6581114 38 else
wqz9822 1:963bf6581114 39 {
wqz9822 1:963bf6581114 40 inc -= 0.001;
powerstrokediesel97 0:1da3cc3bc3a5 41 }
wqz9822 1:963bf6581114 42
wqz9822 1:963bf6581114 43 if(inc >= 0.6){incCurve = false;}
wqz9822 1:963bf6581114 44 if(inc <= 0.45){incCurve = true;}
wqz9822 1:963bf6581114 45 }
wqz9822 1:963bf6581114 46
wqz9822 1:963bf6581114 47 void toggleLED()
wqz9822 1:963bf6581114 48 {
wqz9822 1:963bf6581114 49
wqz9822 1:963bf6581114 50 if (ledValue == 0)
wqz9822 1:963bf6581114 51 {
wqz9822 1:963bf6581114 52 ledValue = 1;
wqz9822 1:963bf6581114 53 }
wqz9822 1:963bf6581114 54 else
wqz9822 1:963bf6581114 55 {
wqz9822 1:963bf6581114 56 ledValue = 0;
wqz9822 1:963bf6581114 57 }
wqz9822 1:963bf6581114 58
wqz9822 1:963bf6581114 59 myled = ledValue;
wqz9822 1:963bf6581114 60
wqz9822 1:963bf6581114 61 }
wqz9822 1:963bf6581114 62
wqz9822 1:963bf6581114 63 unsigned int random_generator (void)
wqz9822 1:963bf6581114 64 {
wqz9822 1:963bf6581114 65 unsigned int x = 0;
wqz9822 1:963bf6581114 66 unsigned int iRandom = 0;
wqz9822 1:963bf6581114 67
wqz9822 1:963bf6581114 68 for (x = 0; x <= 32; x += 2)
wqz9822 1:963bf6581114 69 {
wqz9822 1:963bf6581114 70 iRandom += ((analog.read_u16() % 3) << x);
wqz9822 1:963bf6581114 71 wait_us (10);
wqz9822 1:963bf6581114 72 }
wqz9822 1:963bf6581114 73
wqz9822 1:963bf6581114 74 return iRandom;
powerstrokediesel97 0:1da3cc3bc3a5 75 }
powerstrokediesel97 0:1da3cc3bc3a5 76
powerstrokediesel97 0:1da3cc3bc3a5 77 //main program
wqz9822 1:963bf6581114 78 int main()
wqz9822 1:963bf6581114 79 {
wqz9822 1:963bf6581114 80
wqz9822 1:963bf6581114 81 Wixel.baud(115200);
wqz9822 1:963bf6581114 82 //srand (random_generator()); // Using ADC value to generate random seed
wqz9822 1:963bf6581114 83 risingEdge.rise(&toggleLED);
wqz9822 1:963bf6581114 84 ledValue = 0;
wqz9822 1:963bf6581114 85 //toggler1.attach(&changeCurve,0.9); // toggles curve every 900 ms
wqz9822 1:963bf6581114 86 //inc = 0.45;
wqz9822 1:963bf6581114 87 //incCurve = true;
wqz9822 1:963bf6581114 88 while(1)
wqz9822 1:963bf6581114 89 {
wqz9822 1:963bf6581114 90 //behaviour = rand() % 5 + 1;
wqz9822 1:963bf6581114 91 switch (behaviour)
wqz9822 1:963bf6581114 92 {
wqz9822 1:963bf6581114 93 case 1:
wqz9822 1:963bf6581114 94 // This is for testing rose curve
wqz9822 1:963bf6581114 95 //m3pi.left_motor(inc);
wqz9822 1:963bf6581114 96 //wait(0.1);
wqz9822 1:963bf6581114 97 //m3pi.right_motor(0.7);
wqz9822 1:963bf6581114 98 //wait(0.1);
wqz9822 1:963bf6581114 99 break;
wqz9822 1:963bf6581114 100 case 2:
wqz9822 1:963bf6581114 101
wqz9822 1:963bf6581114 102 break;
powerstrokediesel97 0:1da3cc3bc3a5 103 }
wqz9822 1:963bf6581114 104 }
powerstrokediesel97 0:1da3cc3bc3a5 105
powerstrokediesel97 0:1da3cc3bc3a5 106 }
powerstrokediesel97 0:1da3cc3bc3a5 107
powerstrokediesel97 0:1da3cc3bc3a5 108