GMTROM/Archiv/Versuch.cpp

49 lines
1.6 KiB
C++

#include <wiringPi.h>
#include <wiringPiI2C.h>
const int adcAddr = 0x48; // ADC address
const int serialBaudRate = 115200; // Serial monitor baud rate
const float toggleDelay = 0.2; // Delay between toggling bits, in microseconds
int main(void) {
int fd; // File descriptor for I2C device
uint32_t buffer[8] = {0}; // Initialize buffer array with zeroes
uint8_t bitCount = 0; // Number of generated bits
// Initialize WiringPi and open I2C device
wiringPiSetup();
fd = wiringPiI2CSetup(adcAddr);
// Print buffer values in binary format
for (int i = 0; i < 8; i++) {
uint32_t randomValue = 0; // Initialize random value
while (bitCount < 32) {
uint16_t adcValue = wiringPiI2CReadReg16(fd, 0x00); // Read ADC value
uint32_t newBit = adcValue & 0x01; // Extract LSB from ADC value
randomValue = (randomValue << 1) | newBit; // Add new bit to LSB
bitCount++; // Increment number of generated bits
delayMicroseconds(toggleDelay); // Delay
}
buffer[i] = randomValue; // Save random value in buffer array
bitCount = 0; // Reset number of generated bits
}
// Print buffer values in binary format
for (int i = 0; i < 8; i++) {
Serial.print(formatBinary(buffer[i])); // Print generated 32-bit values in binary format
}
Serial.println(); // New line to separate from other outputs
return 0;
}
String formatBinary(uint32_t number) {
String binaryString = String(number, BIN); // Convert to binary string
while (binaryString.length() < 32) {
binaryString = "0" + binaryString; // Pad with leading zeroes
}
return binaryString;
}