where I can navigate a pointer across the load line and control the voltage/current based on the location of the pointer on the load line.
I also want to have a menu where I can select different pre-loaded devices with different load lines and have a protection mechanism that will not allow you to adjust the operating point beyond a threshhold for the model chosen.
I already have the voltage/current control in the works in which I'll be adjusting with LDRs, for this I just need to figure out the the visual and control functions.
I know nothing of coding or digital electronics. Is this task too ambitious for me?
This seems doable but not as your very first Arduino project. The reason is that the screens available for the Arduino are quite primitive. You don't get nice graph functions so you have to write your own. You also don't get nice sprite functions so a pointer moving over the top of that graph has to redraw the graph behind it when it moves.
It may be better to put the user interface on a PC and send commands to the Arduino so that it will drive the outputs appropriately.
You mention the reason this is not a beginner project is because arduino does not offer the correct display. Can I not just buy a third party display and control it with the arduino during prototyping?
coinmaster:
You mention the reason this is not a beginner project is because arduino does not offer the correct display. Can I not just buy a third party display and control it with the arduino during prototyping?
MorganS was referring to third-party displays.
And the other reason this project would currently be beyond you is:-
I know nothing of coding or digital electronics.
Anyone? I need a direction to start in.
Start learning programming an Arduino with C++. Build test circuits, play around with the examples provided with the IDE. With no programming experience, you don't have a snowball's chance of achieving your goal until you get a fair bit of practice. Learn to crawl before you try to walk, then when you're used to that, try running.
coinmaster:
Awww, I thought arduino didn't need C++? I tried learning C++ once, it was not fun.
The Arduino language is C++. Take a look at the source files and libraries. All are written in C or C++.
For example, this is part of the header for the "Servo" library - basically a standard C++ class:-
typedef struct
{
uint8_t nbr : 6 ; // a pin number from 0 to 63
uint8_t isActive : 1 ; // true if this channel is enabled, pin not pulsed if false
} ServoPin_t ;
typedef struct
{
ServoPin_t Pin;
volatile unsigned int ticks;
} servo_t;
class Servo
{
public:
Servo();
uint8_t attach(int pin); // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
void detach();
void write(int value); // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds
void writeMicroseconds(int value); // Write pulse width in microseconds
int read(); // returns current pulse width as an angle between 0 and 180 degrees
int readMicroseconds(); // returns current pulse width in microseconds for this servo (was read_us() in first release)
bool attached(); // return true if this servo is attached, otherwise false
private:
uint8_t servoIndex; // index into the channel data for this servo
int8_t min; // minimum is this value times 4 added to MIN_PULSE_WIDTH
int8_t max; // maximum is this value times 4 added to MAX_PULSE_WIDTH
};
It's not all that hard to learn. Just start with the basics as shown in the IDE examples and work your way up.
coinmaster:
What arudino do you recommend for this project? Assuming I learn C++ and whatnot is there a solution to my screen problem?
I'm not a display expert, so can't answer your question. You want to do some fairly advanced stuff, so you'll need to do some research to see what displays have the size, resolution and capabilities to do what you want, then look at which Arduino will be needed to reach your objective.
You won't get anywhere until you learn the basics. For that, a UNO is probably a good choice.
This isn't a project that you can just dive straight into with no experience. You'll need to do a lot of practice and a lot of research.
coinmaster:
Unfortunately there's no way around the fact that I can't accept anything less. How and where would I begin to embark on this project?
Well, first start with the non-portable version. Basically everything I write starts with something simple that uses the Serial monitor to send out raw sensor data or whatever, so I can see that the functional part of the circuit is working.
The job you want to do on the screen is going to consume a lot of your Arduino's memory. Anything beyond "really simple" will exceed the memory available on an Uno or Micro. You might think that the obvious upgrade path is an Arduino Due but the Teensy is even more capable even though it has fewer output pins. Read https://www.arduino.cc/en/Tutorial/Memory to understand the limitations and the different types of memory.
You will need some kind of input - buttons and maybe a keypad. Work out what you want the physical interface to look like, buy some parts and wire them up.
Just getting text to display on the screen is pretty easy. You don't have to follow the exact order of operations above.
But then mounting those Adafruit screens is difficult. There's no screw holes or tabs to allow them to go into a pre-built box. I 3D print my enclosures now. That takes a certain amount of experience with 3D design and the printer's foibles to be able to make the features that hold the screen securely. Duct tape is fine for a desk-bound prototype but making something portable is actually quite difficult.