How to move up from new to intermediate with projects

so, i have no prior experience with any hardware or software development and im at a point where i would like to start a slightly more complicated project (presently making a robot arm move how i want it to in 3 dimensions, and ive hit a bit of a wall having all the math worked out on paper and not being able to translate that into the IDE very well);

however, im finding it very easy to find information for people who are 100% new to arduino with no prior knowledge and for people who have a great understanding of C and C++ beforehand, but nothing that really helps me at this in-between point.

other times ive posted i got a lot of people telling me to go learn the entire C language, so i started reading into it and its super different to everything ive done so far in the Arduino IDE.

my main questions are these;
is there some place that has a more evenly-paced learning environment for someone in my position, preferably specifically for the Arduino IDE? id really rather avoid posting more than absolutely nessicary on these forums because people really dogpile me every time and its rather disheartening, but im not sure if the time investment to learn C will be worth it at all for this.

Your topic does not indicate a problem with IDE 1.x and has therefore been moved to a more suitable category of the forum.


I can't really answer your question. The main difference between C/C++ and Arduino's implementation is the user interface (keyboard and monitor). Things like getchar() and cin as well as printf() and cout do not exist; you can replace them by Serial.read() and Serial.print().

Do a search for Google Search.

If you don't mind a video, maybe some of the topics in https://www.youtube.com/playlist?list=PLGs0VKk2DiYw-L-RibttcvK-WBZm8WLEP will cover your needs.

1 Like

I wouldn't call that either "intermediate" or "slightly more complicated." (More like a big jump to "advanced"!)

ive hit a bit of a wall having all the math worked out on paper and not being able to translate that into the IDE

That doesn't really sounds like an Arduino-specific problem. You might be better off looking for robotics tutorials that talk about converting your math into code in a "general" way (not specifically Arduino, or even C.) Then the problem of converting THAT advice into C/C++/Arduino code would be a separate problem.

For example, consider a 2d plotter-like thing, where you want to draw arbitrary lines from (x1, y1) to (x2, y2), using stepper motors on each axis. There's a well known algorithm for doing that ("Bresenham"), but you could search for a long time for an "Arduino Tutorial" that describes implementing that, without finding anything. OTOH, the algorithm itself is well documented in lots of places (probably including any computer graphics textbooks. But also wikipedia), and is pretty easy to implement on Arduino...

1 Like

knowing C/C++ or the Arduino functions doesn't explain how they are used to monitor buttons, use timers, construct command interpreters, menu systems, state machines, ... to organize code structure, architecture, to minimize the amount of code and make it more maintainable (readable, enhancable).

the best way to gain that understanding is by reviewing well written code by others such as by monitoring this forum.

This is money well spent.

This "place" that has a more evenly-paced learning environment is:
following the general rules how to use this forum.

These rules are:

  • writing down a very detailed description of your project
  • mentioning the exact type of microcontroller
  • providing datasheets and schematics of the used hardware
  • and most important posting your own attempt to write the code
  • posting a pretty detailed description of the expected behaviour of your code
  • posting a pretty detailed description of the observed behaviour of your code telling the differencies
  • combined with specific questions

If you do that you will get continuosly answer for answer.

There are some threads that are hundreds of postings long where a absolute beginner was supported again and again and again and again because she/he showed enough own effort to ask at least specific questions writing some lines of code and ask again.

I haven't looked up your prevoius posts but you saying

to learn C comes from unspecific questions or demanding too much from others.

So far we (the other users) don't know yet nothing about your knowledge-level about programming.

From such few informations that you posted so far anybody that would try to help you would have to write down a hundred pages long tutorial to cover all eventualities.
And then he opposite happends:

Very short answers telling you "learn C"

So please give it a new try. by answering the below questions and by posting all the informations like described above.

Do you know what variables are?
Do you know what arrays are?
Do you know what libraries are? and how to use them?
Do you know where to find libraries?

Different people learn differently. You probably should consider which method works best for you. Self-study can be done via books or online tutorials. If you require more structure, then consider an online (or in-person) class at a local community college.

Thank you kindly for the help, ill research some more in that direction in the next few days

Thank you for the rescources, ill look into them!

This is very fair criticism, i should probobally just grow a thicker skin and sift the helpfull replies from the forums regardless. And no, i only know what vairables are out of those and i should probobally just learn C to get a grasp of those things

Thank you for the advice, i appreciate it

Ill check it out when i find the time (and money) to

Also i disagree i understand all of the concepts i would need to make it work(ik, interpolating points, plotting paths, bounded ik, etc) i just dont understand how to turn that into code in a way that works, specifically about the arm

And that is a start.
Take a look into this tutorial:

Arduino Programming Course

It is easy to understand and has a good mixture between explaining important concepts and example-codes to get you going. So give it a try and report your opinion about this tutorial.

If you post the math that you did on paper and at least your attempt to write the code you will get helpful answers.

Your attempt of the code doesn't even need to compile. It is just that you make the start and by posting your attempt the other forum members can see at what stage you are and can answer questions.

Additionally if your thread develops starting from very basic things it will be very helpful for others that want to do a similar project. Sounds like you did some pretty complex math for the kinematic of your robotarm. And that is what makes it very interesting. In case it is rather simple good to because the math will be easier to understand

This says you think you know the subject before you even try.

Absolutely no one told you to learn the entire C language.

This tells you that you do not know the subject enough to comment on its usefulness. New knowledge is exactly what you seek.

Bad choice of expression. You want help, but not "that" help and not "that" much information, and not "that" many people.

Most of the people you are speaking to right now are classic "book" learners. Many are self-taught. The rest go to school, put in their time and graduate with great results. This was all done before your internet, when books in a library or at school were how everyone learned about computers.

Re-addressing the "entire C language" point: Books may contain the entire language, but books have pages, chapters, subjects and examples. Read a page. Read a subject. Try an example. I would say "thirty minutes a day" but that is met with complaint, so I will say, "end the session when you tire of reading and trying examples."

I "read a book" called "C in 21 days" which divided the subjects into digestible sizes. Some days, one session was all I could handle. Some days I could complete a few chapters. With your computer, you can open the PDF of this book, read it, copy/paste the examples, test your knowledge (chapter tests), and pace your learning.

Find the "Download Raw File" button on the upper-right of the window. Start reading at page 28 "Introduction" and you will start your first copy/paste (or type-it-in if you want to really learn) on Page 29.

That's where I learned C. (I also reference Kerningham and Ritchie)

Above all, stop feeling sorry for yourself; grab a "book" and start reading and learning so you can write programs for every Arduino peripheral.

Now you need to learn inverse kinematics.

Plenty of examples of how to make a servo or stepper move. The fun is getting multiple motors to work together.

I free agree with @xfpd mostly.

Sooner later you will have to write your own code and type it in. I suggest rather than copy/pasting, you get your mind off high level stuff when it's possible and do the dumb work of typing the examples when you try something new.

You will make lotsa mistakes, but it is only in making such mistakes and staring for minutes at what you think might be exactly correct that syntax will start to live in your elbows.

Programming is still a bitch. I doubt anyone here hasn't lost a hair or two just not seeing a semicolon or '=' where the original had '==', and a few dozen other pesky details.

It will vastly increase your appreciation for the chore that coding can be, and immeasurably improve your reading skills.

You can read code, and no good writer of anything written is not also widely read.

Good luck. It's all hard until it is easy.

a7

I also wrote...

Jusayin'. I did not have "copy/paste" until mid '90s.

1 Like

Fixed it a bit. I guess I'm better at reading some things than others. :expressionless:

a7

for H.S. robotics we worked on programming a multi-segment arm. We starting with

  • code to individually control the servos at each joint,
  • then worked out the geometry to determine the servo positions to locate the end of the arm at some point on the x-axis and
  • then to locate it within it's range of motion on the x-y plane.

most programs are developed in stages