···
www.simsso.de

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




Loading... © Timo Denk 2017
Feedback

Feedback