Ardumower Azurit Perimeter code

Paddy

Well-known member
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
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
 
Back
Top