Serielle Datenübertragung zwischen zwei Arduinos
Atmega328 Datenblatt
Sender
void setup() { pinMode(2, OUTPUT); // data pin pinMode(3, OUTPUT); // clock pin } void loop() { delay(10); shiftOut(2, 3, MSBFIRST, (byte)70); // B01000110 }
Empfänger
volatile byte data; volatile byte bitsRemaining = 7; void setup() { pinMode(2, INPUT); // clock pin pinMode(8, INPUT); // data pin attachInterrupt(0, bitAvailable, RISING); Serial.begin(9600); } void loop() { if (bitsRemaining >= 8) { Serial.write(data); bitsRemaining = 7; } } void bitAvailable() { data = (data << 1) | (PINB & 1); bitsRemaining--; }
Weiterführend: Timer Interrupts