C# Command Gui, To aid in learning Arduino

So I'm working on a Gui to help people learn how Micro Controllers work. The idea is that you have a picture of the Arduino and you can click on pins to pop out windows showing what they are doing and let you reconfigure it from that window. Down the line I want to be able to create pseudo sketches in the Gui and run them in the Gui with the program puppeting the Arduino. Or something like that.

I have experience controlling the Atmega and Attiny lines with both Serial and SPI Ethernet so I'm starting with the Hardware Serial interface but long term I want both to be an option.

Would anyone be interested in something like this?

Sarah (Runa) Sixx

1 Like

I love stuff like this, and I’d be happy for the diversion over to c# from c++. :slight_smile:

Have you taken a look at TinkerCad by chance? it describes almost exactly what you’re trying to accomplish. It may be a great starting point to pin down your requirements. https://www.tinkercad.com/

That looks interesting, but a bit complex. My plan is to keep this limited so that solo learners like my self can take an Arduino and the most basic components and make something happen. I know a lot of people who get intimated buy huge systems like tinkerCad where you are rolling 3d modeling and PCB design in. I want this to be something a complete beginner can get up and running in minutes without having to weed out all that other stuff.

The idea is to build those mental relations between the board and the most basic commands. I know for a vet its nothing. but for a complete outsider it feels almost impossible. So I want to bridge that gap.

using the C# SerialPort class serial communication with an Arduino is straightforward
using Ethernet you could implement a simple TCP or UDP client/server protocol
any idea what Arduino you would use?

I already have a working ethernet-based command loop from a previous project. It's TCP based, simple telnet protocol call and response command loop. I don't leave the connection open in that iteration but I might look into something more of a terminal rather than just call and response. But TCP for sure. I'm aiming for the classic Arduino Uno. And I plan for the ethernet variant to use the Ethernet 3 library and a really cheap SPI ethernet adapter you can get on AliExpress for like three bucks. The USR-ES1. It's a whiznet w5500 based adapter.

be careful using the USR-ES1 which uses 3.3V logic with a UNO which uses 5V logic - you will require a level converter otherwise could damage the USR-ES1
may be simpler to use a Ethernet shield which plugs directly into a UNO or move to a Arduino which uses 3.3V logic

So what you want to create is a simulator with building blocks? And there is no physical Arduino needed?

Sort of yes. it will have a simulation running in the background. I've been learning a lot about c# to make it happen, but it will know what state the arduino SHOULD be in, based on the C++ code I'll make for it. And the Gui will send pre-defined commands to the Arduino to make it do things, then check to see that it did what it was supposed to.

I'm starting with a few simple things. reading and writing to pins, and running an I2C scanner.

Eventually I'll want a way to hot load simple programs but that can wait xD. for me this is already ambitious enough.

OK, so it's not a simulator. You have an Arduino running with a sketch; that Arduino sketch understands certain commands like pinMode, digitalWrite and digitalRead and applies them. If it e.g. receives a pinMode command from the GUI, it will set a certain pin to e.g. output.

I know that it takes the fun away but there are applications to build Arduino programs using building blocks.

I think your missing the point of this project. For a great many people, connecting the abstract concepts of what a micro controller does with the words in a sketch and with the physicals reality of how it works in practice is HARD. There is a great need for the Arduino equivalent of that India guy on youtube who draws things out so you can see them and explains stuff in simple words. This project is solely targeted at people with zero experience, as a way for them to interact with the hardware before they commit to all the learning required to preform even the simplest task.

Do you remember how hard it was to understand timers for the first time? Think about all that's involved with just reading a pin..... lets think

First you have to know what the Arduino IDE is and how to use it. You have to know the pins are a thing. you have to know half a dozen commands to set it up. And you have to have a plan for how your going to use that information. Question? at what point did the curious outsider gain not just all that information, but even the motivation to try to learn it in the first place?

We loose so many promising mind because they don't think they can learn this stuff and all they need is a wedge in the door to show them that they can know it.

Its like if you put a kid who has never seen Legos in the dark in a room with a sealed bucket of legos and try to tell them they can make a Millennium Falcon if they want to. The kid will just be frustrated, and they feel dumb since they don't think they can do what you think they should be able to do. You have to give them a light so they can SEE it and start simple!

I'm trying to figure out the requirements :wink:

I know that it's hard. I can remember the first steps at university into microcontrollers and how I battled with direct and indirect addressing. I can also remember the practical semester where I had to program communication between a Apple II and a GPIB device and I had to understand how that device worked,

Ah, I'm aiming for the very rawest of newcomers. something a kid could play with. It doesn't need to DO anything more complicated then be something they can poke and see stuff happen. Idlely it should be so simple that they feel board after a short time. The goal is to give them the confidence that they can do this and make them feel like its simpler then they where afraid it would be to get started.

To that end it CAN"T be something like tinker CAD. That program is TERRIFYING to my target audience. its WAY WAY to big for them. If you start most younglings to that kind of thing. 90% are gonna give up.

I've had to rewrite this several times because, I'm still pretty bitter about how this community treated me when I first tried to learn this stuff. And I see it as my duty to make sure no one that could learn and grow is blocked by the bizarrely under severed eariest stages of development. That is ultimately my goal with the project.

I want to make it so you don't have to jump from nothing to 40 steps in just to understand WTF an Arduino even is.

You can write a simulator that runs on the PC. E.g. drag a LED plus resistor to a pin (it can be one 'component'), add a 'timer component' and you can run blink on the PC. No physical Arduino needed. Same for a 'button component' etc.

Or you can write a PC program that allows a user to do the same (drag and drop cpmponents), it will generate the hex file and upload it to the Arduino. I think that this is the idea behind something like
ArduBlock | Block coding platform for teaching and learning coding (there are others if not mistaken).

I'm trying to figure out which way you intend to go? If I missed an option, let me know.

I used 'drag-and-drop' as an example, it can obviously also be 'click'.

Mix-and-match of the two is also possible.

You can add add additional features like showing (on request) the underlaying related microcontroller hardware and/or relevant part of the genetated sketch for those users that want to go a step further.

I have written this several times and I'm going to try and keep it short this time. I'm pretty triggered. I'm pretty upset.

And I get that you don't even understand why. That doesn't exactly make it feel any better. But it doesn't matter.

I am feeling condescended to. And I feel like you're ignoring the things that I'm saying.

I never ask for advice I never even ask for help. All I ask is does this sound interesting.

I do not want to hear about other projects. I am struggling as it is and this is a very ambitious project for someone of my skill set.

It's hard for me to find the motivation to pursue these kinds of things in the first place. I have to have some form of ownership over the idea or I just can't do it. So every time you bring up another outside project it just ruins my motivation. Maybe it would be different if you seemed to be suggesting specific things for what I've described. But you're not. You're just coughing up an array of other people's frameworks. And that just confuses me and that makes me feel dumb. And that really sucks.

So being swamped with all these other things is crushing me. Please stop

Just a little bit of advice, postmortem?

You’ve asked the community a question, and then became upset when they wanted to qualify, understand, or quantify what you meant. Asking if it seems interesting without a clue on the finer points of how it will work isn’t really asking anything at all. Each person in this thread could have simply replied with a “yes” or a “no”. Is that the feedback you were looking for?

So there we get to the advice part. I know you’re upset because you didn’t ask for advice, but these forums are for exactly that. If you’re asking FOR something, help, advice, feedback…be clear in what you’re asking for, or NOT asking for. If you aren’t asking for anything, don’t waste peoples time. This isn’t a business incubator where someone is going to suck up your project and offer you a million bucks to go make it. Also…don’t use the word triggered to describe adult feelings…put that advice at the very top of your to-do list.

I thought your project sounded very ambitious, but then again…you sounded very sure. I wish you the best of luck, I remember years and years ago, my first hardware / software projects, and the frustration.

Now…time for me to keeping working on understanding this whole Microcontroller EE side of things….talk about a lot to learn.

Dude. I'd love "Advice" I'm upset because nothing anyone has said has been advice. No one has probed my level of understanding. But its been people that asked clarification questions that where so far from what I was describing it was baffling. And people hocking other projects.

If you want to try and give some one some advice? Here's some advice, Assume they might or might not know what you do and feel them out in a way that doesn't sound condensing. Ask them how much they know about X. Say things like You might already know this but... and then bring up a topic.

But I was as clear as I knew how that this was supposed to be super simple for absolute beginners that learn by getting there hands on things and seeing how things change in real time.

But every one of you just gave me links to other projects or asking one question and left. Its infuriating and deeming and discouraging and its why I see this place as so insanely toxic.

And what exactly are you trying to imply with "business incubator where someone is going to suck up your project and offer you a million bucks to go make it" Because I'm pretty sure I described a free toy for kid. But is sounds an awful like your making yet more wild condisinding assumptions based on your own preconceptions.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.