diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..1229cdc --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.pio +.vscode/* +compile_commands.json +.cache/* diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/include/README b/include/README new file mode 100755 index 0000000..194dcd4 --- /dev/null +++ b/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/include/mm.hpp b/include/mm.hpp new file mode 100755 index 0000000..aa9757a --- /dev/null +++ b/include/mm.hpp @@ -0,0 +1,14 @@ +/*+------------------------------+*/ +/*| Declaracion de pines |*/ +/*+------------------------------+*/ +#define C1 4 /* pins de encoders del motor 1*/ +#define C2 19 + +#define B1 5 /* pins de encoders del motor 2*/ +#define B2 18 + +#define M1BW 33 /* Motor 1 delante*/ +#define M1FW 32 /* Motor 1 atras */ + +#define M2BW 26 /* Motor 1 delante*/ +#define M2FW 25 /* Motor 1 atras */ \ No newline at end of file diff --git a/lib/README b/lib/README new file mode 100755 index 0000000..2593a33 --- /dev/null +++ b/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini new file mode 100755 index 0000000..457ca3e --- /dev/null +++ b/platformio.ini @@ -0,0 +1,15 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:esp32dev] +platform = espressif32 +board = esp32dev +framework = arduino +monitor_speed = 115200 diff --git a/src/main.cpp b/src/main.cpp new file mode 100755 index 0000000..dac855a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,61 @@ +#include +#include "esp32-hal-gpio.h" +#include "mm.hpp" /* Archivos header ubicados en include/ */ + +void m1handler(); +void m2handler(); + +int m1_rpm = 0; +int m2_rpm = 0; +volatile int m1_pulse_cnt = 0; +volatile int m2_pulse_cnt = 0; + +void m1handler() { + if (digitalRead(C2)) + m1_pulse_cnt++; + else m1_pulse_cnt--; +} +void m2handler() { + if (digitalRead(B2)) + m2_pulse_cnt++; + else m2_pulse_cnt--; +} + +void setup() { + Serial.begin(115200); + pinMode(C1, INPUT); + pinMode(C2, INPUT); + pinMode(B1, INPUT); + pinMode(B2, INPUT); + pinMode(2, OUTPUT); + pinMode(M1FW, OUTPUT); + pinMode(M1BW, OUTPUT); + pinMode(M2FW, OUTPUT); + pinMode(M2BW, OUTPUT); + attachInterrupt(C1, m1handler, RISING); + attachInterrupt(B1, m2handler, RISING); +} + +void loop() { + Serial.print("M1: "); + Serial.print(m1_pulse_cnt); + Serial.print(" "); + Serial.print(m2_pulse_cnt); + delay(10); + + /* Un giro de la rueda da 7 pulsos + * El radio de el reductor es de 1:30 + * Un giro de la rueda serĂ­an 210 pulsos*/ + if(m1_pulse_cnt < 200 && m1_pulse_cnt > -210) { + analogWrite(M1FW, 90); + } else { + analogWrite(M1FW, 0); + } + + if(m2_pulse_cnt < 200 && m2_pulse_cnt > -210) { + analogWrite(M1FW, 90); + } else { + analogWrite(M1FW, 0); + } + Serial.println(""); +}