I'm trying to understand this code but I'm facing many difficulties, especially with finding the right resources on the web. For example:
I can't find an official documentation for the SoftwareSerial library
I'm confused as to where is the GitHub "page" for this library. Who wrote it? I found a page from "PaulStoffregen" but it doesn't have a wiki or a documentation, I don't know if it's the official source or not because I found another one: from "Istoll", and another one from "micooke".
I know I might seem to you that I'm lacking basic research skills, but I'm really really confused. Please help, please show me how do you find official documentation and detailed tutorials, how can I teach myself, through free web resources, to code in Arduino?
Most of arduino libraries are written by independent programmers and does not have the official documentation rather than Readme's in github and comments in sourcecode. And the situation when there are several libraries with the similar names but different methods is also not uncommon.
The only correct solution is to read and try to understand the source code
I know how you feel. The source code is included with the library, look at the .cpp and .h files, for many that is the documentation. For me at first I did not understand it but I started watching some youtube videos by codebeauty on C++ and have learned a lot. She is doing CPP not the Arduino derivatives of it but it is close. For example Serial.print() does not exist but cout() does. For searching I prefix my search term with the word Arduino example: "Arduino RTC" and generally get close the first try sometimes even the first item. I hope that helps. Most of the libraries are written by third parts, some are better then others. Realize there is no guarantee that a library will do what you want. There are different libraries withe same name.
So there's no straightforward path to learn Arduino...
Thanks, I'll try to follow your advice.
So... in the code that I copy/pasted...there's a possibility that I can't be sure which SerialSoftware library I'm dealing with...unless I read and understand the source file... this is a nightmare...this kind of makes me hate Arduino...but maybe it's too early for me to say such a sentence...
Is there another "platform"/"board"/"technology" (other than Arduino) that doesn't have this issue? that has clear documentation, good resources, etc. ?
You're probably right. But this is gonna require a lot of digging through the details, while the initial goal was simply to connect an ESP8266 to a server... This makes me think about switching from Arduino to a more "correct"/"organized"/"straightforward"/"well documented" alternative... again, do you have any suggestions? Thanks for the reply.
I too can sympathise with you.
There is no easy path to what you wish to achieve.
The aim of the Arduino project was to make it easy for non-computer professionals to make artistic projects. The ecosystem has grown tremendously over the years.
There are a lot of people who hate Arduino and lots who look down on it. But for sheer variety of simple projects, availability of open source code, and helpful resources it is hard to beat.
Here's what I want: have access to well documented references, detailed tutorials, without having to digg through formus and unofficial sources. I want to have a map of the town, rather than having to ask passers-by about where to go to specific locations.
And even when you do find official stuff, such as some of the examples in the IDE (and available here), you will find some bad advice such as powering servos from the Arduino 5V pin, and buggering around with external pull down resistors rather than the built in pull ups.
.... Thank you, hearing this makes me feel less confused and less frustrated. If what I'm looking for doesn't exist, then I'm not going to drive myself crazy in order to find the unfindable.
So Arduino is really a bad solution for people who want to create stuff that they have good control over, stuff that has well established rule of thumbs and guidlines. I'm only discovering this as I read the replies on this post. Thank you for making it clearer for me.
The STM family has a lot of boards, with various capabilities.
Their official web site will allow you to find specific chips sorted by capabilities.
The STM32Cube IDE will integrate nicely with their boards. And they have many dev boards too.
But I suspect it may be just as steep a climb if not steeper than kludging something together in the Arduino ecosystem
You @bukhari_abdallah addressed that to me, which makes it seem like I said or implied something along those lines. I didn't, and I don't believe that's true.
It's totally open source- you can't get better control over anything than that.
There are many different platforms, but Arduino is the most beginner friendly. Others are designed for professionals or at least, for advanced fanats ) and require significant immersion
I didn't understand this statement. Do you mean that there aren't alternatives that can be well controlled? Or did you mean that Arduino's ability to by well controlled is rather limited?
No I mean that the source code to everything to do with Arduino is available to everyone. So you can take an existing library say, edit it to your heart's content, and re-save it with your initials tacked on the end of the name. In that sense, you have total control over what you do. Learning how to do all that is, as you have rightly pointed out, a pita.
as i understand, he means that because the arduino is open source platform, it's ability to be well controlled is limited only by your programming and engeneering skills
SoftwareSerial is the "bottom layer" class, and inherits methods from "Stream", which is documented here: Stream - Arduino Reference
A lot of C++ is like this, even for more "professional" products than Arduino. It's nice for things that you already know: "Oh - softwareSerial is a Stream just like Serial, and therefore supports all (or most of) the same functions!" It's NOT so nice when you're reading unfamiliar code, and the documentation is usually something like "SoftwareSerial inherits from Stream and Print", and then you have to follow a trail of inheritance to find a description of what you're actually looking for.