BEGINNERS: We rarely write code for you, but will help you write it for yourself

Many learners come here with post #1, asking 'please write my robot, quadcopter, RC car code for me'...
Perhaps I'm a bit mean... and you really did try to import your working Visual Basic code straight into the Arduino IDE...

This ain't going to happen.
The best outcome may be that you're referred to an existing thread that will point you in the right direction, or a really generous soul may take you offline to hold your hand with their experience.

The best way to get meaningful collective help - is to make an attempt at understanding your own problem, and the tools at your disposal. If you have trouble - ask questions on each of those - not the complete end project - yet. Remember to include your code within the </> code tags

After you get the basic wheels turning, make a first attempt at coding the pieces of your goal - not all in one (that will never work for a newbie). No-one will laugh at you for trying, but always comment and name your elements so the teachers can help!
Compile and run each piece so you understand and can optimize / comment it as you progress and understand the code.
If you have trouble - ask questions on each of those - not the end project - yet.

Stitch the various pieces together (adding & testing one at a time) to get them working as you expect.
If you have trouble - ask questions on each of those - not the end project - yet.

When you have all the pieces tied together - they may work, or may need some review and fine tuning.
Post a complete explanation of what you expect the sketch to do, along with what it does wrong, and any error messages from the compiler.

If you don't like the answers you get - perhaps the problem isn't in the answers.
Maybe you need to revisit the question, or accept the help is being given by unpaid people that want to help those that help themselves.

Remember Robin2's guidelines -
Planning and Implementing a Program

lastchancename:
Stitch the various pieces together (adding & testing one at a time) to get them working as you expect.

And when you add a new piece, test the WHOLE thing. Some innocent looking bit of code that functions perfectly can have an unwanted effect in a seemingly totally unrelated part of the program once it's integrated into the whole. Better to find the problem now than go four more steps and let the mystery deepen. Don't ask me how I know this.

lastchancename:
make a first attempt at coding the pieces of your goal - not all in one (that will never work for a newbie).

That might be interpreted to mean that the only reason he cannot do the whole project in one go is his newbieness. But the reality is that an experienced programmer would not try to do it all in one in the first place.

...R

True, except some experienced programmers have adequate skills to 'throw' a simple sketch together, and it will compile on the first attempt - then run as expected soon after.
Beginners will rarely have this luxury, which we take almost for granted.

While recognizing the truth of Reply #3 I was trying (in Reply #2) to get across to a newbie the idea that he should not be critical with himself when he is unable to write a complex program all in one go.

IMHO the key skill that experience builds is the ability to perceive quickly how a project should be implemented - because he can "see" how various familiar small elements can be used together to do something new.

...R

The rare case for me is when the person needing help has done a lot on the project and is not going to learn the code part for good enough reasons.

I'm talking about working apps like chicken coop or hydroponic automation, not toys or school work. These people do enough putting the rest together and when it's done the project may do some actual good.... yeah, I'd like to help.

As for helping students too much, the harm from that comes in many ways and not just to the cheater who will not learn enough to get through the next course (will try to cheat on that too) and lower the grades of honest students competing in that course. If the cheat can graduate and get a job in the field, they will show themselves incompetent but with money/connections or government programs might get a management position where they can do real damage -- as I have seen before.

We also get enterpreneurs occasionally looking for free work or ideas.

To all you old lags...sorry, experts :-)...

I get it...most of you probably have your own projects or even businesses and can’t b3 held responsible for this kind of workload. Also, newbie requests by their very nature don’t give enough info...or even wrong info...so you’d spend a lot of time writing only to be told “Ah, that’s not what I really wanted...”

However...

As a newbie myself, I’m happy to share bits of code that I’ve got working. Ugly though they may be to your experienced eyes, it helps me to learn and hopefully helps the other person asking.

I realise that’s not the same as writing code for someone with a good expectation that it will be full functional, but I wanted to reassure other newbies that help will be forthcoming from this forum (trust me, it is!).

The problem with being a newbie is that even with stickies that instruct us to include all the important information, sometimes we don’t...because we don5 know what’s important, because we’re new!

On the other hand, forums of all sorts should welcome them; in my experience it is the newbies who bring new ideas and challenge the experts to think in new ways.

So my advice...to the newbies...be polite, accept that you know very little and help the experts to help you by giving as much info as you can.

To the experts...try not to jump to “It can’t be done” by your second post - or at least, back it up with “...but you could try this instead...” - and please, if you must refer a newbie to a sticky, at least say “hi” or “you might want to read this” in the post; an unannotated hyperlink comes across as very dismissive...

Thanks to experts and newbies alike for the help I have received...

@ Grey Area

let me take your post at face value for a moment.

Old lag works for me right out of the box.
Expert I don't think I am nor could I hope to be.

I hack and slash for code and have shared in the past so nothing new there.

This next bit I do take issue with. Please read this post and tell me it does not contain the correct instructions to a noob such as you or I on what to include to get the best help and if you have any good suggestions I will steal them as I have a similar one in CREATE.

I think all noobs are welcome as is often seen by other people having to answer the same type of question from a noob almost on a daily basis. Never seen anything like an "OMG not that again" although plenty of "please read this first" (as they should)
If its something I am sure they could have found by even the simplest of searches my answer can on occasion reflect that and hopefully make them think for themselves a little.
Having like many done the "please read this first" only to have to follow up again and again in the same thread only to get to a point that could have been answered if they "HAD READ" the "please read this" in the first place then peoples patience is often pushed to the limit and I can assure you there have been some I would have gladly spoken to in much stronger terms for wasting so much time.

Again many experts will gladly take constructive criticism for being wrong from what I have seen as nobody can be perfect.
Many of the regulars you see answering questions do so because they can. They don't have to be here and don't need to help as much as they do but chances are if they say it wont work they often do give a reason why. Almost everything you just said has been said before a load of times. Dang it I probably said some of it myself ?

Its nice to get the thanks for anyone but you only need to read many of the posts to see that somebody may get an answer and the person who gave it never knows if it was right or wrong as the OP never gives any feedback. In many of those cases only the person who answered will often know if they gave the best answer or if it was likely to fix an issue...

GreyArea:
I realise that’s not the same as writing code for someone with a good expectation that it will be full functional, but I wanted to reassure other newbies that help will be forthcoming from this forum (trust me, it is!).

I learned beginner into experienced coding by reading, writing and fixing it and sometimes even took a course or two in the 70's and 80's.

I worked for my skill even when getting help which was harder pre-internet. I was grateful for any help, tips, techniques, etc, I picked up.

There are things that I could have done to make my way easier, saved me the years of spaghetti-coding I did and I will pass those on to others as best I can. Yeah, I'm a lag....

old lag meaning, definition, what is old lag: someone who has been in prison many time...

I have written complete sketches for new people only after considering their motivation.
Even so, I do this when I have some similar code already that needs minor changes, or when I have a similar interest in writing the sketch.
On several occasions, beginners (to the forum) are quite appreciative, on many occasions, not a thank you.
Of interest, when you try to quiz the OP on a finished sketch, the OP goes MIA never to be heard from again.

We all do this as volunteers and do get something out in helping others.

Beginners must realize we have seen and heard it all.
If you put effort in, you will get effort back.

GreyArea:
To the experts...try not to jump to “It can’t be done” by your second post

I think that comment is aimed at me, from this thread Cap sense advice please! - General Electronics - Arduino Forum. You will notice it was reply #5 when I offered this advice, but yes it was my second post, I did read the others so I think it is unfair to accuse me of "jumping in".

I also think you will admit I was right, what you were asking could not be done. In my first post I had provided you with the evidence from a commercial device.

or at least, back it up with "...but you could try this instead..."

That is not always possible because we are not mind readers and we don't know what aspect of the project is a deal breaker. We do not know what sort of compromises you are willing to make and what is an acceptable level of functionality. All we have to go off is what you state you want your project to do.

The current culture seems to be "if you can imagine it, it can be done, so tell me how", sadly this is not always the case, as you found. However, in this thread someone suggested a compromise and did a lot of work on it for you. Note he was not doing what you asked for, that is not using capacitave sensing, but another technique altogether, which late on in the thread you eventually understood. It also had the limitations that you could not see through the tube and that was a deal breaker for you.

One of the compromises you seem to have made is to drop the curved pole requirement, and your video seemed to suggest you were happy with the results you got which bore little relationship to what you asked in the first place.

So by any definition what you were asking for could not be done and by post #48 I hope you understood what was going on.

Now I have spent all my life ( so far ) making stuff and have quite a good idea of what is doable and what is not and their are several levels of doable:-

  1. Yes that is straightforward

  2. Yes it can be done but not at your current level of knowledge, go learn something first

  3. Just because you see a video of someone doing, something you consider similar, does not mean you can extend this because all the compromises have already been made. ( Your request for a long sensor is an example of this )

  4. While it might be possible it would need a major research project and / or access to manufacturing techniques not available to an hobbyist. ( your curved pole requirement comes into that category )

  5. The Arduino is not powerful enough to do this, sticking some other board or sub system to do the function and having the Arduino switch it on and off does not count as the Arduino doing this.

  6. Please learn some physics because it says you can't do it.

I am sure there are several levels between these points.

One thing I do see from some beginners is a kind of Dunning-Krueger syndrome where code is actually easy once you know the secret password or something very similar. Learning can't be the answer, just GIVE the knowledge as the code which glanced at once will reveal ALL......

Maybe they don't believe such ridiculous crap but if not then why not learn instead of wasting everyone's time?

Learning takes effort by the teacher AND student. The student is the one that must do all the real work.

Demonstrations/examples are only good to those who can repeat them and take them farther. If all you want is to read through material and call it good then perhaps you're more cut out for humanities studies where opinion matters rather than science, math and tech where opinion decides nothing.

When beginners who complain about the help they get here start to get to know the COMPILER they finally met a real enemy. Next worse up is facing their own runtime errors! By then the beginner attitude should be gone.

ALSO I don't believe that every beginner here is a beginner. We get idea-hunters looking for free intellectual property that they can claim as their own. If you find yourself doing free engineering work where you should have stopped, stop! The only thing you're teaching is how to cheat, it's not just students playing that game.

GoForSmoke:
perhaps you're more cut out for humanities studies where opinion matters rather than science, math and tech where opinion decides nothing.

What I like about programming (and engineering in general) is that I am pitting my wits against unforgiving and unbiased nature. Not against the opinions of another person.

If you don't do it right the bridge will collapse. Doesn't matter if it is within budget or if it matches the local architectural style.

...R

Yup those runtime errors can be a beee-otch!

Well, that escalated quickly.

Mike;

  1. You’re not alone in the “it can’t be done” by post two thing and I mean across multiple forums, not just here. But yes, the cap fits.

  2. Yes, Tony Wilks (bless you sir) really got the bit between his teeth and proved that the concept (very long triangular contact plates) COULD work, even if what I called it was the wrong thing (though as you know in my defence, I just used the same term as the YouTube video I’d seen.

  3. I have in no way given up on it, (I haven’t dropped the curved pole requirement; just cos I posted test video with flat contacts outside doesn’t mean that’s the finished article) and the fact you can’t see through the contacts is something I’m still working on thanks to helpful materials advice from other forums and companies (sigh, more spending...)

Mike, I like that you know your stuff, but I do think your choice of forum name indicates that you MIGHT already have a little self-awareness of your preference for naysaying!

When Mike writes

  1. Please learn some physics because it says you can't do it.

the proper response is to engage as to why unless you've already danced around that point. AFAIK you two argued about different things that seemed to have morphed along the bent or straight tube way but here now he has made a definite unequivocal statement.

Back On Topic?

When I give code I try to get people started with a sketch that can be greatly modified, do more in an easier cleaner way by following how the sketch as given works.

The examples use tasks, sections of code inside of loop() that are not inside of each other but do share data and control info through variables. To add to the sketch you only need to add a task and whatever variables if any are needed, maybe change an existing task to trigger the new one -- without having to weave it into a block of nested if-else type structured code that grows with every change into the dreaded spaghetti-code; the bigger the bowl, the more tangled it gets.

With tasks you can keep the pieces small and indentation levels low and more of your hair in the long run. So I try to introduce that and so do most of the old lags on this forum in the form of "do many things at the same time".

This is a different way to code than the standard. This is how automation has been coded for decades, I didn't invent it, I learned, how about you?

GoForSmoke:
When Mike writes

  1. Please learn some physics because it says you can't do it.

the proper response is to engage as to why unless you've already danced around that point. AFAIK you two argued about different things that seemed to have morphed along the bent or straight tube way but here now he has made a definite unequivocal statement.

Argh, I was going to let it drop. Last post even if there’s a reply, promise.

Mike’s list of six points (1, 2, 3, 3 again, 4 and 5) weren’t aimed at me...he said they were the “levels of possibility” he’s employed over the years. I don’t think physics was the issue...well, maybe, but more in terms of different environments or a missing “piece”...which I think is what Tony Wilks added in.

I’d also hope if Mike’s been doing it so long that occasionally, particularly when he’s used replies 3, 3(a) or 4, (even perhaps 5 if I’m right about Tony’s work) someone has actually come back and surprised him.

One major challenge when communicating to genuine newbies (or lazy halfwits), is when a button or link doesn’t exist that says ‘make my program work’.
“Can you write one for me” - not even a question.

Early posts from the truly uninitiated - clearly don’t understand there are ALWAYS more than one concept at hand in any project - even blinking a single LED.
It’s this fundamental idea of breaking your desire into manageable chunks that seems to escape many.

“I saw an app that does ‘this’ I have to do the same by tomorrow...”
Let’s define - saw, app, does, this, same
It makes a difference!

GreyArea:
I’d also hope if Mike’s been doing it so long that occasionally, particularly when he’s used replies 3, 3(a) or 4, (even perhaps 5 if I’m right about Tony’s work) someone has actually come back and surprised him.

That happens how often at all? And how often over something other than critical details?

I will just have to find a way to live knowing that Grumpy Mike is not god perfect after all.

But if he tells you that something is not physically possible, you can bet he's got solid reasons behind it. What you should seek to attack are his reasons instead of throwing weak ad-hom innuendos to distract from having lost the point.

I have to wonder now where that thread is. IIRC there might be a link in one of the posts. If I find juicy stuff, I'll bump the thread!