🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    I would like to send a PPM with M5 stack Fire

    Scheduled Pinned Locked Moved PROJECTS
    9 Posts 2 Posters 15.0k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ? Offline
      A Former User
      last edited by

      HI,
      after to consult many web page I don't find a solution
      I would like to dialog with VESC to control the speed motor via PPN signal (NO PWM)
      Somebody have an idea ? or know how to do this ?
      thx
      Alain

      1 Reply Last reply Reply Quote 0
      • m5stackM Online
        m5stack
        last edited by

        you could try search some keywords esp32 ppm `Arduino in Github. maybe some lib could do that.

        https://github.com/search?q=arduino+ppm

        1 Reply Last reply Reply Quote 0
        • ? Offline
          A Former User
          last edited by

          thx, found this https://github.com/schinken/PPMEncoder
          try later

          1 Reply Last reply Reply Quote 0
          • ? Offline
            A Former User
            last edited by

            Hi
            no find yet a correct solution
            somebody have exemple ?
            other this need for me to return to my arduino board.
            Thx

            1 Reply Last reply Reply Quote 0
            • m5stackM Online
              m5stack
              last edited by

              maybe you could try their example:

              https://github.com/kolod/Arduino-PPM-Generator

              https://github.com/smilexth/Generate-PPM-Signal/blob/master/Generate-PPM-Signal.ino

              1 Reply Last reply Reply Quote 0
              • ? Offline
                A Former User
                last edited by

                Hi
                already test these program, no compatble with ESP32 or M5 stack seem a problem of timer.
                turn on the loop.

                type of error:
                error: 'TCCR1A' was not declared in this scope

                m5stackM 1 Reply Last reply Reply Quote 0
                • m5stackM Online
                  m5stack @Guest
                  last edited by

                  @amn said in I would like to send a PPM with M5 stack Fire:

                  'TCCR1A' was not declared in this scope

                  'TCCR1A' was not declared in this scope

                  that looks like is a grammar error..... you just need define the function before you use it,

                  ? 1 Reply Last reply Reply Quote 0
                  • ? Offline
                    A Former User @m5stack
                    last edited by

                    @m5stack said in I would like to send a PPM with M5 stack Fire:
                    read on the web the timer is different between Arduino and ESP32
                    could be nice to find sample of code.
                    other this I'll continue my investigation
                    thx

                    ? 1 Reply Last reply Reply Quote 0
                    • ? Offline
                      A Former User @Guest
                      last edited by

                      @amn
                      HI found this code: (how to adapt with potentiometre for the lenght of pulse , ?)

                      //////////////////////CONFIGURATION///////////////////////////////
                      #define chanel_number 1 //set the number of chanels
                      #define default_servo_value 1500 //set the default servo value
                      #define PPM_FrLen 22500 //set the PPM frame length in microseconds (1ms = 1000µs)
                      #define PPM_PulseLen 300 //set the pulse length
                      #define onState 1 //set polarity: 1 is positive, 0 is negative
                      #define sigPin 36 //set 10 PPM signal pin on the arduino

                      /this array holds the servo values for the ppm signal
                      change theese values in your code (usually servo values are between 1000 and 2000)
                      /
                      int ppm[chanel_number];

                      void setup(){
                      // Initialize the M5Stack object
                      M5.begin();
                      /*
                      Power chip connected to gpio21, gpio22, I2C device
                      Set battery charging voltage and current
                      If used battery, please call this function in your project
                      */
                      M5.Power.begin();

                      M5.Lcd.fillScreen(BLACK);
                      M5.Lcd.setTextColor(GREEN , BLACK);
                      M5.Lcd.setTextSize(2);

                      //initiallize default ppm values
                      for(int i=0; i<chanel_number; i++){
                      ppm[i]= default_servo_value;
                      }

                      pinMode(sigPin, OUTPUT);
                      digitalWrite(sigPin, !onState); //set the PPM signal pin to the default state (off)
                      }

                      void loop(){
                      //put main code here
                      ppmWrite();

                      }

                      void ppmWrite(){ //generate PPM signal
                      static unsigned long lastFrLen;
                      static unsigned long lastServo;
                      static unsigned long lastPulse;
                      static boolean PPM_run;
                      static boolean pulse;
                      static boolean pulseStart = true;
                      static byte counter;
                      static byte part = true;

                      if(micros() - lastFrLen >= PPM_FrLen){ //start PPM signal after PPM_FrLen has passed
                      lastFrLen = micros();
                      PPM_run = true;
                      }

                      if(counter >= chanel_number){
                      PPM_run = false;
                      counter = 0;
                      pulse = true; //put out the last pulse
                      }

                      if(PPM_run){
                      if (part){ //put out the pulse
                      pulse = true;
                      part = false;
                      lastServo = micros();
                      }
                      else{ //wait till servo signal time (values from the ppm array) has passed
                      if(micros() - lastServo >= ppm[counter]){
                      counter++; //do the next channel
                      part = true;
                      }
                      }
                      }

                      if(pulse){
                      if(pulseStart == true){ //start the pulse
                      digitalWrite(sigPin, onState);
                      pulseStart = false;
                      lastPulse = micros();
                      }
                      else{ //will wait till PPM_PulseLen has passed and finish the pulse
                      if(micros() - lastPulse >= PPM_PulseLen){
                      digitalWrite(sigPin, !onState);
                      pulse = false;
                      pulseStart = true;
                      }
                      }
                      }
                      }

                      1 Reply Last reply Reply Quote 0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      • First post
                        Last post