No title

 #include <Servo.h>

#include <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_ST7735.h>


// TFT Pins

#define TFT_CS     6

#define TFT_RST    8

#define TFT_DC     7


Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);


// Ultrasonic

#define TRIG 9

#define ECHO 10


// Output

#define BUZZER 4

#define LED 5


Servo myServo;


long duration;

int distance;

int angle;


void setup() {

  Serial.begin(9600);


  pinMode(TRIG, OUTPUT);

  pinMode(ECHO, INPUT);

  pinMode(BUZZER, OUTPUT);

  pinMode(LED, OUTPUT);


  myServo.attach(3);


  tft.initR(INITR_BLACKTAB);

  tft.fillScreen(ST77XX_BLACK);

}


int getDistance() {

  digitalWrite(TRIG, LOW);

  delayMicroseconds(2);

  

  digitalWrite(TRIG, HIGH);

  delayMicroseconds(10);

  digitalWrite(TRIG, LOW);


  duration = pulseIn(ECHO, HIGH);

  distance = duration * 0.034 / 2;


  return distance;

}


void drawRadarLine(int angle, int distance) {

  int x = 64 + distance * cos(angle * 3.14 / 180);

  int y = 128 - distance * sin(angle * 3.14 / 180);


  tft.drawLine(64, 128, x, y, ST77XX_GREEN);

}


void loop() {


  // LEFT to RIGHT

  for(angle = 0; angle <= 180; angle++) {

    myServo.write(angle);

    delay(20);


    distance = getDistance();


    tft.fillScreen(ST77XX_BLACK);

    drawRadarLine(angle, distance);


    // Object detection

    if(distance < 30) {

      digitalWrite(BUZZER, HIGH);

      digitalWrite(LED, HIGH);


      tft.setTextColor(ST77XX_RED);

      tft.setCursor(10, 10);

      tft.print("Object Detected");

    } 

    else {

      digitalWrite(BUZZER, LOW);

      digitalWrite(LED, LOW);


      tft.setTextColor(ST77XX_GREEN);

      tft.setCursor(10, 10);

      tft.print("Scanning...");

    }


    // Info display

    tft.setCursor(10, 120);

    tft.print("Angle: ");

    tft.print(angle);


    tft.setCursor(10, 135);

    tft.print("Dist: ");

    tft.print(distance);

    tft.print("cm");

  }


  // RIGHT to LEFT

  for(angle = 180; angle >= 0; angle--) {

    myServo.write(angle);

    delay(20);


    distance = getDistance();


    tft.fillScreen(ST77XX_BLACK);

    drawRadarLine(angle, distance);


    if(distance < 30) {

      digitalWrite(BUZZER, HIGH);

      digitalWrite(LED, HIGH);

    } else {

      digitalWrite(BUZZER, LOW);

      digitalWrite(LED, LOW);

    }

  }

}

Post a Comment

Previous Post Next Post

Contact Form