Files
arduino-timex-datalink-note…/led_blaster.cpp
T

52 lines
960 B
C++

#define LED_PIN 13
#define LED_ON_MS_NORMAL 15
#define LED_OFF_MS_NORMAL 450
#define LED_ON_MS_FAST 6
#define LED_OFF_MS_FAST 408
#include <Arduino.h>
#include "led_blaster.h"
namespace LedBlaster {
uint16_t led_on_ms;
uint16_t led_off_ms;
void setup() {
pinMode(LED_PIN, OUTPUT);
enable_fast_mode(false);
}
void enable_fast_mode(bool fast_mode_enabled) {
if (fast_mode_enabled) {
led_on_ms = LED_ON_MS_FAST;
led_off_ms = LED_OFF_MS_FAST;
} else {
led_on_ms = LED_ON_MS_NORMAL;
led_off_ms = LED_OFF_MS_NORMAL;
}
}
void emit_0() {
digitalWrite(LED_PIN, HIGH);
delayMicroseconds(led_on_ms);
digitalWrite(LED_PIN, LOW);
delayMicroseconds(led_off_ms);
}
void emit_1() {
delayMicroseconds(led_on_ms + led_off_ms);
}
void emit_byte(uint8_t serial_byte) {
emit_0();
for (int i = 0; i < 8; i++) {
bitRead(serial_byte, i) ? emit_1() : emit_0();
}
}
}