← Back to ratslair.com
aboutsummaryrefslogtreecommitdiff
path: root/arduino/arduino.ino
diff options
context:
space:
mode:
authorEdvin <[email protected]>2025-04-30 08:27:49 +0200
committerEdvin <[email protected]>2025-04-30 08:27:49 +0200
commite34ba56ce272a48896f57db6668ec72cc5ae0a86 (patch)
tree78b7fcee18839b48e16f8475901d03d57c6077bd /arduino/arduino.ino
parent864bb8edacb3a34e98ca804bc439b7188c397c5b (diff)
Implemented LCD with Arduino
Diffstat (limited to 'arduino/arduino.ino')
-rw-r--r--arduino/arduino.ino128
1 files changed, 128 insertions, 0 deletions
diff --git a/arduino/arduino.ino b/arduino/arduino.ino
new file mode 100644
index 0000000..b02fd48
--- /dev/null
+++ b/arduino/arduino.ino
@@ -0,0 +1,128 @@
+#include <LiquidCrystal_I2C.h>
+
+// To H-bridges
+const int D1 = 10;
+const int D2 = 11;
+const int D3 = 6;
+const int D4 = 5;
+
+// UART communication
+char c;
+String received = "";
+
+// LCD
+LiquidCrystal_I2C lcd(0x27, 20, 4);
+
+int emptySpace = 0;
+
+void setup() {
+ pinMode(D1, OUTPUT);
+ pinMode(D2, OUTPUT);
+ pinMode(D3, OUTPUT);
+ pinMode(D4, OUTPUT);
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, LOW);
+
+ pinMode(LED_BUILTIN, OUTPUT);
+ digitalWrite(LED_BUILTIN, LOW);
+
+ Serial.begin(9600);
+
+ lcd.init();
+ lcd.backlight();
+ lcd.setCursor(2, 0);
+ lcd.print("AGV booting!");
+ received = "Dot dot dot dot";
+}
+
+void loop() {
+ if (Serial.available() > 0) {
+ received = Serial.readStringUntil('\n');
+ //Serial.println(received);
+ }
+
+ if (received.indexOf("Bluetooth up") >= 0) {
+ lcd.clear();
+ lcd.setCursor(2, 0);
+ lcd.print("Bluetooth up");
+ lcd.setCursor(6, 1);
+ lcd.print("....");
+ emptySpace = 0;
+ received = "Dot dot dot dot"; // Reset received message so that LCD does not clear and rewrite every tick
+ }
+
+ if (received.indexOf("Dot dot dot dot") >= 0) {
+ String dot;
+ for (int i = 0;i < 4;i++) {
+ if (i == emptySpace) {
+ dot = " ";
+ } else {
+ dot = ".";
+ }
+ lcd.setCursor(6 + i, 1);
+ lcd.print(dot);
+ }
+ emptySpace++;
+ if (emptySpace > 3) {
+ emptySpace = 0;
+ }
+ delay(500);
+ }
+
+ if (received.indexOf("Bluetooth connected") >= 0) {
+ lcd.clear();
+ lcd.setCursor(2, 0);
+ lcd.print("Connected to");
+ lcd.setCursor(2, 1);
+ lcd.print(received.substring(20, 32)); // Message as 'Bluetooth connected XXXXXXXXXXXX' with MAC-address.
+ received = "";
+ delay(2000);
+ lcd.clear();
+ }
+
+ if (received.indexOf("Closing down") >= 0) {
+ lcd.clear();
+ lcd.setCursor(2, 0);
+ lcd.print("AGV booting!");
+ received = "Dot dot dot dot";
+
+ Serial.end();
+
+ delay(5000);
+
+ Serial.begin(9600);
+ }
+
+ if (received.indexOf("Forward") >= 0) { // Forward
+ digitalWrite(D1, HIGH);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, HIGH);
+ digitalWrite(D4, LOW);
+ }
+ else if (received.indexOf("Backward") >= 0) { // Backward
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, HIGH);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, HIGH);
+ }
+ else if (received.indexOf("Right") >= 0) { // Right
+ digitalWrite(D1, HIGH);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, HIGH);
+ }
+ else if (received.indexOf("Left") >= 0) { // Left
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, HIGH);
+ digitalWrite(D3, HIGH);
+ digitalWrite(D4, LOW);
+ }
+ else {
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, LOW);
+ }
+}