Форум программистов, компьютерный форум, киберфорум
Наши страницы
Arduino
Войти
Регистрация
Восстановить пароль
 
Deczy
0 / 0 / 1
Регистрация: 16.02.2016
Сообщений: 101
#1

Mag3110 output - Arduino

13.03.2018, 16:28. Просмотров 137. Ответов 3
Метки нет (Все метки)

Здравствуйте у меня такая проблема никогда не работал с arduino но дали задание с датчика mag3110 вытянуть output и на их основе построить график
каким образом мне это сделать может быть какой-то сокет есть для потока данных?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2018, 16:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Mag3110 output (Arduino):

Что может значить такая ошибка. Ambiguity between 'Output' and 'System::Output'
Если кто может, помогите разобраться с этой ошибкой. Unit1.cpp(85): E2015...

как сделать в MS VS 2010 express output не в консоль в output windows
сабж заранее спасибо

Output в Си
Всем привет, как мне сделать здесь чтоб после последнего значения которое будет...

Output get val()
Такая проблемка. Скачал плагин rangeslider(бегунок). Так вот. ПОставил все...

Output to new file
Товарищи. такая задача имеется лог фаил в который ежедневно записываются логи...

Output to new file
Output to new file Товарищи. такая задача имеется лог фаил в который...

3
marat_miaki
149 / 138 / 87
Регистрация: 08.04.2013
Сообщений: 554
13.03.2018, 19:02 #2
А просто построить какой нибудь график на чем умеете еще не пробовали?
0
Deczy
0 / 0 / 1
Регистрация: 16.02.2016
Сообщений: 101
13.03.2018, 19:41  [ТС] #3
marat_miaki, для меня проблема получения данных с датчика, а график умею пробовал
0
marat_miaki
149 / 138 / 87
Регистрация: 08.04.2013
Сообщений: 554
14.03.2018, 01:18 #4
Это скетч работы с mag3110
Serial.print(read_x()); передает информацию в сом порт.
Можно как вариант слушать сом порт и в вашу программу считывать. Можно записать в файл на SD и дальше с ним работать, более опытные может что получше подскажут

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
  
 
#include <Wire.h>
 
#define MAG_ADDR  0x0E //7-bit address for the MAG3110, doesn't change
// #define MAG_ADDR  0x3F    // может и так быть
  
void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
  config();            // turn the MAG3110 on
}
 
void loop()
{
  print_values();
  delay(5);
}
 
void config(void)
{
  Wire.beginTransmission(MAG_ADDR); // transmit to device 0x0E
  Wire.write(0x11);             // cntrl register2
  Wire.write(0x80);             // write 0x80, enable auto resets
  Wire.endTransmission();       // stop transmitting
  delay(15); 
  Wire.beginTransmission(MAG_ADDR); // transmit to device 0x0E
  Wire.write(0x10);             // cntrl register1
  Wire.write(1);                // write 0x01, active mode
  Wire.endTransmission();       // stop transmitting
}
 
void print_values(void)
{
  Serial.print("x=");
  Serial.print(read_x());
  Serial.print(",");  
  Serial.print("y=");    
  Serial.print(read_y());
  Serial.print(",");       
  Serial.print("z=");    
  Serial.println(read_z());
}
 
int mag_read_register(int reg)
{
  int reg_val;
 
  Wire.beginTransmission(MAG_ADDR); // transmit to device 0x0E
  Wire.write(reg);              // x MSB reg
  Wire.endTransmission();       // stop transmitting
  delayMicroseconds(2); //needs at least 1.3us free time between start and stop
 
  Wire.requestFrom(MAG_ADDR, 1); // request 1 byte
  while(Wire.available())    // slave may write less than requested
  { 
    reg_val = Wire.read(); // read the byte
  }
 
  return reg_val;
}
 
int mag_read_value(int msb_reg, int lsb_reg)
{
  int val_low, val_high;  //define the MSB and LSB
  val_high = mag_read_register(msb_reg);
  delayMicroseconds(2); //needs at least 1.3us free time between start and stop
  val_low = mag_read_register(lsb_reg);
  int out = (val_low|(val_high << 8)); //concatenate the MSB and LSB
  return out;
}
 
int read_x(void)
{
  return mag_read_value(0x01, 0x02);
}
 
int read_y(void)
{
  return mag_read_value(0x03, 0x04);
}
 
int read_z(void)
{
  return mag_read_value(0x05, 0x06);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2018, 01:18
Привет! Вот еще темы с решениями:

Output Compare
Доброго времени суток. Изучать микроконтроллеры начал недавно, возникло желание...

DirectInput/Output
Приведите пример использования : DirectInput/Output . P.S. Для игры нужно...

Too many output arguments
Помогите найти ошибку. Может я неправильно вызываю функцию? Вызываю так: y =...

input,output
Кто знает, помогите )))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru