Hello,
for my ROSMower, I use perimeter signal from Ardumower Azurit. I use an Arduino Nano as sender which uses SIGCODE_1 as perimeter signal.
My mower is equipped with an Arduino nano, which has two coils attached to. If I define to use SIGCODE_1 as well, I get good readings for magnitude and smag. But it doesn't detect if coil is inside perimeter loop or not.
In early ages, they used a different signal named "differential signal". If I use this on my mower, it does detect the periemter loop correctly, even if sender still uses the same code as before
At sender, it is defined as follow
On my mower, it is defined as this
If mower is set to SIGCODE_4, it does detect SIGCODE_1 with no issues. But if I set it to SIGCODE_1 (what it should be), it doesn't detect in/out.
Does anyone know what's missing here? I'm lost
Complete code for base controller can be found here https://github.com/HoverMower/ros_hovermower_base_controller
Patrick
for my ROSMower, I use perimeter signal from Ardumower Azurit. I use an Arduino Nano as sender which uses SIGCODE_1 as perimeter signal.
My mower is equipped with an Arduino nano, which has two coils attached to. If I define to use SIGCODE_1 as well, I get good readings for magnitude and smag. But it doesn't detect if coil is inside perimeter loop or not.
In early ages, they used a different signal named "differential signal". If I use this on my mower, it does detect the periemter loop correctly, even if sender still uses the same code as before
At sender, it is defined as follow
Code:
#define SIGCODE_1
...
...
#if defined (SIGCODE_1)
int8_t sigcode[] = { 1, 1,-1,-1, 1,-1, 1,-1,-1,1, -1, 1, 1,-1,-1, 1,-1,-1, 1,-1,-1, 1, 1,-1 };
#elif defined (SIGCODE_2)
int8_t sigcode[] = { 1,-1, 1, 1,-1,-1, 1, 1,-1,-1, 1,-1, 1, 1,-1,-1, 1, 1,-1,-1, 1,-1, 1,-1 };
#elif defined (SIGCODE_3)
int8_t sigcode[] = { 1, 1,-1,-1, 1,-1, 1, 1,-1, 1, 1,-1,-1, 1, 1,-1, 1,-1,-1, 1,-1,-1, 1,-1 };
#endif
On my mower, it is defined as this
Code:
#define SIGCODE_4
...
...
...
#if defined (SIGCODE_1)
int8_t sigcode[] = { 1, 1,-1,-1, 1,-1, 1,-1,-1,1, -1, 1, 1,-1,-1, 1,-1,-1, 1,-1,-1, 1, 1,-1 };
#elif defined (SIGCODE_2)
int8_t sigcode[] = { 1,-1, 1, 1,-1,-1, 1, 1,-1,-1, 1,-1, 1, 1,-1,-1, 1, 1,-1,-1, 1,-1, 1,-1 };
#elif defined (SIGCODE_3)
int8_t sigcode[] = { 1, 1,-1,-1, 1,-1, 1, 1,-1, 1, 1,-1,-1, 1, 1,-1, 1,-1,-1, 1,-1,-1, 1,-1 };
#elif defined (SIGCODE_4)
int8_t sigcode[] = { 1,0,-1, 0,1,-1,1,-1, 0,1,-1,1,0,-1, 0,1,-1, 0,1,-1, 0,1,0,-1 };
#endif
If mower is set to SIGCODE_4, it does detect SIGCODE_1 with no issues. But if I set it to SIGCODE_1 (what it should be), it doesn't detect in/out.
Does anyone know what's missing here? I'm lost
Complete code for base controller can be found here https://github.com/HoverMower/ros_hovermower_base_controller
Patrick