Luc Paquin
Published © CC BY

Project #12: Robotics – TCRT5000 – Mk40

Project #12: Robotics – TCRT5000 – Mk40

BeginnerFull instructions provided1 hour13
Project #12: Robotics – TCRT5000 – Mk40

Things used in this project

Hardware components

DFRobot FireBeetle 2 ESP32-E
×1
DFRobot Fermion: 3.5” 480x320 TFT LCD Capacitive
×1
DFRobot GDL Line 10 CM
×1
TCRT5000 Optical Infrared Line Follower
×1
DFRobot Gravity: IO Shield for FireBeetle 2
×1
DFRobot Terminal Block Board for FireBeetle 2 ESP32-E IoT
×1
DFRobot Lithium Ion Battery - 1000mAh
×1
DFRobot USB 3.0 to Type-C Cable
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Fritzing

Code

DL2606Mk03p.ino

Arduino
/****** Don Luc Electronics © ******
Software Version Information
Project #12: Robotics – TCRT5000 – Mk40
12-40
DL2606Mk03p.ino
DL2606k03
1 x DFRobot FireBeetle 2 ESP32-E
1 x Fermion: 3.5” 480x320 TFT LCD Capacitive
1 x GDL Line 10 CM
1 x TCRT5000 Optical Infrared Line Follower
1 x Gravity: IO Shield for FireBeetle 2
1 x Terminal Block Board for FireBeetle 2 ESP32-E IoT
1 x Lithium Ion Battery - 1000mAh
1 x USB 3.0 to Type-C Cable
*/

// Include the Library Code
// EEPROM Library to Read and Write EEPROM with Unique ID for Unit
#include "EEPROM.h"
// DFRobot Display GDL API
#include <DFRobot_GDL.h>

// TCRT5000 Optical Infrared Line
int iTCRT5000 = A0;
// Value
int iValue = 0;
// Voltage
float fVoltage;
// Print 
String sPrint  = "";

// Defined ESP32
#define TFT_DC  D2
#define TFT_CS  D6
#define TFT_RST D3

/*dc=*/ /*cs=*/ /*rst=*/
// DFRobot Display 320x480
DFRobot_ILI9488_320x480_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);

// Software Version Information
// EEPROM Unique ID Information
#define EEPROM_SIZE 64
String uid = "";

// Software Version Information
String sver = "12-40";

void loop() {
  
  // isTCRT5000
  isTCRT5000();

  // isDisplay TCRT5000
  isDisplayTCRT5000();

  // Delay 1 Second
  delay( 1000 );

}

getDisplay.ino

Arduino
// DFRobot Display 320x480
// DFRobot Display 320x480 - UID
void isDisplayUID(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => black
  screen.fillScreen(0x0000);
  // Text Color => white
  screen.setTextColor(0xffff);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Don Luc Electronics
  screen.setCursor(0, 30);
  screen.println("Don Luc Electronics");
  // Tilt Switch
  screen.setCursor(0, 60);
  screen.println("TCRT5000 Optical Infrared Line Follower");
  // Version
  screen.setCursor(0, 90);
  screen.println("Version");
  screen.setCursor(0, 120);
  screen.println( sver );
  // EEPROM
  screen.setCursor(0, 150);
  screen.println("EEPROM");
  screen.setCursor(0, 180);
  screen.println( uid );

}
// isDisplay TCRT5000
void isDisplayTCRT5000(){

  // DFRobot Display 320x480
  // Text Display
  // Text Wrap
  screen.setTextWrap(false);
  // Rotation
  screen.setRotation(3);
  // Fill Screen => white
  screen.fillScreen(0xffff);
  // Text Color => blue
  screen.setTextColor(0x001F);
  // Font => Free Sans Bold 12pt
  screen.setFont(&FreeSansBold12pt7b);
  // TextSize => 1.5
  screen.setTextSize(1.5);
  // Vibration Senso
  screen.setCursor(0, 30);
  screen.println("TCRT5000 Optical Infrared Line");
  // Value
  screen.setCursor(0, 70);
  screen.println( "Value" );
  screen.setCursor(0, 100);
  screen.println( iValue );
  // Voltage
  screen.setCursor(0, 130);
  screen.println( "Voltage" );
  screen.setCursor(0, 160);
  screen.println( fVoltage );
  // Print
  screen.setCursor(0, 190);
  screen.println( "Print" );
  screen.setCursor(0, 220);
  screen.println( sPrint );
  
}

getEEPROM.ino

Arduino
// isUID EEPROM Unique ID
void isUID()
{
  
  // Is Unit ID
  uid = "";
  for (int x = 0; x < 7; x++)
  {
    uid = uid + char(EEPROM.read(x));
  }
  
}

getTCRT5000.ino

Arduino
// TCRT5000 Optical Infrared Line
// isTCRT5000
void isTCRT5000(){

  // isTCRT5000
  iValue = analogRead( iTCRT5000 );

  // Convert the analog reading (which goes from 0 - 4095) 
  // to a voltage (0 - 3.3V):
  fVoltage = iValue * (3.3 / 4095.0);

  // the lower the voltage, the brighter it is
  if ((fVoltage >= 0) && (fVoltage <= 0.4)) {
    
    sPrint = "It is light";

  } else if ((fVoltage > 0.4) && (fVoltage <= 2)) {
    
    sPrint = "Ot is bright";

  } else {
    
    sPrint = "It is dark";
    
  }

}

setup.ino

Arduino
// Setup
void setup()
{
 
  // Delay
  delay( 100 );

   // EEPROM Size
  EEPROM.begin(EEPROM_SIZE);
  
  // EEPROM Unique ID
  isUID();

  // Delay
  delay(100);

  // DFRobot Display 320x480
  screen.begin();

  // Delay
  delay( 100 );

  // DFRobot Display 320x480 - UID
  // Don Luc Electronics
  // Version
  // EEPROM
  isDisplayUID();

  // Wait for the sensor to heat up for 20 seconds
  delay( 5000 );

}

Credits

Luc Paquin
82 projects • 5 followers
Teacher, Instructor, E-Mentor, R&D and Consulting -Programming Language -Microcontrollers -IoT -Robotics -Machine Learning -AI -Sensors

Comments