Navigation

    M5Stack Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    1. Home
    2. amn
    3. Topics
    A
    • Continue chat with amn
    • Start new chat with amn
    • Flag Profile
    • Profile
    • Following
    • Followers
    • Blocks
    • Topics
    • Posts
    • Best
    • Groups

    Topics created by amn

    • A

      platformio error with M5.IMU.INIT
      M5Stack Fire • • amn

      3
      0
      Votes
      3
      Posts
      3451
      Views

      A

      Solved comment M5stack.h: //#include <M5Stack.h> #define M5STACK_MPU6886 thx
    • A

      M5 stack bluetooth with HM10
      PROJECTS • • amn

      3
      0
      Votes
      3
      Posts
      3406
      Views

      A

      thx I'll try later to see
    • A

      I would like to send a PPM with M5 stack Fire
      PROJECTS • • amn

      9
      0
      Votes
      9
      Posts
      8504
      Views

      A

      @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; } } } }