Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino Nano-Based Sign Language Interpreter with LCD Display and Flex Sensors

View and Edit Project In Cirkit DesignerImage of Arduino Nano-Based Sign Language Interpreter with LCD Display and Flex Sensors

Circuit Documentation

Summary

This circuit involves an Arduino Nano microcontroller interfacing with various components including an I2C module, multiple resistors, flex resistors, a 9V battery, and an LCD display. The circuit is designed to read analog signals from flex resistors and display corresponding messages on an LCD screen. The Arduino Nano also communicates with the I2C module to control the LCD display.

Component List

  1. Arduino Nano

    • Description: A small, complete, and breadboard-friendly board based on the ATmega328P.
    • Pins: D1/TX, D0/RX, RESET, GND, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11/MOSI, D12/MISO, VIN, 5V, A7, A6, A5, A4, A3, A2, A1, A0, AREF, 3V3, D13/SCK
  2. I2C Module

    • Description: A module used for I2C communication.
    • Pins: SCL, SDA, VCC, GND
  3. 2.2 inch Basic Flex Resistor

    • Description: A flex sensor that changes resistance when bent.
    • Pins: Pin 2, Pin 1
  4. 9V Battery

    • Description: A standard 9V battery used to power the circuit.
    • Pins: +, -
  5. Resistor (10 Ohms)

    • Description: A resistor with a resistance of 10 Ohms.
    • Pins: pin1, pin2
  6. LCD Display (16 pin)

    • Description: A 16x2 character LCD display.
    • Pins: VSS, VDD, VO, RS, R_W, E, DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7, A, K

Wiring Details

Arduino Nano

I2C Module

2.2 inch Basic Flex Resistor

9V Battery

Resistor (10 Ohms)

LCD Display (16 pin)

Code Documentation

Arduino Nano Code

//Hardik & veer
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2); // 0x3F address i2c, 0x27 address i2c

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("SIGN LANGUAGE");
  pinMode(13, OUTPUT);
}

void loop() {
  int s1 = analogRead(A0);
  int s2 = analogRead(A1);
  int s3 = analogRead(A2);
  int s4 = analogRead(A3);

  Serial.println(s1);
  Serial.println("Washroom");

  Serial.println(s2);
  Serial.println("Drink water");

  Serial.println(s3);
  Serial.println("Food");

  Serial.println(s4);
  Serial.println("Emergency");

  if (s1 < 150) {
    digitalWrite(13, LOW);
    Serial.println("WashRoom");
    lcd.setCursor(0, 1);
    lcd.print("   WASHROOM         ");
    delay(2000);
  } else if (s2 < 200) {
    digitalWrite(13, HIGH);
    Serial.println("Drink Water");
    lcd.setCursor(0, 1);
    lcd.print("  DRINK WATER         ");
    delay(2000);
  } else if (s3 < 150) {
    digitalWrite(13, LOW);
    Serial.println("Food");
    lcd.setCursor(0, 1);
    lcd.print("      FOOD         ");
    delay(2000);
  } else if (s4 < 130) {
    digitalWrite(13, HIGH);
    Serial.println("Emergency");
    lcd.setCursor(0, 1);
    lcd.print("      EMERGENCY         ");
    delay(2000);
  } else {
    Serial.println("   NOTHING      ");
    lcd.setCursor(0, 1);
    lcd.print("    NOTHING        ");
  }
}

I2C Module Code

void setup() {
  // put your setup code here, to run once:
}

void loop() {
  // put your main code here, to run repeatedly:
}

Flex Resistor Code

//Prateek
//wwww.prateeks.in
//www.justdoelectronics.com
//https://www.youtube.com/c/JustDoElectronics/videos

#include "SoftwareSerial.h"
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define blue 2
#define green 3
#define red 4

unsigned int f;
unsigned int g;
unsigned int h;

void setup() {
  pinMode(blue, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(red, OUTPUT);
  Serial.begin(9600);
  mySerial.begin(9600);
  Serial.println();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("  Welcome To");
  lcd.setCursor(0, 1);
  lcd.print("JustDoElectronic");
  lcd.clear();
  delay(3000);
}

void loop() {
  f = analogRead(1);
  g = analogRead(2);
  h = analogRead(3);

  if (f <= 722) {
    digitalWrite(blue, HIGH);
    digitalWrite(green, LOW);
    digitalWrite(red, LOW);
    mySerial.println("Plz Give Me Water");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("  Plz Give Me");
    lcd.setCursor(0, 1);
    lcd.print("     Water   ");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" If Anything");
    lcd.setCursor(0, 1);
    lcd.print("  You Want ");
  } else if (g <= 670) {
    digitalWrite(green, HIGH);
    digitalWrite(blue, LOW);
    digitalWrite(red, LOW);
    mySerial.println("Plz Give Me Food");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("  Plz Give Me ");
    lcd.setCursor(0, 1);
    lcd.print("     Food   ");
    delay(3000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" If Anything");
    lcd.setCursor(0, 1);
    lcd.print("  You Want ");
  } else if (h <= 675) {