[TUTO] Application web dynamique

Proposer ou rechercher un tutoriel concernant le Raspberry Pi

Modérateur : Francois

BlackTom
Messages : 43
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » ven. 22 mai 2020 20:15


Bud Spencer a écrit :
BlackTom a écrit :
ven. 22 mai 2020 19:37
En réalité, j'ai juste besoin de tourner dans un sens mais qui peut le plus peut le moins.
Bha comme je ne savais pas, j'ai prévu les 2 sens de rotation dans le bout de code et je me suis dit que c'était l'occase de donner un exemple d'énumérateur en js (.Right .Left) et ca peut servir à autre chose pour d'autres.

Pour le distributeur que tu vas utiliser, j'imagine que c'est un principe de vis sans fin ou un truc dans le genre ? Si c'est le cas, penses à repasser toutes les sortie à 0 quand le cycle de rotation de la distribution est finie, sinon, tu vas maintenir du courrant sur les bobines du moteur pour rien (dans l'exemple, ce serait là ou j'ai écrit le console log 'fini' dans la fonction rotate).
Oui même si tu n'avais pas fait les 2 sens, j'aurais ajouté pour tester ...
Non ce n'est pas une vis sans fin mais effectivement, il faut éteindre le moteur après une distribution.

Possesseur d'un RPi Zéro WH pour un projet de distributeur de croquettes pour chats


BlackTom
Messages : 43
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » sam. 23 mai 2020 15:25

Bon, j'ai bien testé hier soir mais le résultat n'était pas probant. Beaucoup de bruit et de vibrations mais assez peu de rotation.
Ton programme fonctionne parfaitement, ce n'est pas le problème.
Le problème assez facile à comprendre et à identifier vient de l'ordre d'allumage des bobines (pour faire simple)
Finalement, j'ai trouvé un bon article sur le sujet, j'ai repompé la séquence utilisée dans l'exemple et ça marche bien :

Code : Tout sélectionner

'use strict';

const Gpio = require("pigpio").Gpio;

var Motor = { 

    STEP : function (pin1, pin2, pin3, pin4) { 

        const directions = {Right: 1, Left: 2};
        const step = [
                        [ 1, 0, 1, 0]
                      , [ 0, 1, 1, 0]
                      , [ 0, 1, 0, 1]
                      , [ 1, 0, 0, 1]
                     ];
        const NbSteps=step.length;
        var busy = false;
        var pos = 0;

        var motors = [
            new Gpio(pin1, Gpio.OUTPUT),
            new Gpio(pin2, Gpio.OUTPUT),
            new Gpio(pin3, Gpio.OUTPUT),
            new Gpio(pin4, Gpio.OUTPUT)
        ];

        function rotate (directions, pas, delais) { 
            busy = true;
            let count = 0;
            let t = setInterval (() => {
                count += 1;
                switch (directions) {
                    case 1: pos += 1; pos = pos > NbSteps-1 ? 0 : pos; break;
                    case 2: pos -= 1; pos = pos < 0 ? NbSteps-1 : pos; break;
                }

                for( let i = 0; i < 4; i++ )
                {
                    motors[i].digitalWrite( step[pos][i] );
                    //console.log("motors["+i+"]="+step[pos][i])
                }
                //console.log (pos +" : "+ step[pos]); //=>Set GPIOS step [x]
                if (count == pas) {
                    clearInterval(t);
                    busy = false;
                    for( let i = 0; i < 4; i++ )
                        motors[i].digitalWrite( 0 );
                    console.log("fini");
                }
            }, delais);  
        };

        this.Directions = directions;
        this.Motors = motors;

        this.Rotate = function (direction, pas, delais) {
            if (!busy) {
                rotate(direction, pas, delais);
            }    
        }
    }
};
module.exports = Motor; 

Bud Spencer
Raspinaute
Messages : 827
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » lun. 25 mai 2020 13:18

parfait, ca devient bon.
Pour les séquences, ca dépend des moteurs et aussi du mode de fonctionnement choisi (il y en a plusieurs mais je ne les ais plus en tête).

Ca fait longtemps que je n'ais pas jouer avec des moteurs pas a pas, je vais peut être me commander un truc ou deux en chinoiserie et trouver une idée originale pour les utiliser d'ici que ce soit livré ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

BlackTom
Messages : 43
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » lun. 25 mai 2020 14:26

Bud Spencer a écrit :parfait, ca devient bon.
Pour les séquences, ca dépend des moteurs et aussi du mode de fonctionnement choisi (il y en a plusieurs mais je ne les ais plus en tête).

Ca fait longtemps que je n'ais pas jouer avec des moteurs pas a pas, je vais peut être me commander un truc ou deux en chinoiserie et trouver une idée originale pour les utiliser d'ici que ce soit livré ;)
Oui, là il reste des finitions cosmétiques, comme lancer l'appli au démarrage de la framboise en cas de coupure de courant, ajouter un système authentification, ajouter une interface pour programmer les distributions automatique.
Trois fois rien.

Et il reste à faire tout le bricolage ... Mais là n'est pas le sujet ( plutôt ici : https://forums.framboise314.fr/viewtopic.php?t=5663 )
Encore mille fois merci, Bud !!

Possesseur d'un RPi Zéro WH pour un projet de distributeur de croquettes pour chats


Bud Spencer
Raspinaute
Messages : 827
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » lun. 25 mai 2020 20:49

BlackTom a écrit :
lun. 25 mai 2020 14:26
Oui, là il reste des finitions cosmétiques, comme lancer l'appli au démarrage de la framboise en cas de coupure de courant, ajouter un système authentification, ajouter une interface pour programmer les distributions automatique.
Trois fois rien.
Oui, au point ou tu en es, on peut parler de 'cosmétiques'. Perso, quand j'ai résolu tous les problèmes techniques lié au fonctionnement fondamental d'un programme, j'appel tout le reste 'broderie' :lol:
BlackTom a écrit :
lun. 25 mai 2020 14:26
Encore mille fois merci, Bud !!
Pas de quoi. Meme si la programmation est une grosse partie de mon gagne pain, c'est aussi une grande passion pour moi et c'est toujours un plaisir de la partager avec d'autres ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Tutoriels »