Доброго времени суток. Извините за, возможно, глупый вопрос, я только начинаю разбираться. Есть у меня такой барометр amp-b034, я его подключил к Малине. Он обнаруживается устройством и даже что-то выдает, если сделать команду i2cdump -y 1 0x5c. Но мне нужно считать данные с регистров и получить давление, которое он определяет. Я почитал LPS331.cpp и написал простой срипт на python (этот язык я еще не знаю как следует). Код (Python): #!/usr/bin/python import smbus import time import os DEVICE_ADDRESS = 0x5c DEVICE_REG_ADDRESS = 0x20 ACTIVE_STATE_CONST = 0b11100000 class Amper(): b = smbus.SMBus(1) def Calib(self): self.b.write_byte_data(DEVICE_ADDRESS,DEVICE_REG_ADDRESS,ACTIVE_STATE_CONST) def getX(self): return self.b.read_byte_data(0x5c, 0x28) def getY(self): return self.b.read_byte_data(0x5c, 0x29) def getZ(self): return self.b.read_byte_data(0x5c, 0x2a) MMA7455 = Amper() MMA7455.Calib() time.sleep(1.0) x = MMA7455.getX() y = MMA7455.getY() z = MMA7455.getZ() d = x<<16|y<<8|z print(x,y,z) print(d) В нем объявляется класс нашего устройства. У него есть метод Calib, там в регистр . по адресу 0x20 устанавливается константа (это я в ссылке выше на гитхабе посмотрел). А дальше три метода которые читают данные из регистров в которых, по документации выдается давление. Но как эти данные потом собрать в одно число? Я пробовал три считанных байта объединять в одно число с помощью сдвигов, но получается ерунда. Может кто может подсказать?
Там же по ссылке написано. Код (C++): return (int32_t)(int8_t)ph << 16 | (uint16_t)pl << 8 | pxl; Какая ерунда? С чего вы взяли что там ерунда? А не может ли быть, что вы получили число верное, но не смогли его правильно интерпретировать? Получая 3 байта вы получаете только код давления, далее его нужно привести к "человеческому" виду.
Добрый день, спасибо за ответ. Я пробовал полученное число приводить в "человеческий вид", так же как написано в примере, но получалось именно не правильное давление - очень маленькое. Сегодня я попробовал поменять регистры местами. Код (Python): d = z<<16|y<<8|x вместо Код (Python): d = x<<16|y<<8|z И вот этот результат после преобразований получался как раз тем что нужно (выходило 749 мм.рт.ст). Думаю ошибка была в этом.
Добрый вечер! Купил для внука Малину. как Питон переключать на русский. При загрузке на описании верхней строке справа стоит языковая кнопка, а у меня нет ее. Помогите, пожалуйста как переключаться на русский язык Артур Плиев arturpliev@gmail.com
Правой кнопкой по часикам, в меню выбрать add/remove panel items Появится окно panel preferences На вкладке panel applets нажать кнопку add выбрать Keyboard Layout Handler. Нажать add затем закрыть окна. в углу появится флаг США Правой кнопкой на флаге - Keyboard Layout Handler Settings Убрать галку Keep System layouts Нажать add и добавить языки Ниже установить комбинацию переключения. По умолчанию нифт+капс