Seite 5 von 8 ErsteErste 12345678 LetzteLetzte
Ergebnis 61 bis 75 von 114
  1. #61
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    na da ist doch was

    Code:
    pi@carcam:~/forumjs $ node test.js
    
    0
    0
    0
    0
    0
    Infinity
    Infinity
    Infinity

  2. #62
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    speedmeter = new SpeedMeter.SpeedMeter(7, 0, 1, 10000);

  3. #63
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Check: Ausgabe:

    pi@carcam:~/forumjs $ node test.js

    Code:
    0
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1052.6315789473683
    1764.7058823529412
    1764.7058823529412
    1764.7058823529412
    1764.7058823529412
    1764.7058823529412
    1764.7058823529412
    1764.7058823529412
    33.0760749724366
    1818.1818181818182
    Es wird

  4. #64
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    dann ist noch die frage, was das LEVEL_TO_POWER eigentlich sein soll.
    das sind doch nicht werte für jeden rpm wert? so sieht es im script jedenfalls aus, dann sind es aber viel zu wenig (und viel zu hohe werte)

    - - - Aktualisiert - - -

    1052 sind ca. eine flanke alle 60 ms, da stimmt was mit deinem schalter nicht

  5. #65
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Die Werte entsprechen der Leistung

    Am Crosstrainer sind Level + und Level - damit wird der Widerstand höher oder kleiner. Das sind feste Werte

    Also in Level 5 bei 60 U/Min = Wert aus der Tabelle.

    Hier in der Anleitung stehen die Werte auf Seite 11:
    https://www.christopeit-sport.com/me...ometer-CX6.pdf

    Interpolieren zwischen den Werten wäre natürlich der Held vom Erdbeerfeld

  6. #66
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    Also in Level 5 bei 60 U/Min = Wert aus der Tabelle.
    deine tabelle hat aber keine 60 spalten

    Zitat Zitat von Landix Beitrag anzeigen
    Hier in der Anleitung stehen die Werte auf Seite 11:
    https://www.christopeit-sport.com/me...ometer-CX6.pdf
    kuck ich mir später mal an

    Zitat Zitat von Landix Beitrag anzeigen
    Interpolieren zwischen den Werten wäre natürlich der Held vom Erdbeerfeld
    also stützpunke für ausgewählte rpm, ok

    mal was anderes, weil du von nem reed schalter sprichst, wie wird denn das schwungrad gebremst? ich vermute durch ein mangnetfeld?

  7. #67
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Die RPM (U/Min) wählen ja den Power Wert.

    Stufe = Level (Level 5, 20 RPM = 13 Watt) (Level 5, 30 RPM = 27 Watt) (Level 5, 40 RPM = 45 Watt)

    Jetzt drücke ich Level + bin dann also in Level 6
    (Level 6, 20 RPM = 15 Watt) (Level 6, 30 RPM = 31 Watt) (Level 6, 40 RPM = 52 Watt)

    Die RPM Tabelle s so unterteilt: Stufe ⁄ U/min 20 30 40 50 60 70 80 90 100 110 120
    1
    2
    3
    ...

    Magnetfeld
    Ja, aber die Magnetbremse ist unten, die löst den reed Kontakt nicht aus Versehen aus.

    der GPIO muss noch software entprellt werden so 200ms (bouncetime)

  8. #68
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    Die RPM Tabelle s so unterteilt: Stufe ⁄ U/min 20 30 40 50 60 70 80 90 100 110 120
    1
    2
    3
    ...
    ach ok, // 10 ist in pyhton kein kommentar sonder durch 10 mit cast auf int

    Zitat Zitat von Landix Beitrag anzeigen
    Ja, aber die Magnetbremse ist unten, die löst den reed Kontakt nicht aus Versehen aus.
    mach mal deinen mangneten ab, was kommen dann für werte?

    Zitat Zitat von Landix Beitrag anzeigen
    der GPIO muss noch software entprellt werden so 200ms (bouncetime)
    kann sein

  9. #69
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Kein Magnet keine Werte
    Also immer 0 halt.

  10. #70
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    mal mit level speed und power, bin mir auf die schnelle nicht sicher, ob ich die level+- vertauscht habe

    200ms sind meiner meinung nach viel zuviel, ich hab mal 100ms genommen, wobei mir das immer noch viel vorkommt

    Code:
    var SpeedMeter = function(pin, levelUpPin, levelDownPin, weighting, pulsesPerRev, timeOut, bounceTime)
    {
      var rpm = 0;
      var level = 1;
      var timeAct = 0;
      var timeOld = 0;
      var timeDiff = 0;
      var watchdog = null;
      var gpio = require('rpi-gpio');
      var power = [
        [6,12,20,29,40,53,69,79,92,106,121],
        [8,16,26,38,53,68,88,103,120,138,152],
        [9,20,32,47,66,84,107,125,148,172,186],
        [11,23,39,56,79,101,126,150,173,206,219],
        [13,27,45,65,92,117,145,175,202,238,254],
        [15,31,52,75,105,135,166,202,231,275,289],
        [16,35,58,85,118,152,185,226,260,305,332],
        [18,39,65,96,131,169,208,249,289,333,375],
        [19,42,71,104,144,184,227,272,318,361,408],
        [21,46,77,113,157,199,245,295,345,386,442],
        [23,50,84,123,170,216,262,318,372,413,480],
        [24,53,89,131,183,230,279,342,398,441,512],
        [26,56,94,139,196,245,296,365,424,468,548],
        [28,60,101,148,209,261,318,389,449,494,585],
        [30,64,108,158,222,277,337,415,476,518,620],
        [32,68,115,168,235,296,355,439,503,548,658],
        [33,72,122,177,248,312,373,463,530,576,694],
        [35,76,129,187,261,328,390,484,556,606,727],
        [37,79,134,195,274,342,407,507,572,632,763],
        [39,83,140,204,287,354,424,528,598,659,790],
        [40,87,146,213,300,368,442,551,616,689,812],
        [42,91,153,223,313,385,461,574,645,720,840],
        [44,95,160,234,326,401,479,598,673,752,872],
        [47,101,171,246,340,418,501,625,706,788,908]
      ];
      
      
      weighting = weighting || 0;
      pulsesPerRev = pulsesPerRev || 1;
      timeOut = timeOut || 10000;
      bounceTime = bounceTime || 100;
      
      gpio.on('change', function(channel, value)
      {
        if (channel == pin)
        {
          var timeAct = new Date();
          if ((timeAct - timeOld) > bounceTime)
          {
            if (watchdog)
            {
              clearTimeout(watchdog);
            }
            if (timeOld)
            {
              timeDiff *= weighting;
              timeDiff += (1 - weighting) * (timeAct - timeOld);
              rpm = 60000 / (timeDiff * pulsesPerRev);
            }
            timeOld = timeAct;
            watchdog = setTimeout(function()
            {
              timeOld = 0;
              rpm = 0;
            }, timeOut);
          }
        }
        else if (channel == levelUpPin)
        {
          if (level < 23)
          {
            ++level;
          }
        }
        else if (channel == levelDownPin)
        {
          if (level > 1)
          {
            --level;
          }
        }
      });
      
      gpio.setup(pin, gpio.DIR_IN, gpio.EDGE_RISING);
      
      this.getSpeed = function()
      {
        return rpm;
      };
      this.getLevel = function()
      {
        return level;
      };
      this.getPower = function()
      {
        var lowerVal = 0;
        var upperVal = 0;
        var idxLower = Math.floor(rpm / 10);
        var idxUpper = Math.ceil(rpm / 10);
        if (idxLower > 0)
        {
          lowerVal = power[level - 1][idxLower - 1];
        }
        if (idxUpper > 0 && idxUpper <= 11)
        {
          upperVal = power[level - 1][idxUpper - 1];
        }
        else if (idxUpper > 11)
        {
          console.log("RPM(", rpm, ") out of range");
          return power[level - 1][10];
        }
        return (upperVal - lowerVal) / (idxUpper * 10 - idxLower * 10) * (rpm - idxLower * 10) + lowerVal;
      };
    };
    
    module.exports.SpeedMeter = SpeedMeter;
    Code:
    var SpeedMeter = require('./SpeedMeter');
    var speedmeter = new SpeedMeter.SpeedMeter(4, 38, 40);
    setInterval(function()
    {
      console.log("level: ", speedmeter.getLevel(), " speed: ", speedmeter.getSpeed(), " power: ", speedmeter.getPower());
    }, 250);

  11. #71
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Habe 4 gegen 7 getauscht

    Sieht auch schon mal gut aus:
    level werden noch nicht gewechselt (Müssen wir da auch entprellen)?
    Und noch ein wenig index out of range

    Wobei wir aber sagen können. Wenn RPM < 20 Power = 0, Wenn RPM > 120 Power = 0

    Code:
    level:  1  speed:  483.8709677419355  power:  121
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    level:  1  speed:  21.747009786154404  power:  13.397607828923523
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    RPM( 495.8677685950413 ) out of range
    level:  1  speed:  495.8677685950413  power:  121
    level:  1  speed:  12.695725772323318  power:  7.61743546339399
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    RPM( 550.4587155963303 ) out of range
    level:  1  speed:  550.4587155963303  power:  121
    level:  1  speed:  28.625954198473284  power:  18.900763358778626
    level:  1  speed:  28.625954198473284  power:  18.900763358778626
    level:  1  speed:  28.625954198473284  power:  18.900763358778626
    geht voran

    - - - Aktualisiert - - -

    Die hohen Fehlwerte habe ich mit bounce 200 ausgemerzt

    5 Umdrehungen in der Sekunde schafft ja auch keiner.

    Wird ja immer besser!

  12. #72
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    Zitat Zitat von Landix Beitrag anzeigen
    Habe 4 gegen 7 getauscht
    ja

    Zitat Zitat von Landix Beitrag anzeigen
    level werden noch nicht gewechselt
    wo hängen die denn drann? auf pin 20 oder gpio20?

    Zitat Zitat von Landix Beitrag anzeigen
    (Müssen wir da auch entprellen)?
    die sind doch vom gerät? keine ahnung ob die gute hardware verbaut haben, mal sehen was kommt

    Zitat Zitat von Landix Beitrag anzeigen
    Und noch ein wenig index out of range
    dann ersetze
    Code:
    bounceTime = bounceTime || 100;
    mal doch durch
    Code:
    bounceTime = bounceTime || 200;
    wenn das nicht reicht, ist es was anderes

    Zitat Zitat von Landix Beitrag anzeigen
    Wobei wir aber sagen können. Wenn RPM < 20 Power = 0,
    ach bei 20 beginnt die tabelle? bin von 10 ausgegangen
    aber warum willst du das dann auf 0 setzen?

    Zitat Zitat von Landix Beitrag anzeigen
    Wenn RPM > 120 Power = 0
    > 120 sollte überhaupt nicht vorkommen, und selbst wenn, ist der max. wert besser als 0

  13. #73
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Ja bei 20 beginnt die Tabelle. Wenn ich 20 rpm mache, dann ist das mehr als wenn ich stehe also da brauch kein Powerwert mehr kommen.

    Die Taster sind an GPIO 20 und GPIO 21 das ist korrekt, dann mit 38 und 40 in der test.js passt dann ja auch

    Wird das vielleicht nur nicht angezeigt?

  14. #74
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.667

    AW: Python to Javascript

    "Wird das vielleicht nur nicht angezeigt"
    nee, setup vergessen
    Code:
    var SpeedMeter = function(pin, levelUpPin, levelDownPin, weighting, pulsesPerRev, timeOut, bounceTime)
    {
      var rpm = 0;
      var level = 1;
      var timeAct = 0;
      var timeOld = 0;
      var timeDiff = 0;
      var watchdog = null;
      var gpio = require('rpi-gpio');
      var power = [
        [6,12,20,29,40,53,69,79,92,106,121],
        [8,16,26,38,53,68,88,103,120,138,152],
        [9,20,32,47,66,84,107,125,148,172,186],
        [11,23,39,56,79,101,126,150,173,206,219],
        [13,27,45,65,92,117,145,175,202,238,254],
        [15,31,52,75,105,135,166,202,231,275,289],
        [16,35,58,85,118,152,185,226,260,305,332],
        [18,39,65,96,131,169,208,249,289,333,375],
        [19,42,71,104,144,184,227,272,318,361,408],
        [21,46,77,113,157,199,245,295,345,386,442],
        [23,50,84,123,170,216,262,318,372,413,480],
        [24,53,89,131,183,230,279,342,398,441,512],
        [26,56,94,139,196,245,296,365,424,468,548],
        [28,60,101,148,209,261,318,389,449,494,585],
        [30,64,108,158,222,277,337,415,476,518,620],
        [32,68,115,168,235,296,355,439,503,548,658],
        [33,72,122,177,248,312,373,463,530,576,694],
        [35,76,129,187,261,328,390,484,556,606,727],
        [37,79,134,195,274,342,407,507,572,632,763],
        [39,83,140,204,287,354,424,528,598,659,790],
        [40,87,146,213,300,368,442,551,616,689,812],
        [42,91,153,223,313,385,461,574,645,720,840],
        [44,95,160,234,326,401,479,598,673,752,872],
        [47,101,171,246,340,418,501,625,706,788,908]
      ];
      
      
      weighting = weighting || 0;
      pulsesPerRev = pulsesPerRev || 1;
      timeOut = timeOut || 10000;
      bounceTime = bounceTime || 200;
      
      gpio.on('change', function(channel, value)
      {
        if (channel == pin)
        {
          var timeAct = new Date();
          if ((timeAct - timeOld) > bounceTime)
          {
            if (watchdog)
            {
              clearTimeout(watchdog);
            }
            if (timeOld)
            {
              timeDiff *= weighting;
              timeDiff += (1 - weighting) * (timeAct - timeOld);
              rpm = 60000 / (timeDiff * pulsesPerRev);
            }
            timeOld = timeAct;
            watchdog = setTimeout(function()
            {
              timeOld = 0;
              rpm = 0;
            }, timeOut);
          }
        }
        else if (channel == levelUpPin)
        {
          if (level < 23)
          {
            ++level;
          }
        }
        else if (channel == levelDownPin)
        {
          if (level > 1)
          {
            --level;
          }
        }
      });
      
      gpio.setup(pin, gpio.DIR_IN, gpio.EDGE_RISING);
      gpio.setup(levelUpPin, gpio.DIR_IN, gpio.EDGE_RISING);
      gpio.setup(levelDownPin, gpio.DIR_IN, gpio.EDGE_RISING);
      
      this.getSpeed = function()
      {
        return rpm;
      };
      this.getLevel = function()
      {
        return level;
      };
      this.getPower = function()
      {
        var lowerVal = 0;
        var upperVal = 0;
        var idxLower = Math.floor(rpm / 10);
        var idxUpper = Math.ceil(rpm / 10);
        if (idxLower > 1)
        {
          lowerVal = power[level - 1][idxLower - 2];
        }
        else
        {
          idxLower = 0;
        }
        if (idxUpper > 1 && idxUpper <= 12)
        {
          upperVal = power[level - 1][idxUpper - 2];
        }
        else if (idxUpper > 12)
        {
          console.log("RPM(", rpm, ") out of range");
          return power[level - 1][10];
        }
        else if (idxUpper <= 1)
        {
          idxUpper = 0;
        }
        return (upperVal - lowerVal) / (idxUpper * 10 - idxLower * 10) * (rpm - idxLower * 10) + lowerVal;
      };
    };
    
    module.exports.SpeedMeter = SpeedMeter;
    Geändert von tsseh (10-05-2017 um 15:15 Uhr)

  15. #75
    Landix ist offline Eroberer
    registriert
    03-05-2017
    Beiträge
    59

    AW: Python to Javascript

    Level bleibt auf 1
    hab auch das geänderte von 15:15 genommen.

    Komisch gerade hat er kurz getan. Ich hab einfach mal var level = 1; auf 5 gesetzt.

    Dann ging er runter auf 3, aber nicht wieder hoch. Weiter runter aber auch nicht.
    Um einen Hardwarefehler auszuschliessen habe ich das Kabel auch gewechselt und mal mit Brücken versucht.

    komisch
    Geändert von Landix (10-05-2017 um 15:50 Uhr) Grund: mehr tests

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 10-12-2016, 09:56
  2. Antworten: 0
    Letzter Beitrag: 07-09-2016, 12:38
  3. Python-Variable in Javascript verwenden
    Von siggi1147 im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 24-04-2008, 18:34
  4. [Python]Was ist das?
    Von Kriegr im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 20-05-2003, 16:11
  5. python website
    Von python im Forum Site-Check
    Antworten: 7
    Letzter Beitrag: 14-02-2003, 16:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •