C# tritt elegant im kleinen Schwarzen auf

Code in C# und Microcontroller stehen sich nicht eben nahe, nehmen manche an. Angesichts eines winzigen Boards, des Netduino, erweist sich die Annahme als Irrtum. Wer dem ‘kleinen Schwarzen’ noch nicht begegnet ist, wird von dessen elegantem Äußeren nicht nur fasziniert sein, weil er weiß, was sich dahinter verbirgt. Wenn er es denn weiß. Ein 32-Bit-Controller von Atmel, getaktet mit 48MHz, der in C# programmierbar ist, und zwar ohne irgendein weiteres Board einzuschalten (wie etwa das auch nicht unelegante Dragon-Board). Der ARM7-Controller ist nämlich in das .NET Micro Framework eingebettet, das auf der Netduino-Hardware als Software implementiert ist.

Der Standdard-Version des Netduino steht ein Netduino Plus zur Seite, um gegebenenfalls auf 2 GB Speicher einer auswechselbaren MicroSD-Karte zurückzugreifen, sowie das Board ans Ethernet anzubinden, so daß sich die uneingeschränkte Kommunikationsfähigkeit mit dem LAN und WAN über das TCP/IP-Protokoll eröffnet. Aber auch ohne Netz im Hintergrund bietet sich das Board an, um C# als »see sharp« auszubuchstabieren. Es lassen sich digitale und analoge Ports ansprechen, Signale einlesen oder ausgeben, es laufen Timer ab, Interrupts werden ausgelöst, die PWM arbeitet nebenher, und zwischenzeitlich legt sich der Prozessor schlafen, solange es nichts weiter zu tun gibt.

Und all das geschieht unter Visual-C# aus der Entwicklungsumgebung heraus, an die das Netduino-Board unmittelbar angeschlossen ist, sobald der Stecker des Micro-USB-Kabels eingesteckt wird. Lediglich das .NET Micro Framework ist zuvor zu installieren. Es fügt sich nahtlos in die Entwicklungsumgebung von Visual-C# ein. Templates für Projekte mit dem Netduino beziehungsweise Netduino Plus lassen sich auswählen, und das Board wird im Debugging-Modus programmiert, wobei das Programm automatisch in den Flash-Speicher des Boards übertragen wird. Anschließend wird das Board abgenabelt, um bis zur nächsten Umprogrammierung allein zu arbeiten. Bei jedem Power-Up startet das Programm. Einen (Reset-) Taster gibt es auch, nebst weißer Kontroll-LED. Außer einer zusätzlichen blauen LED, die bequem ansteuerbar ist, ist sonst nichts weiter an Bord genommen worden. Knappes Design, es unterstreicht die sich bietenden Möglichkeiten. Auf dem Board, das dem bekannten und bewährten Arduino-Layout folgt, stehen geregelte 3.3V und 5.0V zur Verfügung. Es wird seinerseits über das angeschlossene USB-Kabel mit 5V versorgt, oder wahlweise über ein externes Netzteil oder eine entsprechenden Batterie mit Gleichspannung zwischen 7.5V und 12V.

Fehlt bloß noch ein eigenes Programm. Hier ein harmloses Beispiel:

// NetduinoPlus Timer Recipe (by Peter Gold)

// Device: NetduinoPlus
// Task: Invoke timer indicated by blue LCD on board.

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;

namespace NetduinoPlusTimer
{
    public class Program
    {
        static OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); // blue LED on board

        public static void Main()
        {
            // specify time interval in milliseconds
            int timeInterval = 11000; // 11000ms = 11s
            // invoke timer
            System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(onTimer), null, 0, timeInterval);
            // let microcontroller sleep
            Thread.Sleep(Timeout.Infinite);
        }

        private static void onTimer(object state)
        {
            // notify each tick of timer by blinking blue LED
            led.Write(true); // LED on
            Thread.Sleep(300); // 300ms delay
            led.Write(false); // LED off
            // or toggle LED by: led.Write(!led.Read());
        }
    }
}

Das Programm, geeignet für den Netduino und den Netduino Plus, bewirkt lediglich, daß ein blaues Licht blinkt. Trotzdem ist das nicht ganz ohne. Immerhin wird auf Interrupt-Ebene gearbeitet. Der Prozessor ist nicht länger involviert, weshalb er seine Zeit verschläft, energiesparend.

Lektüre des Buchs der Natur

Die Metaphorik des ‘Buchs der Natur’, das gemäß Galilei in mathematischen Lettern verfaßt sei, die man zu lesen lernen müsse, legt nahe, exakte Naturwissenschaft(en) so aufzufassen, als sei es nicht ihre Aufgabe, etwas zu entdecken oder aufzudecken oder zu erklären, sondern etwas zu entziffern. Nicht weil es unleserlich wäre, sondern weil es verschlüsselt zu sein scheint. In Zeichen, die als Ziffern in zweifachem Sinne gelten, zum einen als numerisch, zum andern als codiert. Phänomene der Natur werden wie Text(e) gelesen, lesbar allerdings nicht ohne Kenntnis des Schlüssels. Natur selbst wird zur Chiffre, zum chiffrierten Text, den es zu dechiffrieren gilt, bis das gesamte Buch der Natur im Klartext vorliegt.

Die Natur wird selbst zu so etwas wie Naturgeschichte. Sie teilt sich mit. Die Sprache und die Sprachlichkeit bedingen die Sache und die Sachlichkeit. Was uns die Natur erzählt, wird von uns nacherzählt, und wenn die Geschichte insgesamt Sinn macht, nicht länger sinnlos oder unsinnig erscheint, scheint es, als wäre die Sprache der Natur verständlich geworden. Auf diese Weise klingt noch in der sich längst abspaltenden Physik ein Abgesang nach, der an scholastische Religiosität erinnert, die sich ganz der Deutung von Schriften und Auslegung von Büchern widmete. Als Buch verkündet Natur von selbst die Lehre, auf die es ankommt, so daß bei der Lektüre die Lektionen zu lernen sind, falls man den Text richtig zu interpretieren weiß. Letzteres bleibt Eingeweihten vorbehalten, die den Code kennen, wie vormals nicht (ein-) geweiht war, wem keine Offenbarung zuteil wurde.

Im Umgang mit Zeichensystemen geübt, mit Zeichenverweisung vertraut, nahm die Physik zusehends Abschied vom Bild der Natur, wie es sich in der Metaphysik der Scholastik darstellte, doch in der Metapher vom Buch der Natur steckte immer noch ein Andenken an das Denken, das man hinter sich ließ.

In einer Abhandlung über Analogie(n) in der Natur schreibt Maxwell: »Vielleicht ist das ‘Buch’ der Natur, wie man es genannt hat, aus geordneten Seiten aufgebaut; wenn dem so ist, dann erklären ohne Frage die einleitenden Teile das, was folgt, und die Methoden, die in den ersten Kapiteln dargestellt werden, können übernommen und als Erklärungen der nachfolgenden, fortgeschrittenen Teile verwendet werden; wenn es aber kein ‘Buch’ ist, sondern eine Zeitschrift, dann ist nichts dümmer als anzunehmen, ein Teil könne Licht auf den anderen werfen.« [Maxwell, “Are there Real Analogies in Nature?”, 1856]

(Copyright by Peter Gold)