Покупал недавно телефон, обязательные условия: хардваре клавиатура, 2+дней на одной зарядке, удобные емейлы. Вобщем ниодин из андроидов не впечатлил. Они конечно клеви, няшне и с энгри бердсами, но Nokia E72 их заборола.
Драйвер — это кусок кода для работы с устройством. Тот шмат кода в loop как раз и делает то что надо автору — получает азимут из компаса. Запихать эти строчки в функцию — и драйвер готов!
Ну прежде чем покупать железку желательно конечно посмотреть, будет ли она работать. А если нет уверенности — дык можно и емейл производителям чиркануть, узнать чокаво.
Вы с дерева-то слезли, но в каком-то дремучем лесу точно застряли.
Зачем производитель будет выпускать железку, не предоставляя спеков-драйверов к ней? Чтобы люди ее покупали а потом не знали что с ней делать? Ну бред же.
Код отдельно (только потом уберите пробел между < < — хабрапарсеру битовый сдвиг не нравится):
void loop(){
byte highByte, lowByte, fine; // highByte and lowByte store high and low bytes of the bearing and fine stores decimal place of bearing
char pitch, roll; // Stores pitch and roll values of CMPS09, chars are used because they support signed value
int bearing; // Stores full bearing
Wire.beginTransmission(ADDRESS); //starts communication with CMPS09
Wire.send(2); //Sends the register we wish to start reading from
Wire.endTransmission();
Wire.requestFrom(ADDRESS, 4); // Request 4 bytes from CMPS09
while(Wire.available() < 4); // Wait for bytes to become available
highByte = Wire.receive();
lowByte = Wire.receive();
pitch = Wire.receive();
roll = Wire.receive();
bearing = ((highByte < < 8)+lowByte)/10; // Calculate full bearing
fine = ((highByte < < 8)+lowByte)%10; // Calculate decimal place of bearing
display_data(bearing, fine, pitch, roll); // Display data to the LCD03
А второй момент в том, что весь «драйвер» для этого устройства — отправить байт по i2c и получить назад четыре байта.
Вот собсно тот самый драйвер:
void loop(){
byte highByte, lowByte, fine; // highByte and lowByte store high and low bytes of the bearing and fine stores decimal place of bearing
char pitch, roll; // Stores pitch and roll values of CMPS09, chars are used because they support signed value
int bearing; // Stores full bearing
Wire.beginTransmission(ADDRESS); //starts communication with CMPS09
Wire.send(2); //Sends the register we wish to start reading from
Wire.endTransmission();
Wire.requestFrom(ADDRESS, 4); // Request 4 bytes from CMPS09
while(Wire.available() < 4); // Wait for bytes to become available
highByte = Wire.receive();
lowByte = Wire.receive();
pitch = Wire.receive();
roll = Wire.receive();
А вы хоть раз с девушкой в магазины ходили и платья мерили? Этож куча времени для того чтобы померить 3-4 платья. А утт можно будет за 5 минут перемерить штук 100 и потом остановиться на 3-4 интересных и отдельно померить их.
Выгода для покупателей: больше выбор, проще найти подходящую вещь. Меньше мороки с примеркой.
Ответил выше. По Win Update сейчас помимо кусков винды приходит еще куча софта — от студии до обновленных драйверов NVidia. Так что пустить туда сторонний софт — not big fucking deal с технической стороны.
>хотя бы потому, что нет возможности их кастомизировать,
o_O Либо вы меня обманываете, либо у вас руки кривые. В опциях есть замечательный пункт «Customize Ribbon» который за это в ответе.
Зачем производитель будет выпускать железку, не предоставляя спеков-драйверов к ней? Чтобы люди ее покупали а потом не знали что с ней делать? Ну бред же.
Все драйвера и описания работы с компасом и другими железками от этой фирмы есть у них на сайте. Прям на страницы с описаловом есть две ссылки. Первая — на examples. Вторая — на спеку общения с железкой по I2C.
Examples: www.robot-electronics.co.uk/acatalog/examples.html
I2C spec: www.robot-electronics.co.uk/htm/cmps10i2c.htm
void loop(){
byte highByte, lowByte, fine; // highByte and lowByte store high and low bytes of the bearing and fine stores decimal place of bearing
char pitch, roll; // Stores pitch and roll values of CMPS09, chars are used because they support signed value
int bearing; // Stores full bearing
Wire.beginTransmission(ADDRESS); //starts communication with CMPS09
Wire.send(2); //Sends the register we wish to start reading from
Wire.endTransmission();
Wire.requestFrom(ADDRESS, 4); // Request 4 bytes from CMPS09
while(Wire.available() < 4); // Wait for bytes to become available
highByte = Wire.receive();
lowByte = Wire.receive();
pitch = Wire.receive();
roll = Wire.receive();
bearing = ((highByte < < 8)+lowByte)/10; // Calculate full bearing
fine = ((highByte < < 8)+lowByte)%10; // Calculate decimal place of bearing
display_data(bearing, fine, pitch, roll); // Display data to the LCD03
delay(100);
}
В том числе на ардуино.
www.robot-electronics.co.uk/acatalog/examples.html
Это первое.
А второй момент в том, что весь «драйвер» для этого устройства — отправить байт по i2c и получить назад четыре байта.
Вот собсно тот самый драйвер:
void loop(){
byte highByte, lowByte, fine; // highByte and lowByte store high and low bytes of the bearing and fine stores decimal place of bearing
char pitch, roll; // Stores pitch and roll values of CMPS09, chars are used because they support signed value
int bearing; // Stores full bearing
Wire.beginTransmission(ADDRESS); //starts communication with CMPS09
Wire.send(2); //Sends the register we wish to start reading from
Wire.endTransmission();
Wire.requestFrom(ADDRESS, 4); // Request 4 bytes from CMPS09
while(Wire.available() < 4); // Wait for bytes to become available
highByte = Wire.receive();
lowByte = Wire.receive();
pitch = Wire.receive();
roll = Wire.receive();
bearing = ((highByte
Выгода для покупателей: больше выбор, проще найти подходящую вещь. Меньше мороки с примеркой.
Выгода для продовца: больше товарооборот.
В случае если MS будет продовать какойто софт через свой AppStore — наладить обновление этого же софта через Win Update будет делом техники.
Чтобы пройти сертификацию нужно как раз устанавливаться и работать по определенным правилам.
o_O Либо вы меня обманываете, либо у вас руки кривые. В опциях есть замечательный пункт «Customize Ribbon» который за это в ответе.