Giter Club home page Giter Club logo

k3ng_rotator_controller's Introduction

K3NG Rotator Controller

Introduction

This is an Arduino-based rotator interface that interfaces a computer to a rotator or rotator controller, emulating the Yaesu GS-232A/B and Easycom protocols which are supported by a myriad of logging, contest, and control programs. It can be easily interfaced with commercial rotator control units. With the addition of a proper capacity power supply and several interface components such as relays, this unit could also serve as a total replacement for a rotator control unit or serve as the basis for a 100% homebrew rotation system. Several azimuth and elevation position sensors including potentiometers, rotary encoders, and I2C devices are supported. The code is very flexible, modular, and easy to read allowing intermediate and advanced experimenters and builders to customize it.

Documentation

Full documentation is located here. Please read it! Volunteers for maintaining documentation are needed.

Features

  • Azimuth only and azimuth / elevation rotator support
  • Serial interface using the standard Arduino USB port
  • Control Port Protocol Support:
  • Yaesu GS-232A & GS-232B
  • Easycom
  • Support for position sensors:
  • Potentiometers / Analog Voltage
  • Rotary Encoders
  • Incremental Encoders
  • Pulse Output
  • HMC5883L digital compass
  • ADXL345 accelerometer
  • LSM303 digital compass and accelerometer
  • HH-12 / AS5045
  • A2 Absolute Encoder (under development)
  • LCD display (2 or 4 rows, at least 16 columns)
  • Can be interfaced with non-Yaesu rotators, including homebrew systems
  • Directional indication on LCD display (North, South, North Northwest, etc.) along with degrees
  • Intelligent automatic rotation (utilizes overlap on 450 degree rotators)
  • Support for both 360 degree and 450 degree azimuth rotators or any rotation capability up to 719 degrees
  • North Center and South Center support
  • Support for any starting point (fully clockwise)
  • Optional automatic azimuthal rotation slowdown feature when reaching target azimuth
  • Optional rotation smooth ramp up
  • Optional brake engage/disengage lines for azimuth and elevation
  • Buttons for manual rotation
  • Command timeout
  • Timed interval rotation
  • Overlap LED Indicator
  • Help screen
  • Speed Control, both single PWM output (compatible with Yaesu controllers) and dual PWM rotate CW and rotate CCW outputs and dual elevate up and elevate down outputs
  • Variable frequency outputs
  • Preset Control using either potentiometers or rotary encoders with optional preset start button
  • Speed Potentiometer
  • Manual Rotation Limits
  • Classic 4 bit, Adafruit I2C LCD, and Yourduino.com Display Support
  • Optional tenth of a degree support with Easycom protocol (i.e. 123.4 degrees)
  • Park button
  • Azimuth and elevation calibration tables
  • Host unit and Remote unit operation for remotely located sensors using two Arduinos or ATMega chips
  • Works with hamlib rotctl/rotcltd, HRD, N1MM, PST Rotator, and many more programs
  • Moon and Sun Tracking
  • GPS Interfacing
  • Realtime Clock Interfacing

Acknowledgements

John, W3SA, has tested on a Yaesu Az/El unit, contributed several updates to the elevation code, and tweaked the code for a 16 column LCD display.

Anthony, M0UPU, wrote about his rotator controller construction and is offering PC boards.

Bent, OZ1CT, has contributed several ideas and feature requests, and performed testing.

G4HSK has a nice page documenting his project using this code, the PstRotator control software, and a Yaesu G-5500 rotator.

All trademarks mentioned on this page and in the code are property of their respective owners.

DXpeditions

I will donate parts, units, or specially customized software for DXpeditions. Email me at anthony dot good at gmail dot com. DX IS!

Support and Feature Requests

Please consult this page for support information. Feature requests and bugs are documented and tracked on GitHub.

Please note that I do this work in my spare time as I can and I am not a professional developer, however I play one on TV. I do my best to answer support requests, however I don’t like having to answer questions for items that are explained in the documentation. I do maintain a list of feature requests. Development items are prioritized by me based on the level of difficulty and what I’m interested in. I welcome code contributions, code testing, bug reports, and any help you can provide. This can even be helping with documentation or providing support to others on the Radio Artisan discussion group.

k3ng_rotator_controller's People

Contributors

7x2uv avatar dfannin avatar f6fvy avatar it9ipq avatar k3ng avatar ppapadeas avatar supermagnum avatar tlrobinson avatar vk2efl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

k3ng_rotator_controller's Issues

4Runtime Error 8020

Every time I initiate rotor control I get "Runtime error 8020 Comm port opening error" Yes I'm sharing the comm port with the Arduino, but your instructions say this is ok, the port is set to 9600 and "Easycomm" protocol is selected. The Arduino blinking led for the comm port activity flashes perfectly but then I initiate a move and I get the error and the program crashes every time. Any ideas please? It was somewhat more stable before I initiated AZ/EL but that's what I need, and the project is in breadboard stage but otherwise stable.

Help : Compilation Problem when activating LCD 4 bit

Hi K3NG,

I have a problem on compilation 👍
k3ng_rotator_controller.ino: In function 'char* idle_status()':
k3ng_rotator_controller.ino:3455:12: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
return("");

When disabling LCD 4 bit, no problem

Any idea ?

73's

Pierre

Compiler warnings, display crashing

I'm seeing some worrying looking warnings when compiling:

k3ng_rotator_controller.ino: In function 'char* idle_status()':
k3ng_rotator_controller.ino:3512:12: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

and

k3ng_rotator_controller.ino:7412:150: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
k3ngdisplay.print_center_timed_message("\x4B\x33\x4E\x47","\x52\x6F\x74\x6F\x72\x20\x43\x6F\x6E\x74\x72\x6F\x6C\x6C\x65\x72",SPLASH_SCREEN_TIME);

I can upload, but when it boots I see the initial splash screen then the board resets over and over.

What is the recommended arduino for this

What is the recommended arduino for this project it needs to run 2X TB6600 drivers going to 2X nema 17 steppers. I have a NANO but cant find the info I found before on how to interface the TB6600 to the NANO I can only find info for interfacing an UNO to the TB6600 and an UNO is too big I need to kjeep size down

Start problem with Hy-Gain T-2X Rotator

Hi, I'm using firmware and hardware from Remote QTH and sometime I have problem because the start of rotation cw or ccw, is faster than the brake solenoid and the rotor obviously does not start. I think that a small delay of 0,5 - 1 second should be enought to solve the problem. Thank you in advance if some friend could help me to solve this problem.
73 Maurizio iw5bms
control_boxjpg

Print out of Wiki

I would like to print out the whole k3ng_rotator_controller wiki documentation.

How to do??

Dot or Comma

I just realise, that some tracking software using comma to separate tenth of degrees in EASYCOM protocol. But K3NG rotator use a dot. Is it possible to change it somewhere in the code?
Thank you!

Auto-park feature

What would you think about an auto-park feature, where the controller, if it doesn't receive a command for a configurable amount of time (eg. 15 minutes), moves the rotator into a specific "parking" position?

The idea here is if you live in a area with strong-but-intermittent wind, you may want to park your rotator in a specific position, to minimize the wind load on an antenna mast/tower/etc. Having it auto-park after a timeout, would make it more reliable, and avoid needing to manually park it each time.

As I come up to speed on this code base, I'll see if I can build it, and send you a pull request. I'm just getting started, though, so it might be a little while.

Lloyd - KC7NGB

Split Project into C Classes

Matthew Cook [email protected] [radioartisan] [email protected]
12:09 AM (22 hours ago)

to radioartisan

Goody,

How interested are you in splitting this project into separate classes? I'd be certainly happy to assist, I've already dabbled with pulling the debug_output() out and into it's own class and have that working, along with strings stored in flash. Working well. However this Git thing would be a learning exercise for this black duck, never made it past SVN ;-)

73

Matthew
VK5ZM

incorrect index for row_override

There may be an issue with the LCD display code logic, which I found when setting the "LCDxxxROW" and "OPTION_DISPLAYxxx" defines. Would like to see it confirmed before sending a patch.

The issue is that in the main .ino file, the variable "row_override[]" array is indexed incorrectly ; It's off by one.

Here's the problem:

  1. row_override is initialized as "byte row_override[LCD_ROWS]"
    LCD_ROWS is the number of ROWS (so its indexed starting at 1), and all elements of the array are set to 0 (false). However, row_override is an array with index 0. if LCD_ROWS=4 , then row_override would have keys from 0-3.
  2. it is then referenced to determine if the row should be printed. ex:
    if( ! row_override[LCD_BIG_CLOCK_ROW]) ...
    but its using the LCD_xxx value, which is set to the ROW, which is index 1.
  3. so this check is not working correctly for setting things like LCD_BIG_CLOCK_ROW to 4. In this case, it would resolve to row_override[4], which means an array index out of bounds.

The suggested fix would be to modify all the "row_override[LCD_xxx]" references to "row_override[LCD_xxx - 1]" . That should fix the misaligned indexes.

Due to the error, this issue occurs only when you using something like row 4, so it sometimes causes a issue and sometimes not.

Create New Schematics and Diagrams

  • Basic System Schematic (LCD, analog voltage inputs, no buttons)
  • Advanced System Schematic (the above but with buttons, I2C sensor options)
  • Master / Slave functional diagram
  • ?

POLOLU_LSM_303_MIN_ARRAY

When i put
#define POLOLU_LSM_303_MIN_ARRAY {-822, -644, -1151}
to rotor_settings.h, i get strange behavior of the controller. I set the azimuth, the controller starts rotating the rotor, but when the target is reached does not stop. Elevation is ok. Position readings are good. If I do not have this line, everything is ok.

Servo as Motor

Cant find anywhere to email you I need to know if I can use a servo as the motor.

Thanks

de 2E0LIG

Preset Position Buttons

Is it possible to include in the code a set of preset positions for say 4 quick buttons?
I would like to be able to push 1 of 4 buttons that will go to a preset position that I use most of the time
Button 1 – North America
Button 2 – Europe/Great Britain
Button 3 – Australia
Button 4 – Eastern Russian (Wives City)

Just an idea.

Cheers Kevin.

Track Objects Based on Coordinates

Create a command to align the antenna with an object based on lattitude and longitude inputted. Also add the capability to read NMEA strings to determine the coordinates of the tracked object.

MA3 US Digital

Hello,
Can US Digital MA3 be used with K3NG Rotator?
Many thanks

Francesco

Local / Remote Unit "3.0" Functionality

Replace the current master/slave terminology with local and remote units. Implement all of the current master/slave commands as backslash commands and add new ones so that the remote unit can act autonomously. This would mean that the remote could do slow start, slow down, etc. and drive stepper motors as master to slave control of remote pins is not fast enough to do these functions.

Also, the remote should shutdown any rotation actions if it loses contact with the local unit for more than X seconds.

Proposed Local / Remote Commands:

\AZ - query AZ
\EL - query EL
\AS - AZ status
\ES - EL Status
\PG - Ping
\GA - go to AZ
\GE - go to EL
\RL - rotate left
\RR - rotate right
\RU - elevate up
\RD - elevate down
\SA - stop azimuth rotation
\SE - stop elevation rotation
\SS - stop all rotation

\DOxx - digital pin initialize as output; xx = pin # (01, 02, A0,etc.)
\DIxx - digital pin initialize as input; xx = pin #
\DPxx - digital pin initialize as input with pullup; xx = pin #
\DRxx - digital pin read; xx = pin #
\DLxx - digital pin write low; xx = pin #
\DHxx - digital pin write high; xx = pin #
\DTxxyyyy - digital pin tone output; xx = pin #, yyyy = frequency
\NTxx - no tone; xx = pin #
\ARxx - analog pin read; xx = pin #
\AWxxyyy - analog pin write; xx = pin #, yyy = value to write (0 - 255)
\SWxy - serial write byte; x = serial port # (0, 1, 2, 3), y = byte to write
\SDx - deactivate serial read event; x = port #
\SSxyyyyyy... - serial write sting; x = port #, yyyy = string of characters to send (variable length)
\SAx - activate serial read event; x = port #
\RB - reboot
\CL - read the clock

OLED display on/off

I am using an OLED 20x4 display successfuly. The display has no backlight and is too bright for night if no manual switch changes are being made. I loaded the sketch below and the noDisplay() blanks the OLED and display() turns it back on. I have a grounding switch on the hardware into the Mega digital port to turn off the display. I need at least code in k3ngdisplay to access the native LiquidCrystal library noDisplay(), display() functions.
Thanks,
Duane KA1LM

/*  KA1LM
  LiquidCrystal Library - display() and noDisplay()
 Tested with Newhaven Display International NHD-0420DZW-AG5 green on black
 Demonstrates the use a 20x4 OLED display.  
 
 This sketch prints "Hello World!" to the OLED and uses the 
 display() and noDisplay() functions to turn on and off
 the display.
 
 The circuit:
 * LCD RS pin 4 to digital pin 2
 * LCD Enable pin 6 to digital pin 3
 * LCD D4 pin 11 to digital pin 4
 * LCD D5 pin 12 to digital pin 5
 * LCD D6 pin 13 to digital pin 6
 * LCD D7 pin 14 to digital pin 7
 * LCD R/W pin 5 to ground
 
 
 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe 
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>
#include <SPI.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(2,3,4,5,6,7);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(20,4);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // Turn off the display:
  lcd.noDisplay();
  delay(500);
   // Turn on the display:
  lcd.display();
  delay(2500);
}

20190103 code Problems

HI K3NG
I have some problems:

I am using LSM303, the elevation angle is around the X-axis, and the azimuth is in the X direction (if it is in the same direction on the Y-axis).

The rotator is placed north, with a range of 360 degrees
Rotator > preset angle, preset angle > 180 degrees, it can run ccw
Rotator > preset angle, preset angle <180 degrees, only run cw, but this is an impossible task, it can not cross the 360 degree line.

If the rotator is placed south, the rotation range is 360 degrees.
I also have problems with crossing the 180 degree line.Once it is less than 180 degrees ,it can't run ccw.

The azimuth of the rotator in the 0-180 degree interval cannot be locked, but the azimuth can be normally locked in the 180-360 degree interval.

I don't know these problems with the code or with my settings. Would I get your help?
                                                                          GL 73 TU!

Autocorrect Feature

This feature will enable the rotator to automatically correct the azimuth and/or elevation should drift occur.

IR Receiver

IR Receiver - use a small remote to use for direction

Submitted by Kevin, Zl1KFM

LCD Voltage Reading

Have the unit take readings from an analog pin, perform math on the value, and have it display on the LCD with a label and units.

Graphics LCD Interface

Hi. I'm building a controller based around this code with a 192x64 KS0108 Graphics LCD and the openGLCD library. There doesn't seem to be any support for graphics LCDs? Given the relative cheapness of such a display, it would make an interesting addition. Happy to send you my modifications once they're done. I have the basic display drawing routines in place, just need to interface to this project now!

George M1GEO

Response to Yaesu GS232 command "C" on overlap

Hey,

this question is not directly related to this software, but I hope somebody could help me out:

I'm currently writing a web frontend for rotators. Currently, the Yaesu G232 protocol is supported. However I don't have a yaesu rotator available here.

The command C and C2 allow to query the heading of the rotator. Can somebody confirm me the range of the response, in particular when the rotator is overlapping. Does the rotator return 0...359 or 0...449 ?

It would be useful to know in order to implement the visualisation of Overlap properly.

Any help appreciated!

73 Tobias
DH1TW

screen shot 2017-10-03 at 01 47 55

/? Status Display Command

Basically take everything that is in the periodic debug log and output it in a user-friendly format.

Shows two lines only with the word "Azimuth º"

Hello everyone.
I am using a MEGA 2560, incremental encoder CWZ6C Omron, tinyGPS Neo6M and 4x20 display ... it occurs that on the screen appear two lines written "Azimuth º" but does not appear the direction of the antenna ... however when turning preset encoder appears the target angle. Please, can someone help me why the display shows the two lines without the data ... and how do I add lat / long on the fourth line? Thank you. PY5DK
2018-09-12 00 29 05
2018-09-12 00 28 38

Code not compiling

I would have thought this code by now would have been used and compiled by many users, yet all I get is a screen full of errors, this is the screen dump, can anyone help with why?
Arduino: 1.6.9 (Windows 10), Board: "Arduino/Genuino Uno"

In file included from sketch\libraries\TimerFive\TimerFive.h:16:0,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp: In function 'void TIMER5_OVF_vect()':

sketch\libraries\TimerFive\TimerFive.cpp:20:5: warning: 'TIMER5_OVF_vect' appears to be a misspelled signal handler [enabled by default]

ISR(TIMER5_OVF_vect) // interrupt service routine that wraps a user defined function supplied by attachInterrupt

 ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::initialize(long int)':

sketch\libraries\TimerFive\TimerFive.cpp:27:3: error: 'TCCR5A' was not declared in this scope

TCCR5A = 0; // clear control register A

^

sketch\libraries\TimerFive\TimerFive.cpp:28:3: error: 'TCCR5B' was not declared in this scope

TCCR5B = _BV(WGM53); // set mode as phase and frequency correct pwm, stop the timer

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:28:16: error: 'WGM53' was not declared in this scope

TCCR5B = _BV(WGM53); // set mode as phase and frequency correct pwm, stop the timer

            ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::setPeriod(long int)':

sketch\libraries\TimerFive\TimerFive.cpp:35:62: error: 'CS50' was not declared in this scope

if(cycles < RESOLUTION) clockSelectBits = _BV(CS50); // no prescale, full xtal

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:36:62: error: 'CS51' was not declared in this scope

else if((cycles >>= 3) < RESOLUTION) clockSelectBits = _BV(CS51); // prescale by /8

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:37:62: error: 'CS51' was not declared in this scope

else if((cycles >>= 3) < RESOLUTION) clockSelectBits = _BV(CS51) | _BV(CS50); // prescale by /64

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:37:74: error: 'CS50' was not declared in this scope

else if((cycles >>= 3) < RESOLUTION) clockSelectBits = _BV(CS51) | _BV(CS50); // prescale by /64

                                                                      ^

sketch\libraries\TimerFive\TimerFive.cpp:38:62: error: 'CS52' was not declared in this scope

else if((cycles >>= 2) < RESOLUTION) clockSelectBits = _BV(CS52); // prescale by /256

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:39:62: error: 'CS52' was not declared in this scope

else if((cycles >>= 2) < RESOLUTION) clockSelectBits = _BV(CS52) | _BV(CS50); // prescale by /1024

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:39:74: error: 'CS50' was not declared in this scope

else if((cycles >>= 2) < RESOLUTION) clockSelectBits = _BV(CS52) | _BV(CS50); // prescale by /1024

                                                                      ^

sketch\libraries\TimerFive\TimerFive.cpp:40:62: error: 'CS52' was not declared in this scope

else cycles = RESOLUTION - 1, clockSelectBits = _BV(CS52) | _BV(CS50); // request was out of bounds, set as maximum

                                                          ^

sketch\libraries\TimerFive\TimerFive.cpp:40:74: error: 'CS50' was not declared in this scope

else cycles = RESOLUTION - 1, clockSelectBits = _BV(CS52) | _BV(CS50); // request was out of bounds, set as maximum

                                                                      ^

sketch\libraries\TimerFive\TimerFive.cpp:41:3: error: 'ICR5' was not declared in this scope

ICR5 = pwmPeriod = cycles; // ICR1 is TOP in p & f correct pwm mode

^

sketch\libraries\TimerFive\TimerFive.cpp:42:3: error: 'TCCR5B' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52));

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:42:19: error: 'CS50' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52));

               ^

sketch\libraries\TimerFive\TimerFive.cpp:42:31: error: 'CS51' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52));

                           ^

sketch\libraries\TimerFive\TimerFive.cpp:42:43: error: 'CS52' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52));

                                       ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::setPwmDuty(char, int)':

sketch\libraries\TimerFive\TimerFive.cpp:51:17: error: 'OCR5A' was not declared in this scope

if(pin == 46) OCR5A = dutyCycle;

             ^

sketch\libraries\TimerFive\TimerFive.cpp:52:17: error: 'OCR5B' was not declared in this scope

if(pin == 45) OCR5B = dutyCycle;

             ^

sketch\libraries\TimerFive\TimerFive.cpp:53:17: error: 'OCR5C' was not declared in this scope

if(pin == 44) OCR5C = dutyCycle;

             ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::pwm(char, int, long int)':

sketch\libraries\TimerFive\TimerFive.cpp:62:19: error: 'DDRE' was not declared in this scope

if(pin == 46) { DDRE |= _BV(PORTL3); TCCR5A |= _BV(COM5A1); }

               ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:62:31: error: 'PORTL3' was not declared in this scope

if(pin == 46) { DDRE |= _BV(PORTL3); TCCR5A |= _BV(COM5A1); }

                           ^

sketch\libraries\TimerFive\TimerFive.cpp:62:40: error: 'TCCR5A' was not declared in this scope

if(pin == 46) { DDRE |= _BV(PORTL3); TCCR5A |= _BV(COM5A1); }

                                    ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:62:54: error: 'COM5A1' was not declared in this scope

if(pin == 46) { DDRE |= _BV(PORTL3); TCCR5A |= _BV(COM5A1); }

                                                  ^

sketch\libraries\TimerFive\TimerFive.cpp:63:19: error: 'DDRE' was not declared in this scope

if(pin == 45) { DDRE |= _BV(PORTL4); TCCR5A |= _BV(COM5B1); }

               ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:63:31: error: 'PORTL4' was not declared in this scope

if(pin == 45) { DDRE |= _BV(PORTL4); TCCR5A |= _BV(COM5B1); }

                           ^

sketch\libraries\TimerFive\TimerFive.cpp:63:40: error: 'TCCR5A' was not declared in this scope

if(pin == 45) { DDRE |= _BV(PORTL4); TCCR5A |= _BV(COM5B1); }

                                    ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:63:54: error: 'COM5B1' was not declared in this scope

if(pin == 45) { DDRE |= _BV(PORTL4); TCCR5A |= _BV(COM5B1); }

                                                  ^

sketch\libraries\TimerFive\TimerFive.cpp:64:19: error: 'DDRE' was not declared in this scope

if(pin == 44) { DDRE |= _BV(PORTL5); TCCR5A |= _BV(COM5C1); }

               ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:64:31: error: 'PORTL5' was not declared in this scope

if(pin == 44) { DDRE |= _BV(PORTL5); TCCR5A |= _BV(COM5C1); }

                           ^

sketch\libraries\TimerFive\TimerFive.cpp:64:40: error: 'TCCR5A' was not declared in this scope

if(pin == 44) { DDRE |= _BV(PORTL5); TCCR5A |= _BV(COM5C1); }

                                    ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:64:54: error: 'COM5C1' was not declared in this scope

if(pin == 44) { DDRE |= _BV(PORTL5); TCCR5A |= _BV(COM5C1); }

                                                  ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::disablePwm(char)':

sketch\libraries\TimerFive\TimerFive.cpp:71:17: error: 'TCCR5A' was not declared in this scope

if(pin == 46) TCCR5A &= ~_BV(COM5A1); // clear the bit that enables pwm on PE3

             ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:71:32: error: 'COM5A1' was not declared in this scope

if(pin == 46) TCCR5A &= ~_BV(COM5A1); // clear the bit that enables pwm on PE3

                            ^

sketch\libraries\TimerFive\TimerFive.cpp:72:17: error: 'TCCR5A' was not declared in this scope

if(pin == 45) TCCR5A &= ~_BV(COM5B1); // clear the bit that enables pwm on PE4

             ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:72:32: error: 'COM5B1' was not declared in this scope

if(pin == 45) TCCR5A &= ~_BV(COM5B1); // clear the bit that enables pwm on PE4

                            ^

sketch\libraries\TimerFive\TimerFive.cpp:73:17: error: 'TCCR5A' was not declared in this scope

if(pin == 44) TCCR5A &= ~_BV(COM5C1); // clear the bit that enables pwm on PE5

             ^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:73:32: error: 'COM5C1' was not declared in this scope

if(pin == 44) TCCR5A &= ~_BV(COM5C1); // clear the bit that enables pwm on PE5

                            ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::attachInterrupt(void (*)(), long int)':

sketch\libraries\TimerFive\TimerFive.cpp:80:3: error: 'TIMSK5' was not declared in this scope

TIMSK5 = _BV(TOIE5); // sets the timer overflow interrupt enable bit

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:80:16: error: 'TOIE5' was not declared in this scope

TIMSK5 = _BV(TOIE5); // sets the timer overflow interrupt enable bit

            ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::detachInterrupt()':

sketch\libraries\TimerFive\TimerFive.cpp:87:3: error: 'TIMSK5' was not declared in this scope

TIMSK5 &= ~_BV(TOIE5); // clears the timer overflow interrupt enable bit

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:87:18: error: 'TOIE5' was not declared in this scope

TIMSK5 &= ~_BV(TOIE5); // clears the timer overflow interrupt enable bit

              ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::start()':

sketch\libraries\TimerFive\TimerFive.cpp:92:3: error: 'TCCR5B' was not declared in this scope

TCCR5B |= clockSelectBits;

^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::stop()':

sketch\libraries\TimerFive\TimerFive.cpp:97:3: error: 'TCCR5B' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); // clears all clock selects bits

^

In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,

             from sketch\libraries\TimerFive\TimerFive.h:15,

             from sketch\libraries\TimerFive\TimerFive.cpp:16:

sketch\libraries\TimerFive\TimerFive.cpp:97:19: error: 'CS50' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); // clears all clock selects bits

               ^

sketch\libraries\TimerFive\TimerFive.cpp:97:31: error: 'CS51' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); // clears all clock selects bits

                           ^

sketch\libraries\TimerFive\TimerFive.cpp:97:43: error: 'CS52' was not declared in this scope

TCCR5B &= ~(_BV(CS50) | _BV(CS51) | _BV(CS52)); // clears all clock selects bits

                                       ^

sketch\libraries\TimerFive\TimerFive.cpp: In member function 'void TimerFive::restart()':

sketch\libraries\TimerFive\TimerFive.cpp:102:3: error: 'TCNT5' was not declared in this scope

TCNT5 = 0;

^

exit status 1
Error compiling for board Arduino/Genuino Uno.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

complete schematics

hello,i wanth to make this project but i have difficulties.please maybe you can give a complete and up to date electrical schematics and the program that works whit all the pieces from the schematics.i am new in this but i wanth to push my limits so please help me in this...73

PWM Slow Down in Slow Start Phase

Hi,
I'm new on BugReproting using Github so I hope I won't mess it up...

On Line 6993 normal_az_speed_voltage is used as start value for slow down. I would except current_az_speed_voltage here. In line 6990 the same value is used for debugging output.

I changed it on my local branch because my motor driver need current_az_speed_voltage on the above mentioned line to work correctly.

Thanks for this fine code of source code,
Olli, DH2WQ

Master / Slave Decimal Rounding Issue

The az and el values to the right of the decimal are always zero, not rounded, always 0 but the slave display shows the correct value including the decimals.

Reported by Eric WB6KCN

Head problem on 16x2 LCD display

Hello K3NG!
I trying make an your controller with 16x2 Display.
The head is shown in this way:
Azimuth XXX.X
zimuth XXX.X
The XXX.X are same in both rows. AZ/EL control feature is enabled. Problem is, that is no Elevation XXX.X text on the second row. Do you have any idea, where is the problem? Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.