VolvoRTI/Arduino/RTI_Control/RTI_Control.ino
2021-05-22 16:20:53 +02:00

56 lines
1.4 KiB
C++

#include <SoftwareSerial.h>
const byte pinLinTx = 10;
const byte pinLinRx = 8;
const byte pinLinFalut = 9;
const byte pinLinCS = 11;
const byte pinSDA = 0;
const byte pinSCL = 2;
const byte pinRTISerial = 5;
const byte pinDefaultRemoteControl = 1;
const byte pinMuxVgaSel = 3;
const byte pinMuxLogicSel = 4;
const byte pinLedDbg = 7;
const byte pinLedCom = 6;
enum display_mode_name {RTI_RGB, RTI_PAL, RTI_NTSC, RTI_OFF};
const char display_modes[] = {0x40, 0x45, 0x4C, 0x46};
const char brightness_levels[] = {0x20, 0x61, 0x62, 0x23, 0x64, 0x25, 0x26, 0x67, 0x68, 0x29, 0x2A, 0x2C, 0x6B, 0x6D, 0x6E, 0x2F};
int current_display_mode = RTI_RGB;
bool send_brightness = true;
char current_brightness_level = 15;
//delay between bytes, ms
const int rti_delay = 100;
// set up a new serial object
SoftwareSerial rtiSerial(pinLedCom, pinRTISerial);
void setup() {
pinMode(pinMuxLogicSel, OUTPUT);
pinMode(pinMuxVgaSel, OUTPUT);
digitalWrite(pinMuxLogicSel, HIGH);
digitalWrite(pinMuxVgaSel, HIGH);
pinMode(pinLedDbg, OUTPUT);
digitalWrite(pinLedDbg, HIGH); // turn the LED ON
rtiSerial.begin(2400);
delay(10);
}
void loop() {
rtiWrite(display_modes[current_display_mode]);
if (send_brightness)
rtiWrite(brightness_levels[current_brightness_level]);
else
rtiWrite(0x40);
rtiWrite(0x83);
}
void rtiWrite(char byte) {
rtiSerial.print(byte);
delay(rti_delay);
}