Como grabar Arduino desde java o C#

Hola, me encuentro realizando un proyecto de titulación de la licenciatura, el proyecto consiste en sensar la temperatura de una sala, por lo que estoy usando el sensor LM35 (analógico), pero también me interesa sensar gas (aun no tenemos definido este sensor), por lo que necesitamos saber que tipo de sensor es y si realmente se quiere estar sensando con el o no (enabled or disabled), la solución que planteamos fue la siguiente:

Como contamos con 6 entradas analógicas, configuramos si el sensor se usará o no con las entradas digitales del 2-7 enviándoles un higth si deseamos usarlo o un low si no lo deseamos; y para configurar el tipo de sensor usamos las entradas digitales del 8-13, higth para sensor de temperatura y low para sensor de gas. El problema consiste en que si "desactivamos" un sensor (desconectamos un cable de los pines 2-7) es te sigue enviando datos basura por un tiempo aleatorio, lo cual representa que la información recopilada no sea fiable.

Como alternativa de solución proponemos configurar que sensores y de que tipo de manera lógica, es decir desde programación en el Arduino, pero para ello necesitamos crear una interfaz amigable para el usuario, he ahí la razón de solicitar ayuda a Ustedes para ver si existe una forma de programar y grabar el programa en Arduino desde Java o preferentemente desde C#, de tal forma que el usuario pueda configurar en todo momento la interfaz desde una aplicación y al darle guardar configuración este se guarde en el Arduino.

pjabraham: Como alternativa de solución proponemos configurar que sensores y de que tipo de manera lógica, es decir desde programación en el Arduino, pero para ello necesitamos crear una interfaz amigable para el usuario, he ahí la razón de solicitar ayuda a Ustedes para ver si existe una forma de programar y grabar el programa en Arduino desde Java o preferentemente desde C#, de tal forma que el usuario pueda configurar en todo momento la interfaz desde una aplicación y al darle guardar configuración este se guarde en el Arduino.

Una solución que se me ocurre es que tengáis una configuración de sensores almacenada en la EEPROM. Cuando arranca la placa por primera vez, la EEPROM estaría vacía por lo que usaríais la configuración de sensores por defecto escrita a "fuego" en vuestro programa. Esta información, en el primer arranque la escribiríais en la EEPROM.

Durante la ejecución, vuestro programa debería leer de la linea serie y ver si le llegan nuevos comandos de "te he cambiado los sensores". Si fuese así, se escribiría en la EEPROM y tendrías que "reinicializar" los sensores que se usan en el sistema (rutina configuraSensores, por ejemplo). Otra alternativa, es "resetear" el Arduino.

Si apagaís la placa, cuando volváis a arrancarla, usaríais los valores que hay en la EEPROM como parámetros de configuración de sensores en vez de los que había codificados a fuego en vuestro programa. Aquí estáis asumiendo que entre encendido y apagado no te han cambiado los sensores, claro.

Gracias por su pronta respuesta, en estos momentos nos encontramos trabajando sobre la memoria EEPROM, haciendo algo similar a lo que nos sugiere, en cuanto obtengamos los resultados los comentamos y compartimos el código, gracias. ;)