Advertisement
DrAungWinHtut

bit_bending_serial.c

Jun 23rd, 2025
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.76 KB | None | 0 0
  1. #define TX_PIN 2
  2. #define BAUD_RATE 9600
  3. #define BIT_DURATION_MICROS (1000000 / BAUD_RATE)
  4. //T = 1/f = 1/baudrate seconds = 1000000 / baudrate microseconds
  5. void setup() {
  6.   pinMode(TX_PIN, OUTPUT);
  7.   digitalWrite(TX_PIN, HIGH);  // Idle state
  8. }
  9.  
  10. void loop() {
  11.   sendByte('H');
  12.   sendByte('e');
  13.   sendByte('l');
  14.   sendByte('l');
  15.   sendByte('o');
  16.   sendByte('\n');
  17.   delay(1000);
  18. }
  19.  
  20. void sendByte(byte b) {
  21.   // Start bit (LOW)
  22.   digitalWrite(TX_PIN, LOW);
  23.   delayMicroseconds(BIT_DURATION_MICROS);
  24.  
  25.   // Data bits (LSB first)
  26.   for (int i = 0; i < 8; i++) {
  27.     digitalWrite(TX_PIN, (b >> i) & 1);
  28.     delayMicroseconds(BIT_DURATION_MICROS);
  29.   }
  30.  
  31.   // Stop bit (HIGH)
  32.   digitalWrite(TX_PIN, HIGH);
  33.   delayMicroseconds(BIT_DURATION_MICROS);
  34. }
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement