Инструменты пользователя

Инструменты сайта


lesson5

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
lesson5 [2019/05/14 11:15]
golikov [Получение сырых данных для калибровки магнитометра]
lesson5 [2020/03/25 16:28] (текущий)
Строка 113: Строка 113:
  print "​Enable magnetometer",​ mag_num   print "​Enable magnetometer",​ mag_num
  magnetometer_turn_on(mag_num)  magnetometer_turn_on(mag_num)
- sleep(1)+ sleep(10)
  mag_state = 0 # Инициализируем статус магнитометра  mag_state = 0 # Инициализируем статус магнитометра
  alpha_goal = 0 # Целевой угол  alpha_goal = 0 # Целевой угол
  omega_goal = 0 # Целевая угловая скорость  omega_goal = 0 # Целевая угловая скорость
- for i in range(60):+ for i in range(12):
  mag_state,​ magx_raw, magy_raw, magz_raw = magnetometer_request_raw(mag_num) # опрос магнитометра  mag_state,​ magx_raw, magy_raw, magz_raw = magnetometer_request_raw(mag_num) # опрос магнитометра
  if not mag_state: # если код ошибки 0, то ошибки нет  if not mag_state: # если код ошибки 0, то ошибки нет
Строка 144: Строка 144:
 #include <​math.h>​ #include <​math.h>​
 void control(void){ void control(void){
- int time_step = 1;+ int time_step = 10;
  uint16_t mag_num = 1;  uint16_t mag_num = 1;
  printf("​Enable magnetometer %d\n", mag_num);  printf("​Enable magnetometer %d\n", mag_num);
Строка 158: Строка 158:
  int16_t *pRAW_dataZ = &​p_dataZ;​  int16_t *pRAW_dataZ = &​p_dataZ;​
  int i;  int i;
- for (i = 0; i < 60; i++){+ for (i = 0; i < 12; i++){
  mag_state = magnetometer_request_raw(mag_num,​ pRAW_dataX, pRAW_dataY, pRAW_dataZ);​  mag_state = magnetometer_request_raw(mag_num,​ pRAW_dataX, pRAW_dataY, pRAW_dataZ);​
  float mag_alpha;  float mag_alpha;
Строка 232: Строка 232:
  
 Теперь очень хорошо видно, что значения далеки от идеального 12 угольника радиусом 30. Теперь очень хорошо видно, что значения далеки от идеального 12 угольника радиусом 30.
 +
 +
 +{{:​2_1.gif?​direct|}}
  
 ==== Анализ данных с помощью функций ==== ==== Анализ данных с помощью функций ====
Строка 298: Строка 301:
  Sleep(1);  Sleep(1);
  int i;  int i;
- for (i = 0; i < 1000; i++) //​Выполним 500 измерений+ for (i = 0; i < 500; i++) //​Выполним 500 измерений
  {  {
  mgn_result[0] = magnetometer_request_raw(num,​ &​mgn_result[1],&​mgn_result[2],&​mgn_result[3]);​  mgn_result[0] = magnetometer_request_raw(num,​ &​mgn_result[1],&​mgn_result[2],&​mgn_result[3]);​
Строка 321: Строка 324:
 Поэтому считанные данные мы помещаем в список mgn_result, состоящий из 4 значений. Поэтому считанные данные мы помещаем в список mgn_result, состоящий из 4 значений.
 mgn_result = [0,0,0,0] mgn_result = [0,0,0,0]
-<​code ​python> mgn_result = magnetometer_request_raw(num) </​code> ​+<​code ​c>​mgn_result = magnetometer_request_raw(num) </​code> ​
 Первое значение списка возвращает информацию об ошибке. Если возвращено значение 0,то ошибки нет, если 1, то датчик не соединен,​ если 2, то ошибка в программе. Первое значение списка возвращает информацию об ошибке. Если возвращено значение 0,то ошибки нет, если 1, то датчик не соединен,​ если 2, то ошибка в программе.
-В программе использован оператор цикла for i in range(1000) который будет выполнен ​1000 раз, соответственно будет выведено ​1000 значений.+В программе использован оператор цикла ​<code c>for (i = 0; i < 500; i++)</​code> ​который будет выполнен ​500 раз, соответственно будет выведено ​500 значений.
 Эти значения понадобятся на следующем уроке при калибровке магнитометра. Эти значения понадобятся на следующем уроке при калибровке магнитометра.
  
  
  
lesson5.1557821749.txt.gz · Последние изменения: 2020/03/25 16:29 (внешнее изменение)

Инструменты страницы