ATTINY 2313 - Arduino Sketch - Verständissfrage

Also nach ein paar Tagen tüfteln funktioniert also soweit ich es mal bringen wollte....

Was funktioniert:
Serial.read (für xBee Kommunikation)
DigitalWrite (für Relais zum Aus- und Einschalten)

Wie funktionierts:
Google Code Archive - Long-term storage for Google Code Project Hosting. - Runterladen und unter hardware ablegen - ATiny2313 auswählen (Unterschied zw. 8 und 1 MHz - keine Ahnung - so far). Kompilieren und hoffen das der Sketch nicht zu gross wird.
Upload: Den mach ich derzeit über das mitgelieferte Windows-Programm von myAVR - Ich hab den mySmartUSB MKII nicht dazu überreden können, das er sich mit Arduino verträgt - man findet auch im Internet relativ karge Informationen (ausser wie man einen Bootloader hochlädt...)

Beispiel:

Der Sketch hat 2014 Bytes - also knapp am Limit... bzw. wenig Platz für Tests (meine Empfehlung: Testen am Arduino, wenns geht soweit wie möglich runtertrimmen und auf dem ATTiny brennen...)

byte ignore = 0;
int xcommand = 0;

void setup() {
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  if (Serial.available() == 17){
  if (Serial.read() == 0x7E){
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    ignore = Serial.read();
    xcommand = Serial.read();
    relay();         
    ignore = Serial.read();
    }
  }
}

 

void relay(){
  switch(xcommand){
    case 11:
      digitalWrite(3, HIGH);
    break;
      
    case 10:
      digitalWrite(3, LOW);
    break;
    
    case 21:
      digitalWrite(4, HIGH);
    break;
      
    case 20:
      digitalWrite(4, LOW);
    break;
    
    case 31:
      digitalWrite(5, HIGH);
    break;
      
    case 30:
      digitalWrite(5, LOW);
    break;
      
    case 41:
      digitalWrite(6, HIGH);
    break;
      
    case 40:
      digitalWrite(6, LOW);
    break;
      
    case 51:
      digitalWrite(7, HIGH);
    break;
      
    case 50:
      digitalWrite(7, LOW);
    break;
      
    case 61:
      digitalWrite(8, HIGH);
    break;
      
    case 60:
      digitalWrite(8, LOW);
    break;
      
    case 71:
      digitalWrite(9, HIGH);
    break;
      
    case 70:
      digitalWrite(9, LOW);
    break;
    
    case 81:
      digitalWrite(11, HIGH);
    break;
      
    case 80:
      digitalWrite(11, LOW);
    break;
    
    case 99:
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      digitalWrite(11, LOW);
    break;
  }
}

Wieso tut man sich sowas an?
Beim C*nrad gibts eine 8fach Relais-Karte - welche mit einen ATTiny 2313 ausgestattet ist - wenn man also ein bisschen löten kann, dann kann man diese Relaykarte relativ gut von der angedachten seriellen Kommunikation "entfesseln" und mit XBee um ca. 25,- ( x 2 - man braucht ja auch ein Gegenpart) überallhin platzieren...

Wenn man dann noch ein wenig herumtut, kann man das mit einer Ethernet-Karte und einen "Web-Server" auf dem Arduino austatten und hat somit eine relativ günstige Steuerung für 220V Geräte...