tl;dr: Learn C.
and you also say
which between the two inform the answer and the advice I always give, which is my opinion and as you may see, not everyone's, viz:
Get a solid knowledge of C. By modern standards it is a tiny language, it has been around for some time and is, with some minor differences, at the core of many modern languages.
Nothing you learn by mastering C will be wasted when you open up your horizons, as in a desire to go "from procedural to object oriented".
Also, when it comes to these tiny computers we use, with limited resources, it is often not necessary or appropriate to use C++. And libraries written with the "full power" of C++ can be used w/o knowing anything about what's going on inside. Here basic examples and a modicum of pattern matching can suffice.
Years ago people thought it was crazy to use C on micros. Assembly language snobs enthusiasts may have had a point, but modern compilers are quite amazing and C is, again my opinion, more appropriate often, the exception being (maybe) at the lowest levels of coding.
And today C++ proponents may be as wrong to insist on using C++. Again, in the context of tiny programs running on resource-limited hardware.
One step further is my recommendation that the mastery of C need not involve microprocessors at all; again, nothing you learn will ever have been wasted time, even if you write and perfect programs that just run on the PC. I use several online compilers, even for Arduino development, where I often can get most of the logic working independent of how I have wired some buttons or LEDs.
I can read some C++, and I have modified C++ programs. I have made a few objects or classes or whatever they called in an experimental way, but most of what I use to make these little toys do what I want is straight ahead C that would have been valid, for the most part, 50 years ago or so.
As always, YMMV. Good luck whatever path you take, μπορεί ο άνεμος να είναι πίσω από τα πανιά σου.
a7