#include const int adcPin = A0; // ADC-Pin const int toggleDelay = 200; // Verzögerung zwischen dem Umschalten der Bits, in Mikrosekunden const int bufferSize = 8 * sizeof(uint32_t); void setup() { Wire.begin(); // Starten der I2C-Kommunikation analogReadResolution(12); } void loop() { uint32_t buffer[8] = {0}; // Initialisierung des Puffer-Arrays mit Nullen uint8_t bitCount = 0; // Anzahl der erzeugten Bits for (int i = 0; i < 8; i++) { uint32_t randomValue = 0; // Initialisierung der zufälligen Zahl while (bitCount < 32) { uint16_t adcValue = analogRead(adcPin); // Lesen des ADC-Werts uint32_t newBit = adcValue & 0x01; // Extrahieren des LSB aus dem ADC-Wert randomValue = (randomValue << 1) | newBit; // Hinzufügen des neuen Bits an das LSB bitCount++; // Inkrementierung der Anzahl der erzeugten Bits delayMicroseconds(toggleDelay); // Verzögerung } buffer[i] = randomValue; // Speichern des zufälligen Werts im Puffer-Array bitCount = 0; // Zurücksetzen der Anzahl der erzeugten Bits } Wire.beginTransmission(8); // Beginn der I2C-Übertragung an Adresse 8 Wire.write((uint8_t*)buffer, bufferSize); // Senden des Puffer-Arrays Wire.endTransmission(); // Ende der I2C-Übertragung }