Untitled

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

#include <MFRC522.

h>
#include <SPI.h>

#define L1_MOTOR 30
#define L2_MOTOR 31
#define L_ENA 6

#define R1_MOTOR 32
#define R2_MOTOR 33
#define R_ENA 7

#define TRIG_PIN 34
#define ECHO_PIN 35

#define L_IR 36
#define R_IR 37

#define RED_LED 38
#define GREEN_LED 39
#define BLUE_LED 40

#define RST_PIN 5
#define SS_PIN 53
MFRC522 mfrc522 (SS_PIN, RST_PIN);

int distance;
long duration;
String content;
String command;
bool flag = true;

void setup ()
{
Serial.begin (9600);
SPI.begin ();
mfrc522.PCD_Init ();

Serial.println ("STARTING");
delay (500);
Serial.println ("PLEASE WAIT . . .");
delay (2500);

pinMode (L1_MOTOR, OUTPUT);


pinMode (L2_MOTOR, OUTPUT);
pinMode (L_ENA, OUTPUT);

pinMode (R1_MOTOR, OUTPUT);


pinMode (R2_MOTOR, OUTPUT);
pinMode (R_ENA, OUTPUT);

pinMode (L_IR, INPUT);


pinMode (R_IR, INPUT);

pinMode (RED_LED, OUTPUT);


pinMode (GREEN_LED, OUTPUT);
pinMode (BLUE_LED, OUTPUT);
}

//----------------------------------------
//LEDs
void RED ()
{
digitalWrite (RED_LED, HIGH);
digitalWrite (GREEN_LED, LOW);
digitalWrite (BLUE_LED, LOW);
}

void GREEN ()
{
digitalWrite (RED_LED, LOW);
digitalWrite (GREEN_LED, HIGH);
digitalWrite (BLUE_LED, LOW);
}

void BLUE ()
{
digitalWrite (RED_LED, LOW);
digitalWrite (GREEN_LED, LOW);
digitalWrite (BLUE_LED, HIGH);
}

void RGB ()
{
digitalWrite (RED_LED, HIGH);
digitalWrite (GREEN_LED, LOW);
digitalWrite (BLUE_LED, LOW);
delay (500);

digitalWrite (RED_LED, LOW);


digitalWrite (GREEN_LED, HIGH);
digitalWrite (BLUE_LED, LOW);
delay (500);

digitalWrite (RED_LED, LOW);


digitalWrite (GREEN_LED, LOW);
digitalWrite (BLUE_LED, HIGH);
delay (500);
}

void OFF ()
{
digitalWrite (RED_LED, LOW);
digitalWrite (GREEN_LED, LOW);
digitalWrite (BLUE_LED, LOW);
}
//----------------------------------------
//MOTORs
void FORWARD ()
{
Serial.println ("FORWARD");
GREEN ();

digitalWrite (L1_MOTOR, HIGH);


digitalWrite (L2_MOTOR, LOW);
analogWrite (L_ENA, 60);

digitalWrite (R1_MOTOR, HIGH);


digitalWrite (R2_MOTOR, LOW);
analogWrite (R_ENA, 60);
}

void STOP ()
{
Serial.println ("STOP");
RED ();

digitalWrite (L1_MOTOR, LOW);


digitalWrite (L2_MOTOR, LOW);
analogWrite (L_ENA, 0);

digitalWrite (R1_MOTOR, LOW);


digitalWrite (R2_MOTOR, LOW);
analogWrite (R_ENA, 0);
}

void LEFT ()
{
Serial.println ("LEFT");
BLUE ();

digitalWrite (L1_MOTOR, LOW);


digitalWrite (L2_MOTOR, HIGH);
analogWrite (L_ENA, 60);

digitalWrite (R1_MOTOR, HIGH);


digitalWrite (R2_MOTOR, LOW);
analogWrite (R_ENA, 60);
}

void RIGHT ()
{
Serial.println ("RIGHT");
BLUE ();

digitalWrite (L1_MOTOR, HIGH);


digitalWrite (L2_MOTOR, LOW);
analogWrite (L_ENA, 60);

digitalWrite (R1_MOTOR, LOW);


digitalWrite (R2_MOTOR, HIGH);
analogWrite (R_ENA, 60);
}

//----------------------------------------
//RETURN
void RETURN ()
{
while (flag)
{
Serial.println ("DONE!");

if (flag == true)
{
flag = false;
}
}
}
//----------------------------------------
//COMMANDs
void COMMAND_TWO ()
{
if (digitalRead (L_IR) == LOW && digitalRead (R_IR) == LOW)
{
FORWARD ();
}
else if (digitalRead (L_IR) == HIGH && digitalRead (R_IR) == LOW)
{
LEFT ();
}
else if (digitalRead (L_IR) == LOW && digitalRead (R_IR) == HIGH)
{
RIGHT ();
}
else if (digitalRead (L_IR) == HIGH && digitalRead (R_IR) == HIGH)
{
STOP ();
}

if (!mfrc522.PICC_IsNewCardPresent () || !mfrc522.PICC_ReadCardSerial ())


{
return ;
}

content = "";
byte letter;

for (byte i = 0 ; i < mfrc522.uid.size ; i++)


{
content.concat (String (mfrc522.uid.uidByte [i] < 0x10 ? " 0" : " "));
content.concat (String (mfrc522.uid.uidByte [i], HEX));
}
content.toUpperCase ();

if (content.substring (1) == "")


{
STOP ();
delay (300);
FORWARD ();
delay (500);
STOP ();
delay (300);
RIGHT ();
delay (600);
}

if (content.substring (1) == "")


{
STOP ();
delay (300);
LEFT ();
delay (1000);
RGB ();
delay (1500);
STOP ();
RETURN ();
}
}

void COMMAND_ONE ()
{
if (digitalRead (L_IR) == LOW && digitalRead (R_IR) == LOW)
{
FORWARD ();
}
else if (digitalRead (L_IR) == HIGH && digitalRead (R_IR) == LOW)
{
LEFT ();
}
else if (digitalRead (L_IR) == LOW && digitalRead (R_IR) == HIGH)
{
RIGHT ();
}
else if (digitalRead (L_IR) == HIGH && digitalRead (R_IR) == HIGH)
{
STOP ();
}

if (!mfrc522.PICC_IsNewCardPresent () || !mfrc522.PICC_ReadCardSerial ())


{
return ;
}

content = "";
byte letter;

for (byte i = 0 ; i < mfrc522.uid.size ; i++)


{
content.concat (String (mfrc522.uid.uidByte [i] < 0x10 ? " 0" : " "));
content.concat (String (mfrc522.uid.uidByte [i], HEX));
}
content.toUpperCase ();

if (content.substring (1) == "")


{
STOP ();
delay (300);
LEFT ();
delay (600);
}

if (content.substring (1) == "")


{
STOP ();
delay (300);
RIGHT ();
delay (1000);
RGB ();
delay (1500);
STOP ();

COMMAND_TWO ();
}
}
//----------------------------------------
//MAIN
void loop ()
{
flag = true;

delay (10);
while (Serial.available ())
{
command = "";
command = Serial.readString ();
}

if (command == "command number one")


{
COMMAND_ONE ();
}

if (command == "stop")
{
STOP ();
command = "";
return;
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy