Areas for discussion.

Here's a list of topics that we might want to discuss for 1.0, although I'm sure there will also be things that don't fit into any of them.

  • IDE Design and Usability: better (automatic?) selection of serial port and board, an improved serial monitor, embedded links / images / circuits, sketch file extension, etc.

  • Build Process and Platforms: third-party hardware support, pre-processing of sketches (and compatibility with advanced C/C++ code), library management, etc.

  • Core Functions: optimizations or modifications to existing APIs, e.g. digitalWrite() or Serial.print(byte)

  • Additional Functions and Examples: other protocols, components, etc. that we should support

  • Exposing Additional Microcontroller Functionality: especially timers and interrupts, but possibly analog comparator, etc.

  • Additional Sketch Syntax / Higher-Level Primitives: e.g. “magic” callbacks (like serialEvent() in Processing), event-based functions (e.g. on rising edge), state-machine support, additional pre-processor directives

  • Development Process: who participates, the decision-making process, testing, release schedules and process, etc.
    In particular, we should keep in mind the goals of lowering the floor (making it easier for beginners to get started) and raising the ceiling (increasing the flexibility and capabilities of the platform).

better (automatic?) selection of serial port and board

Yep, that would be great. I have 4 different boards to play with now (two are the pro and duemilanove so they stay the same but the rest are different). I use all of them quite a lot for different things and i often forget to change board/serial port if more than one of them is plugged in.

Maybe a confirmation dialog when you click upload...

Mowcius

How about just getting rid of the Tools + Board and Tools + Serial port menu items, and put drop down menus on the tool bar. The field would show the selected com port or board name, or be blank if nothing was selected.

No more hiding the board or port, and much easier to see at a glance that the right stuff is selected.

No more hiding the board or port, and much easier to see at a glance that the right stuff is selected.

Yep, I like that idea. Somethin' like:

COM Port: |COM 3[ch9660]| Board: |Duemilanove/Pro w/328 [ch9660]|

Mowcius

I'm not sure if the stop button is supposed to do anything, but it doesn't do anything on my computer :P. Maybe make it functional (or is this just my computer being dumb?)?

Maybe make it functional

Functional in what way? What should it do?

Maybe reset Arduino via USB connection when one press the stop button

Maybe reset Arduino via USB connection when one press the stop button

I like that idea!
It should be working for all boards that support auto-reset.

Please post this as a new topic, so it doesn't ge lost
Eberhard

a new topic here at the Uno Punto Zero?

I think this also can't get lost, will be a good shortcut!...

No more hiding the board or port, and much easier to see at a glance that the right stuff is selected.

Yep, I like that idea. Somethin' like:

COM Port: |COM 3[ch9660]| Board: |Duemilanove/Pro w/328 [ch9660]|

Maybe reset Arduino via USB connection when one press the stop button

That happens when you open or close the serial port anyway so I just use that...

Is it actually meant to do anything?

Mowcius

I thought it was supposed to cancel compiling or something. Many times I'll hit compile, and notice an error in my code, but I can't recompile until this one's done, and that can take some time..

I thought it was supposed to cancel compiling or something. Many times I'll hit compile, and notice an error in my code, but I can't recompile until this one's done, and that can take some time..

Yeah but does it work? It doesn't seem to. Maybe I just never need to cancel the compiling...

Doesn't work for me. I click it, and nothing happens :P.

Im pretty sure the stop button is leftover from processing where it actually exits out of the little applet where graphics are shown. As far as i know, its never done anything with regard to arduino. I dont know how to stop compiling, but to stop upload (which takes much longer anyway) i just yank the usb cable (tho i dont reccommend it unless you have an avr programmer on hand in case you corrupt the bootloader). I havent dl'd 0018 yet, but id love to see a way to keep serial data in the window while still being able to shut off the serial port (for logging purposes). Thats a big reason i never use 0017 much.

Just saw this on the Arduino Environment Playground Page:

Stop
Stops the serial monitor, or unhighlight other buttons.

In particular, we should keep in mind the goals of lowering the floor (making it easier for beginners to get started) and raising the ceiling (increasing the flexibility and capabilities of the platform).

Yes, I LIKE that - especially the "lowering the floor" - good for us "slow learners" in programming. Ya'll folks who seem to "talk hex & binary" amaze me with the knowledge of inter workings of code stuff.

This Arduino stuff is really great - so ya'll just keep up the GREAT work.

Ken H>

Ya'll folks who seem to "talk hex & binary" amaze me with the knowledge of inter workings of code stuff.

Computers are the most complex machines mankind has ever created. With that said, at their core, they really are nothing more than very fast player pianos with really long song reels.

Code is nothing more than an abstraction of those holes in the song reel (addresses and data bytes) to something more "human readable". All a compiler does (this is a simplification, of course) is take those human readable bits, and translates them into a series of binary representations which are, at heart, on-off switches connected via a very complex arrangement of NAND/NOR gates (because any and all logic may be represented by combinations of such) that describe a virtual wiring network, one which can change from one state (or machine/cpu cycle) to the next.

One place where it gets really fun is microcode - this is code used internally by the processor, programmed at the factory; an abstraction on an abstraction, if you will.

Wanna know the crazy thing? We could've had calculating machines (not necessarily computers as we know them; it would take the abstraction theory work of Church and Turing to make the mental shift away from calculation to that of general purpose symbol manipulation a reality, something which wasn't really being thought about in Babbage's time, though I bet a real system like his would have spurred it, much as it did for both Church and Turing in the 1940's) nearly one hundred years prior to when we did have them, had Babbage chose to use relays (and binary logic) instead of gears (and decimal notation, which was more suitable to mechanical implementation). Don't get me wrong, Babbage's machine could've brought us a great leap forward had there been the financial backing for it (among other reasons); it was certainly a Turing complete device. However, Babbage would've had an easier time implementing his ideas had he used Boole's binary notation and logic system (something Babbage would've had knowledge of; he did hold the Lucasian chair for a while, after all), along with relay logic. The relays existed, the power sources also existed (batteries, at a minimum). Space would've been an issue, but the Engines he designed were already behemoths, had they been built. The relays could've been miniaturized as well. I can speculate why he didn't do it; it would seem most likely the thought never occured to him (calculation with electricity would have to wait for Herman Hollerith and the 1890 US census, which ultimately begat IBM), or if it had, he couldn't see how the size of a relay could be made smaller (though that would seem unlikely), or that relays were very unreliable at the time (a possibility - most relay-like devices were used for telegraph usage as sounders; it wasn't until the latter half of the 1800's that relays were used for switching and other purposes, especially with the advent of multiplexed telegraphy, stock tickers, alarms, and telephones).

:slight_smile:

Most of the complexity of code is only in your mind; high-level C/C++ code is really a simplification of what goes on down at the metal (if you have ever performed hand assembly at the hex level, you know what I mean - several old-timers here, I know, do, actually). Could things be made simpler? Of course they could, but you can only get so simple before you get to a point where it becomes impossible to do complex things.

:slight_smile:

  • IDE Design and Usability: better (automatic?) selection of serial port and board, an improved serial monitor, embedded links / images / circuits, sketch file extension, etc.

I'd like to 'vote' for a slightly more sophisticated serial monitor.

I do several simple projects with kids.
It would be nice to be able to do a tabular layout, rather than scroling like crazy, so we can easily see what we want to show.
An example is simple data monitoring, where we want to see, say, the minimum, maximum and most recent value. Scrolling is distracting and unnecessary.

I'd be happy with something like a very simple vt100, i.e.

  • clear screen
  • move to row, column (and then be able to print)
  • clear current row to space
    These could be 'magic' characters, but things like Serial.clearScreen(), Serial.cursorTo(), Serial.clearRow() would be okay.

It'd be helpful if '\r' did return to the start of the line (this is broken on my Mac). But I'd be okay with Serial.startOfLn(), or something.

This would reduce the need to write a processing program (which is beyond most of the kids I have in the few hours available), or resort to cutting and pasting into a file or spreadsheet, just to get a reasonable output printed.

HTH
GB-)

I agree with gbulmer that providing the ability to do a tabular layout would be very desirable, although I would vote for implementing this in the print statement. This would enable LCD, Ethernet and any other classes that inherit print capability to also align columns of values using the same code. So my vote is to add some simple formatting capability to print that controlled the width and padding of a printed value would enable a sketch to align columns on any output device that supported print.

That's not to say that serial monitor would not benefit from enhancements, particularly the support of'\r' so that output can be kept to the same line.
But if Arduino core development resources are limited, then more sophisticated Serial terminal functionality can be obtained by using one of the many open source Serial utilities that can be downloaded for free.

Not sure if this is what is meant in the last few comments but being able to avoid this sort of code would be great:

Serial.print("x ");
Serial.print( );
Serial.print(" y ");
Serial.print(y);
Serial.print(" z ");
Serial.println(z);

Compared to:

Serial.println("x", x, "y", y, "z", z);