From 57806a1e766390a4481c7db4cedbbdc87350ea6d Mon Sep 17 00:00:00 2001 From: Orell-Pieter Schwarzbach <2122623@stud.hs-mannheim.de> Date: Thu, 4 May 2023 12:29:18 +0200 Subject: [PATCH] Add 'Arduino_i2c_Code' --- Arduino_i2c_Code | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Arduino_i2c_Code diff --git a/Arduino_i2c_Code b/Arduino_i2c_Code new file mode 100644 index 0000000..9bb1063 --- /dev/null +++ b/Arduino_i2c_Code @@ -0,0 +1,34 @@ +#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 +}