SPQR-Team1-2020/utility/Teensy-32u4/32u4_script/sketch_jan26b.ino

45 lines
1.2 KiB
C++

#define BTN0 A3
#define BTN1 A4
#define BTN2 A5
#define LED_Y 11
#define LED_R 17
void setup (){
Serial1.begin(19200);
pinMode(LED_Y,OUTPUT);
pinMode(LED_R,OUTPUT);
pinMode(BTN0,INPUT);
pinMode(BTN1,INPUT);
pinMode(BTN2,INPUT);
}
byte b, oldB = 0;
void loop () {
//We have three config. buttons, making a packet out of a single byte with a start header, so teensy can use it as it wants
//The header is signed by the two most important bits put high, so 128+64 in OR with other bits shifted by the needed ammount
//This approach only admits 5 configuration buttons, it should be enough
b = 0b11000000;
b |= digitalRead(BTN0);
b |= digitalRead(BTN1) << 1;
b |= digitalRead(BTN2) << 2;
if(oldB != b) Serial1.write(b);
oldB = b;
while(Serial1.available() > 0){
int a = Serial1.read();
if((a & 0b11000000) == 0b11000000){
digitalWrite(LED_Y, !(a & 0b00000001));
digitalWrite(LED_R, !(a & 0b00000010));
}
}
int angle = (int) (atan2(3,2) * 180 / 3.14);
angle = angle / 2 + angle % 2;
int dist = 256;
Serial1.write((char) 105); //Start packet
Serial1.write((char) angle); //Start packet
Serial1.write((char) dist); //Start packet
Serial1.write((char) 115); //Start packet
}