Chris Elsholz / Mbed 2 deprecated Quadrocopter

Dependencies:   mbed TextLCD

Fork of Quadrocopter by Marco Friedmann

Committer:
MarcoF89
Date:
Sun Aug 06 20:24:18 2017 +0000
Revision:
7:a54c97795013
Parent:
6:27a09e8bebfb
Child:
12:4a4dad7a3432
Taster, Poti und Q-Brain integriert

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MarcoF89 4:3eaf38e4809f 1 #include "mbed.h"
MarcoF89 4:3eaf38e4809f 2 #include "stdio.h"
MarcoF89 4:3eaf38e4809f 3
MarcoF89 6:27a09e8bebfb 4 int16_t high, low;
MarcoF89 4:3eaf38e4809f 5
MarcoF89 4:3eaf38e4809f 6 extern Serial pc(SERIAL_TX, SERIAL_RX);
MarcoF89 4:3eaf38e4809f 7 extern SPI spi(PE_6,PE_5,PE_2); //mosi,miso,sclk
MarcoF89 4:3eaf38e4809f 8 extern DigitalOut ncs(PE_4); //ssel
MarcoF89 4:3eaf38e4809f 9
MarcoF89 7:a54c97795013 10 extern AnalogIn potis_1 (PF_3);
MarcoF89 7:a54c97795013 11 extern AnalogIn potis_2 (PF_10);
MarcoF89 7:a54c97795013 12 extern AnalogIn potis_3 (PF_4);
MarcoF89 7:a54c97795013 13 extern AnalogIn potis_4 (PF_5);
MarcoF89 7:a54c97795013 14
MarcoF89 7:a54c97795013 15 extern DigitalIn taster1 (PG_7);
MarcoF89 7:a54c97795013 16 extern DigitalIn taster2 (PD_10);
MarcoF89 7:a54c97795013 17 extern DigitalIn taster3 (PG_14);
MarcoF89 7:a54c97795013 18 extern DigitalIn taster4 (PF_12);
MarcoF89 7:a54c97795013 19
MarcoF89 7:a54c97795013 20
chriselsholz 5:584acd257531 21 /**********************/
chriselsholz 5:584acd257531 22 /*Initialisieren**Gyro*/
chriselsholz 5:584acd257531 23 /**********************/
chriselsholz 5:584acd257531 24 int initialisierung_gyro()
chriselsholz 5:584acd257531 25 {
chriselsholz 5:584acd257531 26 spi.format(8,0);
chriselsholz 5:584acd257531 27 spi.frequency(1000000);
chriselsholz 5:584acd257531 28
chriselsholz 5:584acd257531 29 ncs = 0;
chriselsholz 5:584acd257531 30 spi.write(0x6B); // Register 107
chriselsholz 5:584acd257531 31 spi.write(0x80); //Reset // Standby off
chriselsholz 5:584acd257531 32 ncs = 1;
chriselsholz 5:584acd257531 33 wait_ms(1000);
chriselsholz 5:584acd257531 34
chriselsholz 5:584acd257531 35
chriselsholz 5:584acd257531 36 ncs=0;
chriselsholz 5:584acd257531 37 spi.write(0x1A); //CONFIG write // DLPF_CFG // Register 26
chriselsholz 5:584acd257531 38 spi.write(0x06); //Bandwidth: 250Hz// Delay: 0.97ms// Fs: 8kHz
chriselsholz 5:584acd257531 39 ncs = 1;
chriselsholz 5:584acd257531 40 wait_ms(1);
chriselsholz 5:584acd257531 41
chriselsholz 5:584acd257531 42 ncs=0;
chriselsholz 5:584acd257531 43 spi.write(0x1B); //Gyro_CONFIG write
chriselsholz 5:584acd257531 44 spi.write(0x18); //Max. Skalenwert//00=+250dps;08=+500dps;10=+1000dps;18=+2000dps
chriselsholz 5:584acd257531 45 ncs = 1;
chriselsholz 5:584acd257531 46 wait_ms(1);
chriselsholz 5:584acd257531 47
chriselsholz 5:584acd257531 48 ncs = 0;
chriselsholz 5:584acd257531 49 spi.write(0x17); // Register 23
MarcoF89 6:27a09e8bebfb 50 spi.write(0x00); // Offset High Byte Z
chriselsholz 5:584acd257531 51 ncs = 1;
chriselsholz 5:584acd257531 52 wait_ms(1);
chriselsholz 5:584acd257531 53
chriselsholz 5:584acd257531 54 ncs = 0;
chriselsholz 5:584acd257531 55 spi.write(0x18); // Register 24
MarcoF89 6:27a09e8bebfb 56 spi.write(0x17); // Offset Low Byte Z
chriselsholz 5:584acd257531 57 ncs = 1;
chriselsholz 5:584acd257531 58 wait_ms(1000);
chriselsholz 5:584acd257531 59 }
chriselsholz 5:584acd257531 60
chriselsholz 5:584acd257531 61 /**********************/
chriselsholz 5:584acd257531 62 /*Initialisieren Acc */
chriselsholz 5:584acd257531 63 /**********************/
chriselsholz 5:584acd257531 64
chriselsholz 5:584acd257531 65 int16_t initialisierung_acc ()
chriselsholz 5:584acd257531 66 {
chriselsholz 5:584acd257531 67 int i,faktor = 0x00;
chriselsholz 5:584acd257531 68 for(i=0;i<=2;i++)
chriselsholz 5:584acd257531 69 {
chriselsholz 5:584acd257531 70 ncs=0;
chriselsholz 5:584acd257531 71 spi.write(0x1c); //ACC_CONFIG write
chriselsholz 5:584acd257531 72 spi.write(faktor); //Skalierung 00=2g;08=4g;10=8g;18=16g
chriselsholz 5:584acd257531 73 ncs=1; //Teilung 16384;8192;4096;2048
chriselsholz 5:584acd257531 74 wait_us(0.1);
chriselsholz 5:584acd257531 75
chriselsholz 5:584acd257531 76 ncs=0;
chriselsholz 5:584acd257531 77 spi.write(0x1d); //ACC_CONFIG_2 08=460Hz;09=184Hz;0a=92Hz
MarcoF89 6:27a09e8bebfb 78 spi.write(0x0e); //TP-Filter 0b=41Hz;0c=20Hz;0d=10Hz;0e=5Hz
chriselsholz 5:584acd257531 79 ncs=1;
chriselsholz 5:584acd257531 80 wait_us(0.1);
chriselsholz 5:584acd257531 81 }
chriselsholz 5:584acd257531 82 switch (faktor)
chriselsholz 5:584acd257531 83 {
chriselsholz 5:584acd257531 84 case 0x00: return 16384; break;
chriselsholz 5:584acd257531 85 case 0x08: return 8192; break;
chriselsholz 5:584acd257531 86 case 0x10: return 4096; break;
chriselsholz 5:584acd257531 87 case 0x18: return 2048; break;
chriselsholz 5:584acd257531 88 }
chriselsholz 5:584acd257531 89 }
chriselsholz 5:584acd257531 90
chriselsholz 5:584acd257531 91
chriselsholz 5:584acd257531 92 /***************/
chriselsholz 5:584acd257531 93 /*Messen Gyro Z*/
chriselsholz 5:584acd257531 94 /***************/
MarcoF89 4:3eaf38e4809f 95
MarcoF89 6:27a09e8bebfb 96 int16_t aktuell_gyro_z()
MarcoF89 6:27a09e8bebfb 97 {
MarcoF89 4:3eaf38e4809f 98 ncs = 0;
MarcoF89 4:3eaf38e4809f 99 spi.write(0xc7); //Z_OUT_H
MarcoF89 6:27a09e8bebfb 100 high = spi.write(0x0);
MarcoF89 6:27a09e8bebfb 101 ncs = 1;
MarcoF89 6:27a09e8bebfb 102 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 103
MarcoF89 6:27a09e8bebfb 104 ncs = 0;
MarcoF89 6:27a09e8bebfb 105 spi.write(0xc8); //Z_OUT_L
MarcoF89 6:27a09e8bebfb 106 low = spi.write(0x0);
MarcoF89 6:27a09e8bebfb 107 ncs = 1;
MarcoF89 6:27a09e8bebfb 108 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 109 return (low | high << 8);
MarcoF89 6:27a09e8bebfb 110 }
MarcoF89 6:27a09e8bebfb 111
MarcoF89 6:27a09e8bebfb 112 /***************/
MarcoF89 6:27a09e8bebfb 113 /*Messen Gyro X*/
MarcoF89 6:27a09e8bebfb 114 /***************/
MarcoF89 6:27a09e8bebfb 115
MarcoF89 6:27a09e8bebfb 116 int16_t aktuell_gyro_x()
MarcoF89 6:27a09e8bebfb 117 {
MarcoF89 6:27a09e8bebfb 118 ncs = 0;
MarcoF89 6:27a09e8bebfb 119 spi.write(0xc3); //Z_OUT_H
MarcoF89 6:27a09e8bebfb 120 high = spi.write(0x0);
MarcoF89 4:3eaf38e4809f 121 ncs = 1;
MarcoF89 4:3eaf38e4809f 122 wait_us(1);
MarcoF89 4:3eaf38e4809f 123
MarcoF89 4:3eaf38e4809f 124 ncs = 0;
MarcoF89 6:27a09e8bebfb 125 spi.write(0xc4); //Z_OUT_L
MarcoF89 6:27a09e8bebfb 126 low = spi.write(0x0);
MarcoF89 4:3eaf38e4809f 127 ncs = 1;
MarcoF89 6:27a09e8bebfb 128 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 129 return low | high << 8;;
MarcoF89 6:27a09e8bebfb 130 }
MarcoF89 6:27a09e8bebfb 131
MarcoF89 6:27a09e8bebfb 132 /***************/
MarcoF89 6:27a09e8bebfb 133 /*Messen Gyro Y*/
MarcoF89 6:27a09e8bebfb 134 /***************/
MarcoF89 6:27a09e8bebfb 135
MarcoF89 6:27a09e8bebfb 136 int16_t aktuell_gyro_y()
MarcoF89 6:27a09e8bebfb 137 {
MarcoF89 6:27a09e8bebfb 138 ncs = 0;
MarcoF89 6:27a09e8bebfb 139 spi.write(0xc5); //Z_OUT_H
MarcoF89 6:27a09e8bebfb 140 high = spi.write(0x0);
MarcoF89 6:27a09e8bebfb 141 ncs = 1;
MarcoF89 6:27a09e8bebfb 142 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 143
MarcoF89 6:27a09e8bebfb 144 ncs = 0;
MarcoF89 6:27a09e8bebfb 145 spi.write(0xc6); //Z_OUT_L
MarcoF89 6:27a09e8bebfb 146 low = spi.write(0x0);
MarcoF89 6:27a09e8bebfb 147 ncs = 1;
MarcoF89 6:27a09e8bebfb 148 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 149 return low | high << 8;
MarcoF89 4:3eaf38e4809f 150 }
MarcoF89 4:3eaf38e4809f 151
chriselsholz 5:584acd257531 152 /************/
chriselsholz 5:584acd257531 153 /*Messen Acc*/
chriselsholz 5:584acd257531 154 /************/
MarcoF89 4:3eaf38e4809f 155
chriselsholz 5:584acd257531 156 int16_t aktuell_acc_x ()
chriselsholz 5:584acd257531 157 {
MarcoF89 4:3eaf38e4809f 158 ncs=0;
chriselsholz 5:584acd257531 159 spi.write(0xbb);
MarcoF89 6:27a09e8bebfb 160 high = spi.write(0x0);
chriselsholz 5:584acd257531 161 ncs=1;
chriselsholz 5:584acd257531 162 wait_us(0.1);
chriselsholz 5:584acd257531 163
chriselsholz 5:584acd257531 164 ncs=0;
chriselsholz 5:584acd257531 165 spi.write(0xbc);
MarcoF89 6:27a09e8bebfb 166 low = spi.write(0x0);
chriselsholz 5:584acd257531 167 ncs=1;
MarcoF89 6:27a09e8bebfb 168 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 169 return low | high<<8;
chriselsholz 5:584acd257531 170 }
MarcoF89 4:3eaf38e4809f 171
chriselsholz 5:584acd257531 172 int16_t aktuell_acc_y ()
chriselsholz 5:584acd257531 173 {
chriselsholz 5:584acd257531 174 ncs=0;
chriselsholz 5:584acd257531 175 spi.write(0xbd);
MarcoF89 6:27a09e8bebfb 176 high = spi.write(0x0);
chriselsholz 5:584acd257531 177 ncs=1;
chriselsholz 5:584acd257531 178 wait_us(0.1);
chriselsholz 5:584acd257531 179
chriselsholz 5:584acd257531 180 ncs=0;
chriselsholz 5:584acd257531 181 spi.write(0xbe);
MarcoF89 6:27a09e8bebfb 182 low = spi.write(0x0);
chriselsholz 5:584acd257531 183 ncs=1;
MarcoF89 6:27a09e8bebfb 184 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 185 return low | high<<8;
chriselsholz 5:584acd257531 186 }
MarcoF89 4:3eaf38e4809f 187
chriselsholz 5:584acd257531 188 int16_t aktuell_acc_z ()
chriselsholz 5:584acd257531 189 {
chriselsholz 5:584acd257531 190 ncs=0;
chriselsholz 5:584acd257531 191 spi.write(0xbf);
MarcoF89 6:27a09e8bebfb 192 high = spi.write(0x0);
chriselsholz 5:584acd257531 193 ncs=1;
chriselsholz 5:584acd257531 194 wait_us(0.1);
chriselsholz 5:584acd257531 195
chriselsholz 5:584acd257531 196 ncs=0;
chriselsholz 5:584acd257531 197 spi.write(0xc0);
MarcoF89 6:27a09e8bebfb 198 low = spi.write(0x0);
MarcoF89 6:27a09e8bebfb 199 ncs=1;
MarcoF89 6:27a09e8bebfb 200 wait_us(0.1);
MarcoF89 6:27a09e8bebfb 201 return low | high<<8;
chriselsholz 5:584acd257531 202 }