← Back to ratslair.com
aboutsummaryrefslogtreecommitdiff
path: root/arduino/arduino.ino
diff options
context:
space:
mode:
authorEdvin <[email protected]>2025-05-09 08:50:14 +0200
committerEdvin <[email protected]>2025-05-09 08:50:14 +0200
commit07515e3ac7da2e023ad1cabe7356011ee2a549a4 (patch)
tree42fba87d0f2fdc3c1e8b94fa3bbb75765b21fea0 /arduino/arduino.ino
parentcee301b6ef01819f896989452976ae609d679208 (diff)
Fully implemented goal communication.
Diffstat (limited to 'arduino/arduino.ino')
-rw-r--r--arduino/arduino.ino88
1 files changed, 63 insertions, 25 deletions
diff --git a/arduino/arduino.ino b/arduino/arduino.ino
index 5667315..aba1ba6 100644
--- a/arduino/arduino.ino
+++ b/arduino/arduino.ino
@@ -12,6 +12,7 @@ const int D4 = 5;
char c;
String received = "";
+
// LCD
LiquidCrystal_I2C lcd(0x27, 20, 4);
int emptySpace = 0;
@@ -39,27 +40,20 @@ void setup() {
digitalWrite(D4, LOW);
Serial.begin(115200);
-
Wire.begin();
+
+ sensor.init();
+ sensor.setMeasurementTimingBudget(10000);
+
lcd.init();
lcd.backlight();
lcd.setCursor(2, 0);
lcd.print("AGV booting!");
received = "Dot dot dot dot";
-
-
- sensor.setTimeout(500);
- if (!sensor.init())
- {
- Serial.println("Failed to detect and initialize sensor!");
- while (1) {}
- }
- sensor.setMeasurementTimingBudget(10000);
}
void loop() {
- dist = sensor.readRangeSingleMillimeters();
-
+
if (Serial.available() > 0) {
received = Serial.readStringUntil('\n');
//Serial.println(received);
@@ -117,16 +111,16 @@ void loop() {
}
if (received.indexOf("Forward") >= 0) { // Forward
- digitalWrite(D1, HIGH);
+ analogWrite(D1, 150);
digitalWrite(D2, LOW);
- digitalWrite(D3, HIGH);
+ analogWrite(D3, 150);
digitalWrite(D4, LOW);
}
else if (received.indexOf("Backward") >= 0) { // Backward
digitalWrite(D1, LOW);
- digitalWrite(D2, HIGH);
+ analogWrite(D2, 150);
digitalWrite(D3, LOW);
- digitalWrite(D4, HIGH);
+ analogWrite(D4, 150);
}
else if (received.indexOf("Right") >= 0) { // Right
digitalWrite(D1, HIGH);
@@ -141,24 +135,36 @@ void loop() {
digitalWrite(D4, LOW);
}
else if (received.indexOf("Goal") >= 0) { // Pair with goal
- if (((digitalRead(LIR)) && digitalRead(RIR)) || (dist < 100)) {
- Serial.println("Stopped");
+ dist = sensor.readRangeSingleMillimeters();
+ if (dist < 50) {
+ Serial.println("Something in front!");
+ received = "Check1";
+ analogWrite(D1, 255);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ analogWrite(D4, 255);
+ delay(100);
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
digitalWrite(D4, LOW);
+ delay(500);
}
else if (digitalRead(RIR)) {
- analogWrite(D1, 100);
+ delay(50);
+ analogWrite(D1, 255);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
- analogWrite(D4, 100);
+ analogWrite(D4, 255);
+ delay(100);
}
else if (digitalRead(LIR)) {
+ delay(50);
digitalWrite(D1, LOW);
- analogWrite(D2, 100);
- analogWrite(D3, 100);
+ analogWrite(D2, 255);
+ analogWrite(D3, 255);
digitalWrite(D4, LOW);
+ delay(100);
}
else {
analogWrite(D1, 50);
@@ -166,14 +172,46 @@ void loop() {
analogWrite(D3, 50);
digitalWrite(D4, LOW);
}
- }
+ }
+ else if (received.indexOf("Check1") >= 0) {
+ received = "Check2";
+ digitalWrite(D1, LOW);
+ analogWrite(D2, 100);
+ analogWrite(D3, 100);
+ digitalWrite(D4, LOW);
+ delay(100 + i);
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, LOW);
+ delay(500);
+
+ i += 10;
+ }
+ else if (received.indexOf("Check2") >= 0) {
+ received = "Check1";
+ analogWrite(D1, 100);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ analogWrite(D4, 100);
+ delay(100 + i);
+ digitalWrite(D1, LOW);
+ digitalWrite(D2, LOW);
+ digitalWrite(D3, LOW);
+ digitalWrite(D4, LOW);
+ delay(500);
+
+ i += 10;
+ }
else {
+ i = 0;
digitalWrite(D1, LOW);
digitalWrite(D2, LOW);
digitalWrite(D3, LOW);
digitalWrite(D4, LOW);
}
-
-
+ if (i > 100) {
+ received = "Stop";
+ }
}