Ticker added

Dependencies:   HIDScope MODSERIAL QEI mbed

Fork of Tau_new_ticker_toevoegen by V D

Committer:
ARGroenenboom
Date:
Thu Nov 02 09:30:04 2017 +0000
Revision:
7:05bef8a64a44
Parent:
6:d8c4c54e1077
Child:
8:62c7083f12d9
Ticker ?nd function hopefully work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ARGroenenboom 0:cf88b023a080 1 #include "mbed.h"
ARGroenenboom 0:cf88b023a080 2 #include "HIDScope.h"
ARGroenenboom 0:cf88b023a080 3 #include "QEI.h"
ARGroenenboom 0:cf88b023a080 4 #include "iostream"
vd 4:e22508afc194 5 #include "MODSERIAL.h"
ARGroenenboom 0:cf88b023a080 6
ARGroenenboom 0:cf88b023a080 7 //Leds
ARGroenenboom 0:cf88b023a080 8 DigitalOut ledb(LED_BLUE);
ARGroenenboom 0:cf88b023a080 9 DigitalOut ledr(LED_RED);
ARGroenenboom 0:cf88b023a080 10 DigitalOut ledg(LED_GREEN);
ARGroenenboom 0:cf88b023a080 11
ARGroenenboom 0:cf88b023a080 12 //Motor
ARGroenenboom 0:cf88b023a080 13 DigitalOut motor1DC(D7);
ARGroenenboom 0:cf88b023a080 14 PwmOut motor1PWM(D6);
ARGroenenboom 0:cf88b023a080 15
ARGroenenboom 0:cf88b023a080 16 //Button
ARGroenenboom 0:cf88b023a080 17 DigitalIn button1(SW2);
ARGroenenboom 0:cf88b023a080 18
ARGroenenboom 0:cf88b023a080 19 // HIDscope
ARGroenenboom 0:cf88b023a080 20 HIDScope scope(1);
ARGroenenboom 0:cf88b023a080 21
vd 4:e22508afc194 22 //Ticker
vd 4:e22508afc194 23 Ticker tick;
vd 4:e22508afc194 24 float f = 0.2;
ARGroenenboom 7:05bef8a64a44 25 int counter=0;
vd 4:e22508afc194 26
ARGroenenboom 0:cf88b023a080 27 // Encoder
vd 4:e22508afc194 28 float X = 32.0;
vd 4:e22508afc194 29 float N = 131.0;
ARGroenenboom 1:d2fe9abf5082 30 float pulse_count;
ARGroenenboom 1:d2fe9abf5082 31 float angle_motor;
vd 4:e22508afc194 32 QEI Encoder(D8,D9,NC,N);
vd 4:e22508afc194 33 MODSERIAL pc(USBTX,USBRX);
ARGroenenboom 0:cf88b023a080 34
ARGroenenboom 5:9b5ab304fe64 35 // Send angle to HIDScope and pc function
ARGroenenboom 7:05bef8a64a44 36 void Measure()
ARGroenenboom 5:9b5ab304fe64 37 {
ARGroenenboom 5:9b5ab304fe64 38 // Get pulses and calculate angle
ARGroenenboom 5:9b5ab304fe64 39 pulse_count = Encoder.getPulses();
ARGroenenboom 5:9b5ab304fe64 40 float angle_pp =360/(X * N);
ARGroenenboom 5:9b5ab304fe64 41 float angle = pulse_count*angle_pp;
ARGroenenboom 5:9b5ab304fe64 42
ARGroenenboom 5:9b5ab304fe64 43 // Send angle to HIDScope and pc
ARGroenenboom 5:9b5ab304fe64 44 scope.set(0, angle);
ARGroenenboom 5:9b5ab304fe64 45 scope.send();
ARGroenenboom 5:9b5ab304fe64 46 pc.printf(" pulse count: %f angle: %f \r \n ", pulse_count, angle);
ARGroenenboom 5:9b5ab304fe64 47
ARGroenenboom 7:05bef8a64a44 48 counter++;
ARGroenenboom 7:05bef8a64a44 49
ARGroenenboom 7:05bef8a64a44 50 // Turn motor off and reset encoder to reset pules count
ARGroenenboom 7:05bef8a64a44 51
ARGroenenboom 7:05bef8a64a44 52 if(counter==15)
ARGroenenboom 7:05bef8a64a44 53 {
ARGroenenboom 7:05bef8a64a44 54 motor1PWM = 0; // motor off
ARGroenenboom 5:9b5ab304fe64 55 Encoder.reset();
ARGroenenboom 7:05bef8a64a44 56 counter = 0;
ARGroenenboom 7:05bef8a64a44 57
ARGroenenboom 7:05bef8a64a44 58 // Show ready state through leds
ARGroenenboom 7:05bef8a64a44 59 wait(1.0); // wait before next roll to protect motors
ARGroenenboom 7:05bef8a64a44 60 ledr = 1; // red led off
ARGroenenboom 7:05bef8a64a44 61 ledb = 0; // blue led on = finished measuring
ARGroenenboom 7:05bef8a64a44 62 ledg = 1; // green led ff
ARGroenenboom 7:05bef8a64a44 63
ARGroenenboom 7:05bef8a64a44 64 }
ARGroenenboom 7:05bef8a64a44 65
ARGroenenboom 7:05bef8a64a44 66 //if(button1==false)
ARGroenenboom 7:05bef8a64a44 67 //{
ARGroenenboom 7:05bef8a64a44 68 // Roll();
ARGroenenboom 7:05bef8a64a44 69 //}
ARGroenenboom 5:9b5ab304fe64 70 }
ARGroenenboom 5:9b5ab304fe64 71
ARGroenenboom 0:cf88b023a080 72
ARGroenenboom 5:9b5ab304fe64 73 // Roll function
ARGroenenboom 5:9b5ab304fe64 74 void Roll()
ARGroenenboom 5:9b5ab304fe64 75 {
ARGroenenboom 5:9b5ab304fe64 76 // Show rolling state through leds
ARGroenenboom 5:9b5ab304fe64 77 ledg = 1; // green led off
ARGroenenboom 5:9b5ab304fe64 78 ledb = 1; // blue led off
ARGroenenboom 5:9b5ab304fe64 79 ledr = 0; // red led on = rolling
ARGroenenboom 0:cf88b023a080 80
ARGroenenboom 5:9b5ab304fe64 81 // Turn motor on for x time and turn it off again
ARGroenenboom 5:9b5ab304fe64 82 motor1PWM = 1; // motor on
ARGroenenboom 7:05bef8a64a44 83 tick.attach(&Measure, f);
ARGroenenboom 5:9b5ab304fe64 84
ARGroenenboom 7:05bef8a64a44 85 //wait(3.00); // Let motor turn for x time
ARGroenenboom 5:9b5ab304fe64 86 }
vd 3:48397c80d0e4 87
ARGroenenboom 0:cf88b023a080 88
ARGroenenboom 0:cf88b023a080 89 int main()
ARGroenenboom 0:cf88b023a080 90 {
ARGroenenboom 5:9b5ab304fe64 91 // Initialize system
vd 4:e22508afc194 92 pc.baud(9600);
vd 4:e22508afc194 93 motor1DC = -1;
ARGroenenboom 0:cf88b023a080 94 ledb = 1;
ARGroenenboom 0:cf88b023a080 95 ledr = 1;
ARGroenenboom 0:cf88b023a080 96 ledg = 0;
ARGroenenboom 5:9b5ab304fe64 97
ARGroenenboom 5:9b5ab304fe64 98 // Dice code
ARGroenenboom 5:9b5ab304fe64 99 if(button1==false)
ARGroenenboom 5:9b5ab304fe64 100 {
ARGroenenboom 5:9b5ab304fe64 101 Roll();
ARGroenenboom 5:9b5ab304fe64 102 }
ARGroenenboom 6:d8c4c54e1077 103
vd 4:e22508afc194 104
ARGroenenboom 5:9b5ab304fe64 105 // Perform main continuously
ARGroenenboom 5:9b5ab304fe64 106 while(true) {}
vd 4:e22508afc194 107 }
vd 4:e22508afc194 108
vd 4:e22508afc194 109 // screen /dev/tty.usbmodem1412 9600