🎂 Houdini 150   🚚 FREE FEDEX SHIPPING from 397 USD   🌎 WORLDWIDE SHIPPING for 25 USD

Outil de niveau

À propos de

Saviez-vous que le site PeekSmith 3 contient un accéléromètre? Laissez-nous vous montrer avec ce code comment vous pouvez l'utiliser pour créer un outil de niveau. Bien sûr, c'est pour le plaisir, mais vous aurez une idée de la façon dont vous pouvez travailler avec les données de l'accéléromètre. La SB Watch possède également un accéléromètre!

Nous n'allons pas compliquer le projet. Dans un premier temps, dans la fonction principale, le code se connecte à un PeekSmith, puis active l'accéléromètre et lance un timer pour exécuter la fonction vibrer une fois par seconde.

Dans la fonction onEvent, elle renvoie si l'événement ne concerne pas les données de l'accéléromètre PeekSmith. Il faut ensuite convertir la chaîne en trois nombres et appeler la méthode onAccel avec ces nombres.

Dans la fonction onAccel, nous n'avons besoin que de la valeur x. Celle-ci est transformée en un nombre compris entre 0 et 8. Elle est transformée en un nombre compris entre 0 et 8, et le code imprime les "graphiques" sur l'écran de PeekSmith.

Enfin, la fonction de vibration, qui s'exécute toutes les secondes, le code vérifie si le niveau est moyen. Si oui, il envoie une courte vibration à PeekSmith.

function main() {
    ps.connect('*');
    ps.print('AtomLevel');
    ps.accel('on');
    setInterval(vibrate, 1000);
}

function onEvent(e) {
    if (e.type !== 'xyz' || e.source !== 'ps:accel') return;
    
    let xyz = strSplit(e.value, ',');
    for (let index = 0; index < 3; index++) {
        xyz[index] = parseInt(xyz[index]);
    }
    onAccel(xyz[0], xyz[1], xyz[2]);
}

let currentLevel = -1; // unknown
let levels = [
    'O--------',
    '-O-------',
    '--O------',
    '---O-----',
    '====O====',
    '-----O---',
    '------O--',
    '-------O-',
    '--------O',
];
function onAccel(x, y, z) {
    currentLevel = ( (x / 2048) + 1) * 4.2 | 0; // calculate a number between 0 - 8
    ps.print(levels[currentLevel]);
}

function vibrate() {
    if (currentLevel === 4) ps.vibrate('.');
}
croix