-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Motor pins
int in1 = 2;
int in2 = 3;
int enA = 9;
// Ultrasonic pins
int trigPin = 7;
int echoPin = 8;
// Bluetooth input pin (via Serial)
char bt_input;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enA, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("Hyperloop Ready");
display.display();
delay(1000);
}
void loop() {
if (Serial.available()) {
bt_input = Serial.read();
if (bt_input == 'S') {
startPod();
} else if (bt_input == 'X') {
stopPod();
}
}
long duration, distance;
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
if (distance < 10) {
stopPod();
display.clearDisplay();
display.setCursor(0,0);
display.println("Pod Arrived");
display.display();
delay(2000);
}
}
void startPod() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 150); // Adjust speed as needed
display.clearDisplay();
display.setCursor(0,0);
display.println("Pod Moving...");
display.display();
}
void stopPod() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(enA, 0);
display.clearDisplay();
display.setCursor(0,0);
display.println("Pod Stopped");
display.display();
}