The application HAL

HAL, the link with the outside world

Without the HAL (Hardware Abstraction Layer) communicate with sensors and actuators would be difficult. For each type of sensor you should write a piece of firmware (like you do with Arduino) and ind each new variation of sensors, You should rewrite the firmware.

It would also be very difficult, achieve performance, that can be reached with our firmware, and our HAL (We work from 3 years, ten hours a day, including holidays – make over ten thousand hours, MICA peanuts!)

We were asked “How come you have to use the HAL ?”

The HAL should be used if you need to access your hardware via USB. In theory it is not absolutely necessary, but We did not find a better system. For those wishing to try, Here's the information you need:

Why not expose mechanisms to guide the HAL from the outside?

How many functions you hang, would be missing something (such as charts of the oscilloscope, the configurations, automatic reconnection, the calibration…). But suppose someone, pharaonic work, come to control all functions of the HAL. The result would be only, he recreated a clone of HAL, in a different application.

As already written in the previous paragraph, If someone wants to try, take a seat.

How to use the HAL

The HAL can open and close by itself transparently. All applications that need it, the open and close their own. Normally the HAL open minimized and does not bother. But when you need it, You can open his window which is very useful, to make comfortable adjustments, and try the sensors. Then it minimizes again, so the next time you will get minimized.

You can download a small program that we did to help you, in essence the program launches HAL select pin 1 with ADC_16 slot 0 Pin 2 with ADC_16 slot 1, Remember to send a maximum voltage of input 3,3 V (in the event that major uses a resistive divider) then launch the program Theremino_log and start with the single button capture.

He will write on C: a file called "log.csv" will date,now,value pin1, pin2 value every second. The reading is from 0 to 1000 on a scale of 0 to 3,3 V .

Remember that the program will continue to write to the log file, so if you want you can rename, He will recreate another.

Each unit does not match 0.30 MV but 3.3 MV (3.3 V / 1000 = 3.3 MV)
The units are not whole, have 4 or 5 decimal places around.
Then you get to the micro Volts of resolution.

But that doesn't mean that the accuracy of the measurements is around micro Volts.
– The actual accuracy is in the range of milli-volts (10 bit).
– The over-sampling and media (in the firmware), lead her around 200 UV (14 bit).
– Finally the Adaptive IIR filter (in application HAL), makes a continuous interpolation. So between a read value and the next you may also find differences in a tiny fraction of units. In the range of uV.

But this is not true precision, only interpolation between successive values and only valid when using a slow filter (low values). A slow filter will greatly reduce the responsiveness.

Even if it's just over-sampling, medium and tweens, the data come out much improved. Compared to raw ADC data, are considerably more stable and free from noise.

Some users have written that touching the pins of the Master, Sometimes the program HAL stops communicating with hardware, writes a red line with the message "disconnected" and you have to press “You acknowledge”.

This will occur if the body is charged with static electricity, and sends a small electric shock to a pin. All components are chosen with care and do not break but, even if you don't see the spark, It's always tension of many thousands of Volts that send temporarily haywire Microcontroller.

During the tests we take special care to handle forms only from off, or touch before the mass (for example the USB connector). The final project should always provide an insulated container that prevents users from touching metal parts under voltage.

QUESTION: I'm not sure if I've found a bug, or I'm taking a bath.
The set-up and this:
Theremino HAL 3.4
Pi1 Pwm_16
Slot 0
Max value 680
Min value 180
the rest all to default.

REPLY: The PWM only serves to adjust the brightness of the LEDs or emit a variable output voltage (with a low-pass filter) For the servant does not have to configure the pins like Pwm but as Servo_8 or Servo_16

QUESTION: By setting the Min and Max, I expect that by changing the duty cycle (with mouse over) reached the minimum value remains set to the minimum value, so’ as for the maximum value, Instead, checking with the oscilloscope the duty cycle, I see you still goes from 0% at 100% and so in my opinion the Min and Max values are not respected.

REPLY: The Min and Max values are not used to these things, for now keep them always at 0 and in 1000,
you do realize that there and send them to when you've made friends with the system

QUESTION: Also in my opinion, in the window “PIN details”, the right scale that goes from 0 to 1000, should autosettarsi the values of Min and Max aren't?

REPLY: Hard to explain but until now it seemed convenient not restrict the values.
I try to explain it in part:
– Min and Max are not limitations but of the values of “scale ratio”
– Very large or very small numbers may contain slots.
– Do not restrict the values between Min and Max is wanted and allows some operations impossible
– The normalization “standard” is from 0 to 1000 but nothing prevents you from working with other ranges
– MIN and MAX to convert values from 0 to 1000 a range, aliens or convert
each range “weirdo” in values from 0 to 1000.
– After Min and Max have done the conversion of scale you could easily restrict the values between Min and Max but you would lose the ability to use values “extrapolated”

QUESTION: Between an impulse and the next to be sent to the servo, It takes a delay, that the standard would 20 Ms, (but this theoretical), then OK any value from 40 Hz to 200 Hz

REPLY: Absolutely right, use the Servo_8 and Servo_16 types and you'll see that everything is in place,
If I remember correctly as “delay” We use 16 mS ( 60 Hz ) they are good for all analogue or digital servo.
And, I recommend to set the servo travel Fund do not use MIN and MAX but the appropriate boxes.

Leo asked:
———————————————————————
I would like to put four “key” under a glass (2 mm thick), How can I reduce interference between the keys? What would be the optimal size of key? As I bring the wires to key? Can I use a flat cable through from one wire of the key and the next a wire to GND? Can I create a single PCB with key (When I used adhesive copper)? That layout recommendations?

ANSWERS
———————————————————————
The capacitive keys working on very small capacitance changes if noise data from adjacent keys, long strands and glass are too often the useful signal is reduced and becomes difficult or even impossible to make them
function.

And not just have it work just barely, There must be a strong signal to make them work reliably even after a long time and with changes in temperature.

With a precise calibration can improve a little’ their behavior laws many times pages 16 to 21 of ThereminoHAL_Help and use the viewer and the numbers indicating below to see how much
change get in various situations. And read the notes on the fact that after each movement of wires YOU NEED to reset.

Basically you have to have the highest values possible without finger and as low as possible with your finger. And you should also minimize the impact on neighboring keys.

What can you do to improve
———————————————————————————————-
– Use thinner glass
– Do not use certain Windows that don't fit (leaded glass)
– Keep copper above and not below (closest to the finger)
– Use larger keys
– Force the user to touch all the fingertip (No fingertip)
– Space out multiple keys
– Whatever the connection wires (flat or normal) shorten them
– Keep the Master on the right of the four keys so as to minimize the wires

QUESTION: Use a flat cable through from one wire of the key and the next a wire to GND?
———————————————————————————————-
Any cable uses, shielded, flat or single strands, with massa between or without the results should look like, the more you do long strands and the more difficult it becomes to make them work well.
If you then add a thick glass you a further factor of difficulty.

QUESTION: Can I create a single PCB with key?
———————————————————————————————-
Where in the world did you find adhesive copper ??? I want it too!
You can do a single PCB, but keep spaced far enough keys.

QUESTION: That layout recommendations?
———————————————————————————————-
Keep spaced tracks (each other and from the keys) and make them as short as possible.

Use modules Theremino-CapSensor instead of the cap-keys
———————————————————————————————-
If instead you used four modules CapSensor (one per key and they would cost a figure) you could do things in Turkish. We did a kind of mouse that works through a shop window (6 mm) and that no one would touch screen was brilliant.
With four strips feels the finger position and moves the cursor on the screen as a mouse.
The software ThereminoHelper can move the cursor on the screen taking data from two slots (then to make a mouse you have to make a piece of software that mixes the four sides and allows to calibrate the limits…)

I would like to know if it is possible to connect a linear displacement transducer theremino, using it as a data logger, If you would like to know how to do (p.s transducer characteristics I submitted on fb).

Any transducer based on a potentiometer can fit.
We responded on FaceBook and we are completing the information for potentiometers, linear transducers and ribbons on this page: http://www.theremino.com/hardware/inputs/sensors
(in section “Potentiometers”)

La pagina: http://www.theremino.com/hardware/inputs/sensors is updated with all the information you need to connect Potentiometers, Sliders, Ribbons, Displacement transducers, Photo-resistors, Variable resistors with temperature (NTC and PTC) and every other kind of sensor that changes its resistance value.

I think it's a problem of Wine that does not reach the USB port. I don't know if installing the right drivers it is fixable, You should ask Roberto who is the expert of systems “Aliens”, write him at: development@theremino.com

My advice is to use Windows, It's been two years that jump out continuing problems on Linux to Mac and no one has yet solved, i.e. do you solve, but then reborn slightly different… on Windows we have nearly fifty applications that work with virtually zero problems. If the reason to use Linux is that Linux is more stable, the practice confirms this right. If the reason is to save, I am the first to want to save! But saving too does not work anymore and you only lose time.

I draw inspiration from this comment, Although old (combination) an exact year, for a bitter observation of software ' thereminico ': contrary to what is written on the site, This is a project that's completely Windows based ', more than helpful for Linux, Mac, Android!
I find nothing wrong in turn its attention to a particular operating system, but I find, Frankly, incorrect do not operate well in evidence.
It seems jarring that, against a side hardware completely ' open ', We talk to an OS that synthesizes the exact antithesis of the concept of open software. And even more striking is the fact that, instead of stimulate the development, towards ' alien systems’ Please clearly the fact that they are finally available for small Windows machines that make obsolete the Raspberry!
Your reference to the Free Software Foundation placed at the bottom of each page of this website, is misplaced vine may be worked as.
Paul

Our software is Free and Open and it works perfectly on Mono (cross-platform virtual machine). Mono has been completed by us and works 100% with very high efficiency. On Linux was not completed and works OK. If you complete our applications will work to 100%, even on Linux, otherwise it will be inefficient. It's your world, and it's up to you to cure it, and make it work well.

The conception about what is “fair” (stimulate the development of Linux) isn't the truth commanded by the gods. Fortunately, not everyone thinks the same as this world…

Some of us think that it is useless to continue to waste time on different systems and it would be time to unify on a single operating system. And this will not be operating system Linux, with all its nit-picking, but an operating system that will turn all.

Today it seems impossible, that an operating system, can run either Windows applications, Android, Mac and Linux. But many things, that seemed unthinkable just a few years ago, We are using it everyday.

So let's stop this war “Linux versus Windows” and we're all working to unify. Our part we're doing great. Your part is to fix bugs of Mono on Linux. Do it!

Dear Livius,
war Linux versus Windows you declared you and you yourself declared clear winner the second as, as you say, the system works 100% only on Windows machines and all other (Linux, MacOS, Android, etc. ) can be customized by emulating (the microsoft environment).

Even the “fair” and the gods you summon them, I speak only of clarity in communication of the actual characteristics of the project.

What you call ' nit-picking’ to me they seem rather technical specifications.
The terms ' Free’ and ' Open Source’ are the specifications that mean something very specific and should be used with weighting.
Luckily there are sticklers who insist on running a system in an operating system that can be so adaptable that they can run on any hardware including, to the limit, only the bare essentials in order… alien people to unique system that you would like to see.

All right, Maybe you're right, everyone has the right to think as he pleases. We don't do battles, instead of discussing, We write the software needed to make it work on all. I now come back to write and produce, do it and in the end we will have everybody beautiful applications that run on every operating system of the universe.

If you need help to migrate our applications on Linux, or other systems, ask and we will give you all the help you can get.

I take this opportunity to answer , Since I'm among the collaborators of Livio and system Theremino , in the description on the website are mentioned even so-called systems “Aliens” called so’ because’ many users use Windows , However those who want to experiment with Linux , can’ do it , starting to use Mono , that allows you to experiment without writing a line of code, This however’ does not prohibit those who have the skills’ try on Linux writing new native code without using emulators or software interpreters.
Encourage the use of Windows and’ absolutely conflicts with an Open , Indeed, for the vast majority of users and’ the only operating system “User Friendly” known and used massively throughout the world.
In conclusion , We put everything on the table , Hardware and Software , those who want to help test and improve the system Theremino to other platforms so be it , We are delighted to welcome him into our reviewers/contributors , Unfortunately, with our existing resources (We all work in his spare time ) It’ can do different , the proposed solutions.

Hello Alessio,
the very fact of call “Aliens” all operating systems that are not Windows itself qualifies as a ' community’ Windows user and your system qualifies as as an input-output system for Windows-based systems that can be adatttato to other systems by emulating.
Nothing wrong with everything, But why not write it clearly?

Windows go to wedding with an open, It seems to me a really challenging statement, almost as much as the concept that it is open because you use it in many and it is user-friendly…
Your piece of software is free, not that Microsoft, required for further for the proper functioning of your part. Also here a three-card Monte’ not to say clearly “our software is free and open for Microsoft users”.

The put the material on hand is your unquestionable merit, and indeed deserve more clarity and precision in describing the characteristics.

But Windows is not “Necessary for the proper functioning” How do you write wrongly.

The operation of all our applications is based on virtual machine DotNet (Mono on Linux) that is cross platform. We could have written in CPP or other purely Windows but, to make it easier to use on other systems, We wrote everything into a common language.

If this common language, on Linux and Mac has been implemented only in part, We don't have to adjust, must do that Linux and Mac experts.

And frankly it's appropriate to discuss, as it is all in Open Source, If you are interested in our applications just use them, change them, migrate…

in fact the word “Alien Systems” She was born in jest as he says Livio. Our programs were developed on Mono and, How do you know, works on all operating systems, including Windows. With the latter we had dozens and dozens of tests, fixing bugs and improving the applications. Unfortunately in other platforms, first Linux, We didn't have the same effect, because Roberto worked less but especially because mono, on that system, It did not work properly. To make you understand, I used Raspberry (distribution Raspbian), Thereminiche applications. All right, until I upgraded the system to a new version, the latter is compiled to use the numeric data processor, didn't get our applications, It was not the fault of our code, but in Mono and, on Raspberry, contains errors in libraries that use Floating Point hardware.
I would be very happy that you could help us with this, just to be able to write in large letters, “Theremino the system works well, also on other platforms”, erasing definitely the word Alien.

You must install the libraries for slots and USB HID and even Mono (typically already present in many Linux distributions).
These libraries are available and already compiled for Linux systems 32 bit. For Linux 64 use the bits source files and regenerate.

I tried to follow step by step the instructions to run the software under linux, but the program's main’ Theremino HAL not working.
I tried to recompile all the source files listed (about the project C_HID_API missing pthred library reference) Fearing a disallineameno with my Debian Jessie, but still to no avail.
By examining the log file command.log besides the final exception:

It is my understanding that there is no dll winmm.dll (windows media player??!): hard to understand why there are fictional errors due to the fact that mono does a guessing the names of libraries that require…

someone can give me information, directions?
And’ can purge the project from unnecessary forms and various charts and restrict her sugar essential cli?

Paul

PS: one more observation, I noticed that among the sources include those of libusb, I'll explain the reason… It is not enough that the distro?

These are exactly the problems we encountered us on Linux. And are the reasons that lead us to advise against Linux, who wants to work serenely.

The defects that you are experiencing does not depend on us, but at the 100% Linux drivers, from different implementations of Linux (Debian, Ubuntu etc..) and the flaws of the virtual machine on Linux, containing parts not completed and bug.

We lost months, to stand behind the quirks of Linux and, I promise you, We did everything we could. The problem is that as soon as we can, with great difficulty, to stabilise the operation, Linux libraries change, new bug and we come out again.

And’ important that it is clear to everyone: Our applications are written on multiplatform virtual machine, and are well written. Prove Linux users that are using, I can put you in touch with dozens of them. Many have written their comments in our blog and no one has ever written, that don't work because of us.

Often, however, our applications do not work on Linux and the reason is always the same: the list of things to install, fill in and check on Linux is brutally complex. For which “Run away” always something, or you neglect something, who is deemed not important.

Paul,
I forgot to welcome you among us, I do it now: Welcome to threminomani! We are very pleased to have you as a contributor. Help us improve the functioning on Linux, If you find anything we can improve, We will promptly.

You must excuse my orsaggine and lack of diplomacy, I'm a combat programmer, and are better at communicating with Mosfet, that with humans.

Excuse the term “Aliens”, He wanted to be humorous and not derogatory. I have a lot of respect them aliens, and I'd also, during the short human life, You can know someone.

No problem, Livio, Nice to meet you.
I admire all the Whisperers of mosfet's, and I would like to learn from you the art of knowing how to use, I got to know them as a student in tanta in circuit theory and little practice.
And’ just this interest that attracted me to your pages by trusting their own practical and functional in the sense that distinguishes those who work on circuits…

as for ' tecnicaglie ', I say my asking you to tell me if I misunderstood and I make misrepresentations.
from what I understand the need of mono is caused in whole (or almost) GUI management.
I assume that everything's for, ' system-level’ is enclosed, in the case of linux in two libraries. I know’ ( that, in fact, you fill in correctly).
I understand that even simple applications the interface could represent not only a simple assessorio, but the choice of ' mono’ means in practice the constraint to the ms windows platform.
I believe that the market offers alternative valdide is cross-platform that's custom-platform ', but I wonder:
really to configure/monitor an instance’ theremino need a GUI? It might not be enough to compile a few lines of c (or your favorite language) and have to console a simple ' keep-alive’ informing hardware status? wouldn't it be even enough for many applications ' simple '?

Are you doing a little’ of confusion, Mono is not absolutely tied to Microsoft. Mono is a cross-platform virtual machine par excellence. Practically there is no alternative, for demanding applications like our.

We could write a Windows-only applications, by directly calling Windows libraries and many times it would have been easier. But we have written in a common language, just to be multi-platform.

Mono on Windows is called Dot Net, but they are the same thing. The only thing that changes is the implementation specific drivers and libraries, on Linux and on Windows. But language is the CLR, that is the same for all.

The CLR (The Common Language Runtime) Microsoft is not a closed language!!! The CLR's specifications are Open Source to 100%.

The “cross-platform alternatives” of which you speak, What are they? We do not know them.

If you mean Java or Python, I can assure you, they are too slow and too simple. Write our (nearly fifty) applications in those languages, It would be like writing in the dark, with an ostrich feather. If you don't believe it you only have to try. You're not the first to think of these possibilities, but they all surrendered almost immediately.

About simplify, of course it would be possible. You could do it all in a black window type “console table”, trendy Linux. And write data from the command line, type: Slot1 = 100
Slot1 = 200

But there are some problems:
1) Despite knowing well our software. Change difficult parts as the USB communication, would require months of work.
2) I just can't imagine how much it would take to set up the hardware without a GUI, GUI tools, Oscilloscopes and accessories.
3) The end result of a lot of work, would more or less usable only for things ultrasemplici, type: I turn on an led… I turn off an Led.

Since this is a huge language, It is highly likely that Mono, on Linux, will never be completed. Version already exists 4.5, and we continue to use version 3.5, just to facilitate compatibility… but unfortunately on Linux, did not complete even the version 2.0.

But there is good news! Microsoft (as usual much more generous than what is expected) He announced that: “The CLR will also available natively for Linux and MacOs starting from version 2015 of the framework”

And “natively” It means that from one day to the next, everything will work fine, exactly how it works now on Windows.

It also means, that the dirty work, Linux anyone can finish, they are doing them for you, and pure free!

Cheers to the generosity of the Microsoft and, I add, by Big G, Oracle, etc…
the generosity of the majors I believe very little. I think it's out of context the concept of generosity in an environment that has to do with balance sheets and boards and maximization of profits…
anything goes, Okay choose their own providers and suppliers as it is believed according to your preferences, inclinations habits, etc… on the other hand the real world is about compromise and ' half-truths '. We all choose our suppliers in one way or another (If for no other reason that none of us Silicon is produced using, in the cellar) It's up to us to assess the fairness of each in relation to our desires or ethics or whatever you want.
There are those who choose the ' minors ', I throw the term, all those ' producers’ various independent way: University, research centres, consortia, Community indipependenti, community supported but majors, etc… a world that even in its disorder expressed novelty in virtually every sector of IT. at a glance broke a monopoly, which may affect the right to user ' normal’ (or to anyone not entitled to dividends of one of the companies involved), the real news is that were open spaces of freedom for everyone, from those with commercial purposes to those with scientific purposes…
the adoption of a ' formalism’ (I throw the generic term that applies to a text editor such a decentralised I/O) common passes necessarily through the consent and agreement of the various ' community’ involved.
in the present case, Mono, doesn't seem to have been accepted in the linux community (or * nix in General) and maybe the reason is you get it from his own presentation:
“Sponsored by Xamarin, Mono is an open source implementation of Microsoft's Framework based on the ECMA standards for C # and the Common Language Runtime.”

Therefore the company Xamarin promotes a company's Microsoft created formalism (certified by a Committee whose Chairman is a man in the microsoft). Mono, is an implementation of that formalism which incorporates in whole libraries of microsoft. In short, a modern open-source for the robe was monopolist… It is not so strange that independent implementations arranchino having to adapt to what the ' parent company’ shall decide and communicate (as it is not surprising that some device drivers may be missing the following specifications, watch case, are available elsewhere).
coincidentally i really don't have the same independent formalisms implementation issues and, beyond appearances, are much more simple and intuitive, provided that you do not confuse this with the mouse and atrophy from colored window.
Paul

Are you “pignolando”, for me what counts is that things are working properly, and they are easy to use, even for the 90% of users who are not programmers.

I might as well learn the necessary setup for Linux long sequences, but we are not working for ourselves. We are working for people who are artists, Researchers, Students… and these people should not become all programmers and fill the head of hidapi.

And we programmers, We have the task, and responsibility, to allow these people to continue doing artists etc…

I'm just trying to demystify things you wrote, and put the matter in terms understandable to all (in less than a few comma), artists, researchers, students, they are right to be raised by a number of technical details, but they, also, the right to be fully able to know what they're ' shopping’ and what are the implications of your choice even in relation to other choices they have done or will do…

For you “What matters is that things are working properly, and they are easy to use for users <<microsoft".

as regards the choice of target, do not put your mouth: conosci certamente meglio di me i tuoi 'utenti'. da quello che leggo dai commenti avanzerei l'ipotesi che si tratta di un 'pubblico' people tend to be well accustomed to handling Formalisms and well disposed towards scripting type forms…
among the communities that citi would add (at least among potential users) makers and creatives generally. well, hai idea di quanto siano diffusi i 'sistemi alieni' among these people? sono talmente 'alieni' to represent normality! try to imagine a meeting of creators or artists without a mac (speaking of apples), or a bunch of researchers without a linux…

All right, the genrosa microsoft will help the rest of us by giving us his healing code that will save the world, but certainly not free thought and free Act.

We're not talking about Mac !
Microsoft has at least some semblance of Open and Free, but Apple just no. Apple is the most closed and trade exists.
Would be fairer to attack Apple. But of course make war to Microsoft is fashionable, but who has the money to overpay a Mac is so cool…

Good morning everyone. I would try to communicate with HAL in Python. Python has a module that supports Memory Mapped Files, so in theory there should be no problem. Though I immediately run aground, because I tried to open the file “Theremino1” without success. Actually I didn't understand well: the memory mapped file is treated as though it were a file on disk? I.e., still has its own path, even though the data resides in memory? And in that case, What is the full path of the file “Theremino1” (I I assumed it was the same in which the copy of HAL that is spun).
Thanks for any advice please give me.

Yes, looks like a disk file in that they use similar functions. But it's actually a piece of shared memory. So there is a complete path (C:\) but only the name “Theremino1”.

All applications in the system must be able to use the same “file”, so the name does not refer to a specific folder. Finally, the file must be long 4080 bytes, because each slot is long 4 bytes and we use 1000 slot (more 80 bytes reserved for future special messages).

In VBScript it does so:Dim MMF1 As MemoryMappedFile
Mmf1 = New MemoryMappedFile(“Theremino1”, 4080)

Thank you. I managed to find the mistake I did. Report here the Python code to read the slot 1 at half-second intervals, in the hope that it will be useful to someone else. Please note that I'm not sure it's optimized in terms of efficiency, for the moment I just functions. I tested with Python 3.4 under Windows XP.

The loss of indentation was not your fault but the WordPress editor. We fight every day and sometimes it does just come the nervous. Even writing Code/Code (as thou hast judiciously made), You can fool him. The only way I've found is to add dots and spaces. Don't worry about how they are the messages and errors, If we give him a little work we.

The current ADC of CIPS have a resolution of 10 bit. When you read an ADC firmware makes an over-sampling 16 and then does the average of sixteen samples (in a few hundred micro-seconds). The over-sampling brings the number of bits to 14. Finally, the application has an Adaptive IIR filter HAL which averages over time and which interpolates the value further and brings it up to 16 bit (at the expense of responsiveness)

So if you plan to use the ADC to make measurements then the answer is no. You don't have 50 microvolt precision.

If instead you use them for process control, dwcw, Robotics etc.. Then the 16 bit, as far as mediated and interpolated, There really are. Theremino the system is basically a PLC, so rather than the accuracy of the measurements is counting the responsiveness and stability.

For example, if you try to read a potentiometer with Arduino or our ADC, You'll see a difference in impressive stability. This stability is the result of over-sampling, the media and the IIR filter.

I sure hope you don't have to do steps to that road. There is a door I2C module, But communicating with I2C devices is extremely inconvenient. Unfortunately every I2C device is different, their protocols are very complex. In addition to reading them you should program both the Master firmware, that an extension to our reading Protocol, in application HAL. Not worth it.

With the normal resolution of the ADC system Theremino are already excellent measurements. Keep in mind that 10 bits are already 1000 measurement points and which you can easily reach the over-sampling 10000 points. A normal electrical tester has only 3 digits and a half, then 2000 measuring points. We are not very far.

Hello,
on page software tools specifically direct the compiler Microsoft Visual Basic (Express 2008) that is also provided the download link.
pity that said only functions on MS Windows compiler…
I was wondering if it was possible to solve the problem by using the compiler (supposed cross-platform) provided by Mono (MonoDevelop): on the other hand States that filled out can also be spun using the run-time support of that framework.
the thing it seems possible, at least in theory, in fact on the page of mono is said to support a vbnet is aligned exactly to version ' 2008 '.

I tried to download the source Http://www.theremino.com/downloads/foundations project (suitable for programmers ') and I ' properly’ imported into the Mono IDE, but I immediately bogged down when I tried to build the assembly:
the default setting includes (and recommend the type) the use of the builder in the microsoft (' CSC '), but, with that setting the build fails: the exception is thrown by the builder vbc, but with no indication ' Diagnostics’
Task “Vbc”
Using Vbc task from Microsoft. Build. Csc Tasks., Microsoft. Build. Tasks. v 4.0, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a
Task “Vbc” execution — FAILED

by clearing the use of builder microsoft, Mono, If I understand correctly the documentation should use a builder native produced by mono project-basic on git-hub and installable packages available as ' mono-viable but nonculturable '.
Unfortunately, this setting causes an error, This time of complilazione (Class_HID class):

And thanks, Thanks again, for collaboration!
I expect a real Keith to help us, We'll give you all the support possible. Livio: 0125 57290 engineering@theremino.com, Roberto development@theremino.com. Finally, If you need hardware to ask away, I can make you the PCB with the cutter and Alexi knows how to find the strangest components and can make you kits. Alessio = makers@theremino.com

do not mention it, also because my commitment is what it is and certainly not from ACE of linux skills (or windows, or mac…)
I'll try to put a direct question to Roberto, but in the meantime, I think you're the right person as regards issues ' architecture '.

premise:
– from what I see, the main problem, for the ' porting’ It is precisely vb.net: not only there are no ide, but not even command line tools besides those of mono, with the limits that we said.
question:
– how it originated using vb.net?
If I understand correctly from what you wrote and that I got to see the role is to manage the GUI.
from what you say the ' back-end’ is C++ code that works properly (Maybe with some problems with libusb on linux):
These are the two dynamic libraries (.dll on windows and .so on linux)
one that handles communication with HID and specific community Theremino slots.
going backwards using vb.net for the gui back to best handle graphics libraries ' location’ of windows.
– is thinkable / reasonable use other graphics libraries to achieve the same goal?
I am reminded of the gtk but maybe there is something better/different.
I say this because at that point the GUI would become more stable and more compatible C++ ergo also.

No, There's a back end in CPP.
There are two versions of HAL. One version is written in Visual Basic and the other is written in CSharp. Both VbNet that CSharp are based on the CLR.

Why we use the CLR instead of other languages (for example, CPP)? Right to be Cross Platform!

If the HAL was written in CPP, There would be no virtual machine DotNet (Mono) as a common basis, and then the HAL would contain hundreds of direct calls to the Windows libraries. And this is equivocal our applications to Windows. You would speak more than “Cross Platform”, but native languages translation of Linux, Android and Mac. An immense work, that should be remade, with each new version (We publish very often).

Then there is another aspect: Theremino the system is not a single application, but an entire ecosystem of fifty applications, you talk to each other. The HAL alone really need to just.

Or you can get a real Cross Platform, or things to spend years to translate all, in CPP (for Linux), in Python (for Android and Raspberry) and also in Objective-C (for Mac). And once finished this job pharaonic, We have published other 50 versions, and we would have to start over.

Dear Livius,
I don't want to be pushy, Neither trying to convince you of anything, but I think we got to the heart of the matter:
Cross-platform CLR is not and never will be because it is owned by microsoft. So your/your code has already, in fact platform-dependent.
The supposed independence of the CLR is only presumed, precisely, is a pure assertion by Microsoft, a decoy fielded to curb the rampant excessive power of Java/Sun/Oracle, likely.
The CLR is a standard stabilto by microsoft and, in fact, imposed on the rest of the IT world, that, watch case, He implemented, with the exception of Novell that produced Mono, also that entirely disregarded by the rest of the world not microsoft.
and I speak not only of unknown communities of nerds gathered around one or another distro, But even while commercial (Redhat, Debian).
I'm sorry to admit it, but it is a dead end street, an out-out, Cross-platform CLR xor. just a simple ' Google search’ to realize this.

you say that the CLR performs better than other machines: I'm not even in doubt. but with regard to portability, It remains nailed to a severe limit, probably, insurmountable.
you say that microsoft announced the rilascico of the machine for other platforms? It doesn't seem a novelty, but yet another window-dressing, exactly like the Mono project, or Rotor, the CLR for BSD. who should take care of the burden of supporting a similar project? the microsoft? the xamarin/novell/suse? at the moment it looks like there are others who care ( the dotGnu project is over for centuries, the distro monoppix lasted three months, on the other hand you think one average developer of any community can adhere to the policies of the mono project?http://www.mono-project.com/docs/faq/licensing/ )
you talk about the work of Pharaonic do the porting of applications Theremino? try to think of the work needed to develop and support the machine CLR/NET, work which is not even planned/built by any ' community’ or organization/Foundation!

the bitter end is that at present the most reasonable solution, non-Windows user who wants to use Theremino is to use a virtualization. Provided that this does not interfere with communication with the interface. The resulting performance degradation, but at least free from bugs Mono stack.

Miguel and Nat found the CLR virtual machine, so efficient and well made, who decided to import it.

What I say is not worth much, but Miguel de Icaza is considered one of the “Most Powerful Voices in Open Source”. If he lost much of his life behind the CLR, It is precisely for “philosophical questions” or “practices” What do you call you. This is the dream of having, or sooner or later, a common language for all. And’ the same dream of peace, that inspired many, before us. And I am fully on that line. Not pro Microsoft nor pro Linux. I'm for a Cross-Platform language, and unfortunately there is currently no better than the CLR.

they will also be the most powerful men of open source (aside from the fact, and it's not philosophy, that the linux world is more than open source), but there's no one else who follows them, Apart from the development team of Xamarin/Novell quaòe themselves work.
as for the CLR, I repeat, I'm not arguing either how efficient, but there is no one, In addition to the team said that the developments.
I don't invent anything, just have a look on the net, If that were not enough the issues we've been discussing.

Surely you're right, I am not an expert in the Linux world and its internal divisions. Before we find ourselves discussing how much hair has the Picaza and as many as Torvald, I would propose to limit ourselves only to practical matters.

With practice I mean really practices. Not what you define “architectural led” and “technical specifications” but just: “This is possible. This one not be able. Augh!”

So I invite you again to answer the question: “What would be the alternative to the CLR that you propose?”

I invite you to use the binaries as-is, without recompiling them and following the instructions of the Linux page. I'm sure it will work. I myself have seen them work several times, and many of them are using it on Linux, on Mac and also on Raspbian. The Japanese have made their own versions with round buttons and weird writings. Australians use them everyday on MAC. They must work on you too!

When you have a version 4.6 running, It should be easy to compare versions, and operate the 5.

I encourage you to persevere with patience, It's worth it. Eventually you'll get the software 100% Open Source, the first line of our, up to the last line of Linux. And it will also 100% Cross-Platform.

Alien unixiano called alien debianico (Note 1)
We report an interesting email which probably, did not arrive at its destination, due to interstellar disorders.(Note 1) We would like to remind you that these terms are not derogatory, but playful. We have great respect for the basic idea of Open Source, underlying Linux.

Hi alien,
Let me introduce myself my name is Ricky and I am helping the system Theremino to migrate.

I am a professional developer, both sun win and Linux, and I'm doing a port of Theremino on Linux/Unix systems since a few weeks. I'm posting it all on github. If you want to follow my progress, find them here: HTTPS:(link deleted)//github.com/riccardoventrella/Theremino
(We've eliminated the previous link because the software of Ventrella disappeared from the WEB, Why would asked him)

You describe in short what I am doing: To keep from going crazy to choose and use graphics libraries,
on various platforms, I decided to use a web page, to configure a HAL, and monitor it. A little’ How do I configure a router, using his IP address with a browser. I then embeddato a webserver, in every instance of the executable, and I'm already testing it on Raspberry, both Mac (BSD Unix) on which development and also on Ubuntu. Seems to go all, I've also found a cross-platform library, that seems to be going well all over the world.

The web approach, among other things it allowed me to browse (and already works) the HAL from my smartphone or tablet, and also to launch multiple clients, on multiple browsers, on the same HAL.

I'll tell you right now that I don't have the time or desire to follow blogs, so I didn't even fully read your diatribe/discussion. They asked me to inform you, about what you were doing, and so here I am. The approach I, I also possibly on Win same, Without using MONO or similar (I avoid personal opinions and I try to keep everything in a technical field). Currently I have decided to bring on Raspy without using mono, because the latest version of mono forces him to use a Raspbian softfloat, with no problems. Then the (my) choice of abandoning mono is dictated above all by this. I'm used to build and then cross-compile natively on different machines.

Then, for recommendations on MONO you can hear Roberto. This email is just to let you know that something is moving and in a few months (Unfortunately work and have little time), I'll be able to release a full version-webbased, that'll run on Linux, so even on Raspy, on Mac and on FreeBSD (and of course also on Win).

Hi I am writing because I have a problem. I state that with visual basic do it considering the fact that I do not know programming but I try with what I. I am unable to create an application from your program “White” able to simulate the keyboard as in key manager and the other to use the value of two slots that take data from a joystick and transform it or joystick( Let me explain …. like the one that windows recognizes as game controllers for example) or in some sort of signal as the darts of the pc based on the value of the slots(In short, a sort of selector 4 vie. sorry to bother you but I can't

The problem as I ask is complex, What do you mean “on the one hand” and “on the other”? It means you should do both these tasks? We could not divide them, leave it to KeyManager in the first half and just focus on the second?

And the second part in turn should be divided into two parts:From Slots to four arrows
This makes already KeyManager, just use it with the Key Left, Right, Up and DownJoystick proportional to the value of two slots
If your Joystick, at the end of it all, move the mouse cursor on the screen, then this is done by ThereminoPad: http://www.theremino.com/downloads/automation#pad
Instead, if you must do something else, you will need to clarify the results expected.

You probably don't want to use the software Theremino KeyManager and ThereminoPad, but would like instructions, to do the same things in a simple way, in a few lines, you could easily understand. But unfortunately there is an easier way. We've done everything that we've been able to do, to simplify, published applications.

Learn how to “Transplant” the right parts from one application to another, It may take years of experience. Suggest that you take it slow, explore what we wrote and try to copy simple functions. If you can't make them work clear and try again. However we are always here and we will help you as much as possible.

exactly what I wanted to do that is to transplant the instructions or be able to somehow change the keymanager. the problem arises because the key manager has as impulses 0 1000 Instead I need that hasn't done anything when the slot has value 500 While it should do 2 different actions if you have values of 0 and 1000 and this does not allow me to do so. just wanted to know if there is a command for basic that let me given the value of a slot to make action to itself 500 anyway thanks for availability

or came to my mind now if you can get by the HAL 2 different results from the same pin, a kind of virtual one hand signal splitting values greater than 500 the other minor ones but it seems even more complex of the other solutions .

Rereading the comments I wrote some time ago and the subsequent ' controversy’ I suspect that someone might be misled, with regard to my personal design considerations Theremino.
I would like to clarify some aspects for me already apparent then, and largely confirmed by interacting with the ' staff’ by Theremino in General and with Livio in particular.

What makes a truly ' open project’ is not so much the technicalities (which also, as I tried to explain) have their importance, but the underlying attitude and, from what I see, the basic idea of the system Theremino is genuinely geared towards liberation and sharing of knowledge just as it should be every open-source initiative.
This is a true and correct incomparably more than attitude that underlies many other projects that they confuse so shameless and cunning the concept of open source to the benefit of their interests sometimes very dirty and even worrying…

I keep experimenting with Theremino and hope to contribute as soon as possible to the project with contributions that go in the direction of ever greater compatibility with GNU/Linux systems believes that, given precisely the profitable climate of openness, participation and collaboration within a community of users and developers with the most varied needs and feelings to express the potential of an initiative so important.

What you write is right, TEN PIN must appear in place of the six grade PIN.
If you appear TEN PIN then the pins 1,3,5,7 and 9 must be configurable as Stepper
The inscription Stepper is the sixth from the top and little note perhaps you missed out…
And Stepper_dir does not appear if you have not set up PIN Stepper…

Hi I have a problem with rgb LEDs. I got rgb LEDs with initials apa-106-f8 and should be controlled (as far as I understand I) from a signal to 24 bit that is sent with the timing of 0.35 us high + 1.36 us low for bits 0 While 1.36 uS high + 0.35us low for 1 and this for 24 times before a break of at least 50uS now a question how can I fly it and how should I set the hal?
I tried to see but the pwm signals are not good because they have timelines other than these while using the theremino automation by setting the maximum speed to arrive in the command that does not make me do 10uS in time changes using the DigOUT is no way to adjust the timing signal to send bits instead of raw signals? I know you will understand a lot but don't quite know how to say it :D

I know those LED, their precise timing to be respected, almost a serial line. Cannot get them to work with standard Pin types. You should reprogram the firmware to generate exactly what it takes to them. It would be a huge job and not worth it. The end result of a lot of work would have to be able to fly those specific LED and nothing else. You better use existing driver, I think you can find them at a good price from Pololu and LadyAda.

Or you could use a mini-Arduino (If someone has already written the firmware to drive your LEDs). And in turn the Arduino could be flown by one of our releases. Arduino is very suitable for making small hardware drivers like this.

The Theremino system is a generic IN-OUT for PC and has only very simple inputs and outputs. Attention in the future not to use anything of serial (such as I2C sensors), and nothing I have logs to be programmed or precise timing to be respected.

This applies however only to PIN standard (those who are on the Master and Slave modules). If you pass “by other means” then you can use any device or Protocol. Many are reading the serial send data on slots and Geiger in system Theremino and I read the production of solar panels with an adapter USB-RS485.

Another example to explain the principle: would it be possible to program the Master to read camera signals. But it would be a very good job and eventually would you undertake the Master, with a large amount of data. And the final result would not be all that great. Then the WebCam cannot connect to the Master, but to the USB, and communicate with the system through software. The same goes for the audio, GPS receivers, the SDR (Software Defined Radio), etc…

Hello, I'm waiting for my first theremino master, I would like to know if with sw HAL or possibly other, You can sum the signals beds…I mean I wanted to realise a Gaussmeter 3 hall sensors are arranged in 3 different positions but I want to add them together to get a single overall signal,…How do I do or what software to use? or does not exist and should I crearmelo I?
Thank you
Angel

With only the HAL you fail.
You should write three lines in the application Theremino Automation
Or a single line inside Theremino Script
I suggest you Theremino Script though more complex because it has many examples and is much more powerful and expandable.
Also Theremino Script produces real applications (files.exe).
– – – – –
If you can't write me and I'll send you a sample theremino Script that will do exactly what you need.

Thanks Livio for the program! I now I kind of need to chew and digest a little well all, because I used the vb years ago (but never applied to hardware) and then the assembler x micro, the script does not know him but I have to learn and then as soon as I get the circuit I have to put together a little on everything…but thanks to your site and collaboration has all the tools to be able to do everything,It just takes good will and time, Thanks again!

The theremino Script is virtually identical to the VbNet but doesn't have the part that allows you to set the user interface in a visual way (you have to write all the code). And he didn't even breakpoints to stop the program and inspect the values of variables. On the other hand is all in a single file and therefore easier to use.

The firmware does not have to schedule, It's already written in the Master module and you only have to configure it with the application HAL.

Hello, I do readings with a hall sensor and I need not only view but mostly store these measurements in real time, Maybe in an excel file… the HAL looks like it does but I don't remember,fair? How can I do? also I would serve as analog instrument should have control over which see unp optional these measures,already was created in some other application? Thank you

One analog instrument should have in applying Geiger, but you should extract it, edit it, redoing the stairs… a job very long and do ad hoc for the application you need. I don't really know how to make one that fits always.

Hello Livio, This time I'm not talking about CNC and I have a particular question.
I need to acquire in numerical form a sequence of events (36 shooting blanks) in a given time (70 or 80 or 90 seconds). In practice since start start… How many seconds and hundredths shoots first, then the second and so on until 36°.
The sequence of time then I should import into Excel for the appropriate calculations established by regulation race.
I was thinking if you could use to record each event also piezoelectric by virtue of the fact that I will have to experiment with the signal brooms and look for the best adjustment that does not take account of the echoes generated by the structure that hosts the event.
At first it was thought to the video recording (with many fps) be analyzed step by step but the acquisition time are high.
It would be useful to obtain the sequence of time as soon as possible.
What do you think?
Greetings

You could use piezo discs, or electret microphones.
Then it would take a little’ of software to extract the times.
Remember though that going from Master the accuracy will be around 2..5 milliseconds.
And that to maintain this accuracy even software should be written well, with appropriate timer, otherwise the accuracy would drop around the 20 Ms or even worse.
Maybe you could use teremino logger, but it is unproven and would give you only a recording, doesn't the times in seconds and hundredths.

Or you could use a microphone (or piezo discs) connected to the sound card and record audio. The accuracy would be much higher (better than a millisecond) and you shouldn't write some software.

Donations

Our applications have no copyright, so you can make every use, without any limitation. We are not asking even for the name Theremino or the site, but remember to us and let us know your friends.

Any donations, even small, are very welcome and can help the next projects.

Get the system modules

The theremino team only deals with research and does not sell hardware.

The system is completely "Freeware", "Open Source", "Not for Profit" and "DIY", but there are manufacturers who can provide modules assembled and tested at a great price. One could hardly self-build them spending less.

Disclaimer

The software, the firmware and circuit diagrams published on this site,
should not be used for life support systems,
or in any project where failure can affect the safety.

This does not mean that the system is particularly unreliable. Indeed, precisely because of its smooth functioning, could someone use it inappropriately.
But theremino the system was not designed for applications that can be dangerous, for which we disclaim all responsibility.

Legal notice

This site does not capture and store personal information.

Even in the case of donations through PayPal, We do not collect user's details.

Everything on the site is completely free, Open Source and no copyright.

For the license, legal notices and the privacy of personal data, consult This page.