Add 'Arduino_i2c_Code'
parent
066581c8d8
commit
57806a1e76
|
@ -0,0 +1,34 @@
|
|||
#include <Wire.h>
|
||||
|
||||
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
|
||||
}
|
Loading…
Reference in New Issue