No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config.tests/rtimulib
examples
src
.gitignore
.qmake.conf
LICENSE.GPL
LICENSE.LGPLv3
README.md
sensehatqt.pro
sync.profile

README.md

Raspberry Pi Sense HAT support module for Qt 5

Tested on Raspbian Jessie 2015/09/24 and Qt 5.6 as described on https://wiki.qt.io/RaspberryPi2EGLFS

Sensor support is based on RTIMULib as shipped in Raspbian and https://github.com/RPi-Distro/python-sense-hat.

This a true Qt module. To build, do qmake -r && make && make install. To use, add QT += sensehat.

LED example:

int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv);
    QSenseHatFb fb;
    fb.setLowLight(true);
    QPainter p(fb.paintDevice());
    p.fillRect(QRect(QPoint(), fb.size()), Qt::black);
    for (int i = Qt::white; i < Qt::darkYellow; ++i) {
        p.setPen(Qt::GlobalColor(i));
        p.drawEllipse(QPoint(4, 4), 3, 3);
        p.drawLine(QPoint(4, 4), QPoint(7, 7));
        sleep(1);
    }
    p.fillRect(QRect(QPoint(), fb.size()), Qt::black);
    return 0;
}

An alternative is to run with the linuxfb platform plugin and use QRasterWindow. However, QSenseHatFb is handy because it automatically finds the right device, supports device specifics (low-light mode), functions (to some extent) without initializing QtGui, and allows using any platform plugin and simultaneous HDMI output.

Sensors example:

int main(int argc, char **argv)
{
    QCoreApplication app(argc, argv);
    QSenseHatSensors sensors;
    sensors.setAutoPoll(true);
    QObject::connect(&sensors, &QSenseHatSensors::humidityChanged, [](qreal h) {
        qDebug() << "Humidity:" << h;
    });
    QObject::connect(&sensors, &QSenseHatSensors::pressureChanged, [](qreal p) {
        qDebug() << "Pressure:" << p;
    });
    QObject::connect(&sensors, &QSenseHatSensors::temperatureChanged, [](qreal c) {
        qDebug() << "Temperature:" << c;
    });
    QObject::connect(&sensors, &QSenseHatSensors::gyroChanged, [](const QVector3D &v) {
        qDebug() << "Gyro:" << v;
    });
    QObject::connect(&sensors, &QSenseHatSensors::accelerationChanged, [](const QVector3D &v) {
        qDebug() << "Acceleration:" << v;
    });
    QObject::connect(&sensors, &QSenseHatSensors::compassChanged, [](const QVector3D &v) {
        qDebug() << "Compass:" << v;
    });
    QObject::connect(&sensors, &QSenseHatSensors::orientationChanged, [](const QVector3D &v) {
        qDebug() << "Orientation:" << v;
    });
    QTimer::singleShot(10000, &app, &QCoreApplication::quit);
    return app.exec();
}

Raspbian's default calibration from /etc is picked up automatically, similarly to the Python lib. Orientation is converted to degrees in range 0..360. Other values are reported as-is.