BT2k
 |
Arduino als CompuLab
Compact erkennt Arduino
 |
Mit einem kleinen Programm, was in Arduinokreisen Sketch genannt wird, gaukelt der Mikrocontroller Arduino einige Funktionen des CompuLab vor, so, dass Compact-Definition ihn als CompuLab erkennt und behandelt. Man hat somit ein USB-CompuLab an einer seriellen Schnittstelle ...
Die zwei Onboard-Spannungen des Arduino 5 V und 3,3 V werden angezeigt.
|
|
Die Möglichkeiten
Es werden zwei Analogeingänge (8 Bit-Auflösung) und acht Digitalausgänge unterstützt in diesem Sketch. Digitaleingaben sind nicht vorgesehen. Analogausgaben kennt CompuLab nicht. Mit diesen wenigen Möglichkeiten kann man in Compact aber:
- Zwei Analogwerte (A-Eingang und B-Eingang) mit Analogmetern anzeigen.
- Zwei Analogwerte in einem Zeitschreiber darstellen und exportieren.
- Zwei Analogeingänge in einem XY-Schreiber darstellen und exportieren.
- Acht Digitalports Schalten.
UND
- Programme für den compacteigenen Interpreter verfassen (Ein Lauflicht liegt bei)
|
Der Sketch
#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
//DIGITAL OUT 0 - 7
byte Douts[] = {6,7,8,9,10,11,12,13}; //DIGITALPINS
byte Bits[] = {1,2,4,8,16,32,64,128};//BitValue
byte Ains[] = {0,1}; //ANALOGPINS
void setup()
{ Serial.begin(9600);
for(int i= 0;i<8;i++)pinMode(Douts[i],OUTPUT);
for(int i= 0;i<2;i++)pinMode(Ains[i], INPUT);
}
void loop()
{ int i,val,inbyte ;byte b;
val = Serial.available(); //Was da?
if (val>0)
{inbyte=Serial.read(); //abholen
delay(1);
switch(inbyte)
{ case 13 : Serial.write(2);delay(2);break; //ID
case DIN : Serial.write(255);break; //Für Compact
case AIN1: Serial.write(analogRead(Ains[0])>>2);break;
case AIN2: Serial.write(analogRead(Ains[1])>>2);break;
case DOUT: b=Serial.read(); //Ausgabebyte holen
for(i=0;i<8;i++)digitalWrite(Douts[i],b&Bits[i]?HIGH:LOW);
break;
default: break;
}
}
delay(5);
}
|
|
Die Benutzung (how to)
- CompactDefinition 1.75 herunterladen und in ein Verzeichnis entpacken.
- Den Sketch in den Arduino übertragen
- Die Ausgänge 6,7,8,9,10,11,12,13 mit Leuchtdioden versehen.
- Eine Verbindung AnalogIn 0 zu 5 Volt und AnalogIn 1 zu 3,3 Volt als Beispiel.
- CompactDefinition starten. (Startet erst mit langsam wechselnden Spannungen)
- Hardware Suchen drücken. (evtl. mit der Strg-Taste)
Bei gedrückter Strg-Taste sollte nebenstehende Meldung sichtbar werden. Wenn alles richtig funktioniert, kann man nun die Leuchtdioden schalten, die Analogspannungen registrieren oder das Lauflicht laden (Rechte Maustaste im Programmfenster). Eine ausführliche Beschreibung zu CompactDefinition findet man hier.
|
Erweiterung
Betrachtet man die Anschlussmöglichkeiten des Arduino, so kommt man auf die Zahl 20. Zwei der Digitalleitungen werden für die serielle Kommunikation benutzt und sollten darum unbeschaltet bleiben. Es bleiben 18 I/O-Leitungen.
Das CompuLab hat 2 Analogeingänge, 8 Digitaleingänge und 8 Digitalausgänge. In der Summe 18 I/O-Leitungen. Das kann kein Zufall sein.
Mit einem weiteren Sketch könnte die Emulation perfektioniert werden. Die Dummyfunktion DIN aus dem ersten Sketch wird zum Leben erweckt (mit DIN prüft Compact, ob die Hardware noch lebt. Darum zunächst die Rückgabe von konstant 255), Die Pins werden etwas umgeordnet und 4 Analogeingänge werden als Digital-Anschlüsse benutzt, wie schon bei der Rheinturmuhr. Also an die Arbeit ...
|
Weitere Software

|