Ein Blick auf die Anschlussbelegungen der 30 Pins des Boards, die dem ATtinyCore zugrunde liegen führt unter Berücksichtigung der dortigen Festlegungen zu einer möglichen Anschlussbelegung für das PC-Interface.
- Digitale Eingänge 0 bis 7 - GELB
- Digitale Ausgänge 0 bis 7 - ROT
- Analoge Eingänge A und B - GRAU
- Serielle Leitungen RX/TX - GRAU
In Anlehnung an die Arduino-Variante des Sketches reagiert die eingebaute LED auf Digitalausgang D3 und der PWM-Ausgang auf Digitalausgang D0. Die zwei USB-Anschlüsse werden nicht verwendet und die beiden I2C-Leitungen versorgen einen DAC zur Ausgabe analoger Spannungen. Die RX/TX-Pins 6/7 gelten für den Serial.begin-Aufruf ohne Zusatzparameter in Core für den Tiny88.
Mit diesen Festlegungen gestaltet sich der Sketch für das ATtin88-Board wie folgt und kann wie der Blink-Sketch von weiter oben über USB zu Board hochgeladen werden.
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
#define AIN1 60
#define AIN2 58
#define DIN 211
#define DOUT 81
#define PWM 64
#define AOUT 64
#define PWMPIN 10
// T88 Serial RX=7 TX=6 LED=0 SCL=24 SDA=23
//DIGITAL OUT PINS 0 - 7 CLAB
//byte Douts[] = {10,11,12, 0, 16,17,18,19};//Arduino Uno
byte Douts[] = {10,11,12, 0, 13,14, 8, 9};//t88
//DIGITAL IN PINS 0 - 7 CLAB
//byte Dins[] = { 2, 3, 4, 5, 6, 7, 8, 9}; //Arduino Uno
byte Dins[] = {18,17,16,15, 25, 3, 4, 5}; //t88
//ANALOG IN PINS A - B CLAB
byte Ains[] = {1,2};
//BitValues
byte Bits[] = {1,2,4,8,16,32,64,128};
void setup()
{ Serial.begin(9600); //Special CLAB
for(int i= 0;i<8;i++)pinMode(Douts[i],OUTPUT);
for(int i= 0;i<2;i++)pinMode(Ains [i],INPUT);
for(int i= 0;i<8;i++)
{pinMode(Dins [i],INPUT_PULLUP);// OPEN IS HIGH
//digitalWrite(Dins[i],HIGH); //WITH PULLUP Ardiuno UNO
}
dac.begin(96);
for(int i=0;i<4;i++) //Kennung Version 4
{digitalWrite(0,1);delay(100);digitalWrite(0,0);delay(400);
}
Serial.println("\n\n\nCLAB V4 t88");
}
void loop()
{ int i, val, inbyte; byte b;
val = Serial.available(); //Was da?
if (val>0)
{inbyte=Serial.read(); //abholen
delay(5);
switch(inbyte)
{ case 13 : //CLAB ID nur ab Compact 1.75!
Serial.write(3);delay(2);break; //ID
case AOUT: b=Serial.read(); //Ausgabebyte holen
dac.setVoltage(b<<4, false);
analogWrite(PWMPIN,b);
break;
case DIN : for(i=0,b=0;i<8;i++) //PINS to BYTE
b+= (digitalRead(Dins[i])==HIGH?Bits[i]:0);
Serial.write(b);break;
case AIN1:
case 48: Serial.write(analogRead(Ains[0])>>2);break;
case AIN2:
case 49: 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(10);
}
Der Digital-Analog-Converter MCP4725 liefert analoge Spannungen an seinem Ausgang und dienen im Buch zur Kennlinienaufnahme. Ohne DAC können die unterstrichenen Zeilen im Listing gelöscht werden. Der Sketch liefert dann nur quasi-analoge Ausgaben an Pin 10 (PWM).
Wenn die Leitungen RX/TX von Pin 6 und 7 der Platine mit dem eingesteckten USB-Adapter verbunden sind, kann sich Compact Red Needle seriell verbinden und reagieren.
Die Ausführen in Messen, Steuern und Regeln mit Arduino und Compact funktionieren nun ebenfalls mit dieser preiswerten Alternative. Hier ein Beispiel aus Kapitel 4.
|