Add arduino part

This commit is contained in:
Johannes Frohnmeyer 2023-02-01 13:18:03 +01:00
parent 18b2dea577
commit d278d5decc
Signed by: Johannes
GPG Key ID: E76429612C2929F4
1 changed files with 69 additions and 0 deletions

69
gradual_input.ino Normal file
View File

@ -0,0 +1,69 @@
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
#include <SoftwareSerial.h>
SoftwareSerial btSerial(10, 11);
String btData;
int taste;
void setup() {
lcd.init(); // Display starten
lcd.backlight(); // Hintergrundlicht am Display
btSerial.begin(9600);
Serial.begin(115200);
pinMode(3, OUTPUT); // PWM_A-Signal als Ausgang
pinMode(2, OUTPUT); // AIN_1 digitaler Ausgang
pinMode(4, OUTPUT); // AIN_2 digitaler Ausgang
pinMode(5, OUTPUT); // BIN_1 digitaler Ausgang
pinMode(7, OUTPUT); // BIN_2 digitaler Ausgang
pinMode(6, OUTPUT); // PWM_B-Signal als Ausgang
lcd.setCursor(0, 0);
lcd.print("Taste druecken");
delay(3000);
}
void loop() {
lcd.clear();
lcd.setCursor(0, 0); lcd.print("Hallo");
if (btSerial.available()) {
byte c = byte(btSerial.read()); // Cast last char to byte
while (btSerial.available() > 0) c = byte(btSerial.read()); // This could (should) be done above, but idk
char left = char(c & 0xF0); // interpret first four bits as signed char
char right = char((c & 0x0F) << 4); // interpret last four bits as signed char
writeMotor(left, right);
}
delay(50);
}
void writeMotor(char left, char right) {
byte prec = 1;
if (right == 0) {
digitalWrite(2, LOW);
digitalWrite(4, LOW);
} else if (right > 0) {
digitalWrite(2, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, byte(right) / prec);
} else {
digitalWrite(2, HIGH);
digitalWrite(4, LOW);
digitalWrite(3, byte(-right) / prec);
}
if (left == 0) {
digitalWrite(5, LOW);
digitalWrite(7, LOW);
} else if (left > 0) {
digitalWrite(5, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, byte(left) / prec);
} else {
digitalWrite(5, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, byte(-left) / prec);
}
}