I would like to send a PPM with M5 stack Fire
-
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 -
you could try search some keywords
esp32ppm`Arduino in Github. maybe some lib could do that. -
thx, found this https://github.com/schinken/PPMEncoder
try later -
Hi
no find yet a correct solution
somebody have exemple ?
other this need for me to return to my arduino board.
Thx -
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
-
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 -
@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 scopethat looks like is a grammar error..... you just need define the function before you use it,
-
@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 -
@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;
}
}
}
}
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