NIT Fukui / Serial6050Yaw

Dependents:   R1Arobo_Maika_B 2021Arobo_UMAPYOI 2021Arobo_YUMIPYOI

Committer:
yopcyuuu
Date:
Fri Oct 05 07:34:34 2018 +0000
Revision:
2:00a8daf9203b
Parent:
1:97a3a91ce950
Child:
3:601cfc41e50a
change overflow

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yopcyuuu 0:c3d09c97649b 1 #include "Serial6050.h"
yopcyuuu 0:c3d09c97649b 2
yopcyuuu 0:c3d09c97649b 3 Serial6050::Serial6050(PinName tx, PinName rx, PinName resetPin)
yopcyuuu 2:00a8daf9203b 4 : serial(tx, rx, 38400), rst(resetPin), Deg(0), Bias(0)
yopcyuuu 0:c3d09c97649b 5 {
yopcyuuu 0:c3d09c97649b 6 }
yopcyuuu 0:c3d09c97649b 7
yopcyuuu 0:c3d09c97649b 8 void Serial6050::init()
yopcyuuu 0:c3d09c97649b 9 {
yopcyuuu 0:c3d09c97649b 10 rst = 0;
yopcyuuu 0:c3d09c97649b 11 wait(0.2);
yopcyuuu 0:c3d09c97649b 12 rst = 1;
yopcyuuu 0:c3d09c97649b 13 while(1) {
yopcyuuu 0:c3d09c97649b 14 serial.putc(100);
yopcyuuu 0:c3d09c97649b 15 if(serial.readable()) {
yopcyuuu 1:97a3a91ce950 16 if(serial.getc()) break;
yopcyuuu 0:c3d09c97649b 17 }
yopcyuuu 0:c3d09c97649b 18 }
yopcyuuu 0:c3d09c97649b 19 serial.attach(this, &Serial6050::intReceive, RawSerial::RxIrq);
yopcyuuu 0:c3d09c97649b 20 wait(0.1);
yopcyuuu 0:c3d09c97649b 21 reset();
yopcyuuu 0:c3d09c97649b 22 }
yopcyuuu 0:c3d09c97649b 23
yopcyuuu 2:00a8daf9203b 24 void Serial6050::intReceive()
yopcyuuu 2:00a8daf9203b 25 {
yopcyuuu 2:00a8daf9203b 26 data = serial.getc();
yopcyuuu 2:00a8daf9203b 27 static uint8_t old = data;
yopcyuuu 2:00a8daf9203b 28
yopcyuuu 2:00a8daf9203b 29 if(data > old && data - old > 127) {
yopcyuuu 2:00a8daf9203b 30 Bias -= 255;
yopcyuuu 2:00a8daf9203b 31 } else if(data < old && old - data > 127) {
yopcyuuu 2:00a8daf9203b 32 Bias += 255;
yopcyuuu 2:00a8daf9203b 33 } else {
yopcyuuu 2:00a8daf9203b 34
yopcyuuu 2:00a8daf9203b 35 }
yopcyuuu 2:00a8daf9203b 36 Deg = data + Bias;
yopcyuuu 2:00a8daf9203b 37 old = data;
yopcyuuu 2:00a8daf9203b 38 }
yopcyuuu 2:00a8daf9203b 39
yopcyuuu 0:c3d09c97649b 40 void Serial6050::reset()
yopcyuuu 0:c3d09c97649b 41 {
yopcyuuu 2:00a8daf9203b 42 resetValue = Deg;
yopcyuuu 0:c3d09c97649b 43 }
yopcyuuu 0:c3d09c97649b 44
yopcyuuu 0:c3d09c97649b 45
yopcyuuu 0:c3d09c97649b 46
yopcyuuu 0:c3d09c97649b 47 float Serial6050::read()
yopcyuuu 0:c3d09c97649b 48 {
yopcyuuu 2:00a8daf9203b 49 return (Deg - resetValue) / 10.0;
yopcyuuu 0:c3d09c97649b 50 }