From 6afe50189db6faa147ab49373c8fea074a31e4df Mon Sep 17 00:00:00 2001 From: Orell-Pieter Schwarzbach <2122623@stud.hs-mannheim.de> Date: Tue, 16 May 2023 11:59:56 +0200 Subject: [PATCH] Upload files to '' Code for arduino. Final with i2c connection and 400kHz rate --- TRNG_i2c.ino | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 TRNG_i2c.ino diff --git a/TRNG_i2c.ino b/TRNG_i2c.ino new file mode 100644 index 0000000..6cd8137 --- /dev/null +++ b/TRNG_i2c.ino @@ -0,0 +1,36 @@ +#include + +const int adcPin = A0; // ADC-Pin +const int i2cAddress = 8; // I2C-Adresse + +void setup() { + Wire.begin(i2cAddress); // Starten der I2C-Kommunikation mit der angegebenen Adresse + Wire.setClock(400000); + analogReadResolution(12); // Setze die Auflösung des ADCs auf 10 Bit +} + +void loop() { + byte data = 0; // Variable zum Speichern des zu sendenden Bytes + int bitCount = 0; // Zähler für die Anzahl der erzeugten Bits + + while (bitCount < 8) { + // Lese ADC-Wert von Pin A0 + int adcValue = analogRead(adcPin); + + // Extrahiere das LSB + byte newBit = adcValue & 0x01; + + // Shifte das LSB in das Byte + data = (data << 1) | newBit; + + // Inkrementiere den Bit-Zähler + bitCount++; + } + + // Sende das Byte über I2C + Wire.beginTransmission(i2cAddress); + Wire.write(data); + Wire.endTransmission(); + + //delay(10); // Optionale Verzögerung für Stabilität +}