Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
lesson6 [2020/02/04 12:26] golikov |
lesson6 [2021/10/18 12:45] (текущий) golikov [Анализ работы программы] |
||
---|---|---|---|
Строка 17: | Строка 17: | ||
if not mgn_result[0]: #Если датчик не вернул сообщение об ошибке | if not mgn_result[0]: #Если датчик не вернул сообщение об ошибке | ||
print mgn_result[1], mgn_result[2], mgn_result[3] | print mgn_result[1], mgn_result[2], mgn_result[3] | ||
- | sleep(0.05) #Задержка пять сотых секунды | + | sleep(0.05) #Задержка пять сотых секунды |
magnetometer_turn_off(num) #Выключение магнитометра | magnetometer_turn_off(num) #Выключение магнитометра | ||
</file> | </file> | ||
- | + | ||
- | Код на С. | + | Код на С. |
<file c raw_data.c> | <file c raw_data.c> | ||
#include <stdio.h> | #include <stdio.h> | ||
- | #include <stdint.h> | + | #include <stdint.h> |
void control(void){ //Основная программа, в которой вызываем остальные функции | void control(void){ //Основная программа, в которой вызываем остальные функции | ||
Строка 30: | Строка 30: | ||
int16_t mgn_result[] = {0, 0, 0, 0}; //Инициализируем mgn_result | int16_t mgn_result[] = {0, 0, 0, 0}; //Инициализируем mgn_result | ||
uint16_t num = 1; | uint16_t num = 1; | ||
- | magnetometer_turn_on(num); //Включаем магнитометр | + | magnetometer_turn_on(num); //Включаем магнитометр |
mSleep(1000); | mSleep(1000); | ||
int i; | int i; | ||
- | for (i = 0; i < 500; 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]); | ||
Строка 43: | Строка 43: | ||
magnetometer_turn_off(num); | magnetometer_turn_off(num); | ||
} | } | ||
- | </file> | + | </file> |
Соедините БКУ с СЭП и магнитометром как на прошлом уроке. Не прикрепляйте магнитометр к пластине, чтобы его было удобно вращать. Загрузите программу в Орбикрафт и запустите ее. Хаотично вращайте магнитометр, чтобы собрать сырые данные со всех возможных направлений. | Соедините БКУ с СЭП и магнитометром как на прошлом уроке. Не прикрепляйте магнитометр к пластине, чтобы его было удобно вращать. Загрузите программу в Орбикрафт и запустите ее. Хаотично вращайте магнитометр, чтобы собрать сырые данные со всех возможных направлений. | ||
Строка 55: | Строка 55: | ||
<code python>magnetometer_turn_on(num)</code> – функция включения магнитометра, где num – это номер магнитометра. | <code python>magnetometer_turn_on(num)</code> – функция включения магнитометра, где num – это номер магнитометра. | ||
<code python>magnetometer_request_raw(num)</code> – функция возвращающая сырые данные измеренные магнитометром с номером num, представляющие собой список из 4 числовых значений. | <code python>magnetometer_request_raw(num)</code> – функция возвращающая сырые данные измеренные магнитометром с номером num, представляющие собой список из 4 числовых значений. | ||
- | Поэтому считанные данные мы помещаем в список mgn_result, состоящий из 4 значений. | + | Поэтому считанные данные мы помещаем в список mgn_result, состоящий из 4 значений. |
<code python> | <code python> | ||
mgn_result = [0,0,0,0] | mgn_result = [0,0,0,0] | ||
mgn_result = magnetometer_request_raw(num) | mgn_result = magnetometer_request_raw(num) | ||
</code> | </code> | ||
+ | |||
Первое значение списка возвращает информацию об ошибке. Если возвращено значение 0, то ошибки нет, если 1, то датчик не соединен, если 2, то ошибка в программе. | Первое значение списка возвращает информацию об ошибке. Если возвращено значение 0, то ошибки нет, если 1, то датчик не соединен, если 2, то ошибка в программе. | ||
- | В программе использован оператор цикла for i in range(1000) который будет выполнен 1000 раз, соответственно будет выведено 1000 значений. | + | В программе использован оператор цикла **for i in range(1000)** который будет выполнен 1000 раз, соответственно будет выведено 1000 значений. |
Эти значения понадобятся на следующем уроке при калибровке магнитометра. | Эти значения понадобятся на следующем уроке при калибровке магнитометра. | ||
Строка 141: | Строка 142: | ||
{{::06image020.png?nolink&600|}} | {{::06image020.png?nolink&600|}} | ||
+ | |||
+ | <note important> | ||
+ | Обратите внимание! Три верхних нормировочных коэффициента, отвечающие за смещение ноля, вставляются в формулу с обратными знаками, в отличие от остальных коэффициентов, описывающих искажения эллипсоида. | ||
+ | </note> | ||
Код на Python. | Код на Python. |