mirror of
https://gitlab.waag.org/make/fablab/interns/2025/sam.git
synced 2025-08-03 11:54:58 +00:00
unfinished docs
This commit is contained in:
@@ -168,11 +168,92 @@ ESPC3 --> ESPC6 Thread 1 : Send data to flight controller using ESPNOW
|
||||
```
|
||||
|
||||
I've already gotten the motors to spin in [week 10](../Assignments/week_10_output_devices/output_devices.md) using the script in there. Now I also need to modify the original VTOL driver so my ESC's can properly understand it's instructions.
|
||||
//TODO: Continue this
|
||||
|
||||
There's one specific function I need to change.
|
||||
??? Old code
|
||||
```cpp
|
||||
void commandMotors()
|
||||
{
|
||||
// DESCRIPTION: Send pulses to motor pins, oneshot125 protocol
|
||||
/*
|
||||
* My crude implimentation of OneShot125 protocol which sends 125 - 250us pulses to the ESCs (mXPin). The pulselengths being
|
||||
* sent are mX_command_PWM, computed in scaleCommands(). This may be replaced by something more efficient in the future.
|
||||
*/
|
||||
int wentLow = 0;
|
||||
int pulseStart, timer;
|
||||
int flagM1 = 0;
|
||||
int flagM2 = 0;
|
||||
int flagM3 = 0;
|
||||
int flagM4 = 0;
|
||||
int flagM5 = 0;
|
||||
int flagM6 = 0;
|
||||
|
||||
https://grabcad.com/library/readytosky-rs2205-1
|
||||
// Write all motor pins high
|
||||
digitalWrite(m1Pin, HIGH);
|
||||
digitalWrite(m2Pin, HIGH);
|
||||
digitalWrite(m3Pin, HIGH);
|
||||
digitalWrite(m4Pin, HIGH);
|
||||
digitalWrite(m5Pin, HIGH);
|
||||
digitalWrite(m6Pin, HIGH);
|
||||
pulseStart = micros();
|
||||
|
||||
// Write each motor pin low as correct pulse length is reached
|
||||
while (wentLow < 6)
|
||||
{ // Keep going until final (6th) pulse is finished, then done
|
||||
timer = micros();
|
||||
if ((m1_command_PWM <= timer - pulseStart) && (flagM1 == 0))
|
||||
{
|
||||
digitalWrite(m1Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM1 = 1;
|
||||
}
|
||||
if ((m2_command_PWM <= timer - pulseStart) && (flagM2 == 0))
|
||||
{
|
||||
digitalWrite(m2Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM2 = 1;
|
||||
}
|
||||
if ((m3_command_PWM <= timer - pulseStart) && (flagM3 == 0))
|
||||
{
|
||||
digitalWrite(m3Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM3 = 1;
|
||||
}
|
||||
if ((m4_command_PWM <= timer - pulseStart) && (flagM4 == 0))
|
||||
{
|
||||
digitalWrite(m4Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM4 = 1;
|
||||
}
|
||||
if ((m5_command_PWM <= timer - pulseStart) && (flagM5 == 0))
|
||||
{
|
||||
digitalWrite(m5Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM5 = 1;
|
||||
}
|
||||
if ((m6_command_PWM <= timer - pulseStart) && (flagM6 == 0))
|
||||
{
|
||||
digitalWrite(m6Pin, LOW);
|
||||
wentLow = wentLow + 1;
|
||||
flagM6 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
What this function does is generate PWM values in software which is super inefficient. The esp32C6 according to it's datasheet supports 6 seperate PWM clocks in hardware.
|
||||

|
||||
So I wanna use these to reduce the overhead and so the loop doesn't have to run 20 times a second but faster making the drone respond faster. To use these I need to use this library.
|
||||
Right link: [https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html](https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html)
|
||||
|
||||
When first looking at the documentation I got super confused why nothing was working but that was because I was looking at the documentation for the wrong framework. I was looking at the ESP-IDF framework instead of the Arduino framework.
|
||||
Wrong link: [https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/ledc.html](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/peripherals/ledc.html)
|
||||
|
||||
So I really needed 2 functions of the library.
|
||||
* To set pwm channel, pin and resolution (ledcAttach)
|
||||
* To set the PWM frequency (ledcWrite)
|
||||
|
||||

|
||||

|
||||
|
||||
## Generative design
|
||||
Online I saw a lot of organic designs that where created by generative design.
|
||||
@@ -248,4 +329,5 @@ Once it starts generating this will pop up. These are the finished results. The
|
||||
|
||||
## Files
|
||||
|
||||
* [Handheld controller pcb](Drone%20controller.zip)
|
||||
* [Handheld controller pcb](Drone%20controller.zip)
|
||||
* [Drone motor 3D file](https://grabcad.com/library/readytosky-rs2205-1)
|
Reference in New Issue
Block a user