Week 12 – Range finder and display

In this week our Arduino project was to let work an ultrasonic sensor,  An ultrasonic sensor is an electronic device that measures the distance of a target object by emitting ultrasonic sound waves, and converts the reflected sound into an electrical signal.

uuultra

This is my ultrasonic range finder or (URF).

HH

I started with collegate my LCD to the Arduino, if you want to see how, go to the week 11 tutorial.

You could follow also this interesting tutorial, it is being useful for me.

I have then added my (URF) to the Arduino in this way

  • VCC to 8

  • TRIG to ~9

  • ECHO to ~10

  • GND to ~11

I add it like this because there was no space due to the LCD.

jj

I followed Christy tutorial and i added the same code.

The actual code.

  • #include <FastIO.h>
    #include <I2CIO.h>
    #include <LCD.h>
    #include <LiquidCrystal.h>
    #include <LiquidCrystal_I2C.h>
    #include <LiquidCrystal_SR.h>
    #include <LiquidCrystal_SR2W.h>
    #include <LiquidCrystal_SR3W.h>

    #include <LiquidCrystal.h>

    /*—–( Import needed libraries )—–*/
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    #define echoPin 10 // Echo Pin
    #define trigPin 9 // Trigger Pin
    #define LEDPin 13 // Onboard LED

    int maximumRange = 200; // Maximum range needed
    int minimumRange = 0; // Minimum range needed
    long duration;
    long distance; // Duration used to calculate distance

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

    void setup() /*—-( SETUP: RUNS ONCE )—-*/
    {
    lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines, turn on backlight

    Serial.begin (9600);
    pinMode(11, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
    }

    void loop() /*—-( LOOP: RUNS CONSTANTLY )—-*/
    {
    digitalWrite(11, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);

    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);

    digitalWrite(trigPin, LOW);
    duration = pulseIn(echoPin, HIGH); // Measures the length of a pulse on echoPin in microseconds
    //waits for the pin to go HIGH, starts timing, then waits for the pin to go LOW and stops timing.
    //Returns the length of the pulse in microseconds.

    //Calculate the distance (in cm) based on the speed of sound.
    distance = duration/58.2;

    if (distance >= maximumRange || distance <= minimumRange){
    /* Send a negative number to computer and Turn LED ON
    to indicate “out of range” */
    Serial.println(“-1”);
    digitalWrite(LEDPin, HIGH);
    lcd.setCursor(0,0);
    lcd.print(“Sonic Range Finder “);
    lcd.setCursor(0,1);
    lcd.print(“The Distance is:- “);
    lcd.setCursor(0,2);
    lcd.print(“-1” );

    }
    else {
    /* Send the distance to the computer using Serial protocol, and
    turn LED OFF to indicate successful reading. */
    Serial.println(distance);
    digitalWrite(LEDPin, LOW);
    }
    lcd.setCursor(0,0); //Start at character 4 on line 0
    lcd.print(“Sonic Range Finder “);
    lcd.setCursor(0,1);
    lcd.print(“The distance is: “);
    lcd.setCursor(0,2);
    lcd.print(distance);
    lcd.print(” cm “);

    delay(500);

    }// –(end main loop )–

 

This should be how it looks like.

loook

It actually work and his measure of the distance is really accurate!

Week 11 – Arduino libraries and displays

During this second week with Ian we learned how to use libraries and displays on Arduino. First of all Ian gived us two documents to install, one was the library and the other one was the code.

I don’t know why on my computer the code wasn’t working, so i just tried to install another LiquidCrystal_I2C.h library and i changed the code by myself, then i added the library to the Arduino environment.

Below the modified code.

  • /*
    20 character 4 line I2C Display
    Backpack Interface labelled “YwRobot Arduino LCM1602 IIC V1”
    Connections:-
    Vcc to 5V (Red)
    Ground (Gnd) to Ground (Gnd) (Black)
    SDA to A4 (Blue)
    SCL to A5 (yellow)
    *//*—–( Import needed libraries )—–*/
    #include <Wire.h> // Comes with Arduino IDE
    // Get the LCD I2C Library here:
    // https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

    #include <LiquidCrystal_I2C.h>

    // set the LCD address to 0x27 for a 20 chars 4 line display
    // Set the pins on the I2C chip used for LCD connections:
    // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

    void setup() /*—-( SETUP: RUNS ONCE )—-*/
    {
    lcd.begin(20,4); // initialize the lcd for 20 chars 4 lines, turn on backlight
    }/*–(end setup )—*/

    void loop() /*—-( LOOP: RUNS CONSTANTLY )—-*/
    { //–(Start of main loop)—

    //——– Write characters on the display ——————
    // NOTE: Cursor Position: Lines and Characters start at 0
    // lcd.setCursor(Horizontal position,Line)

    lcd.clear(); //Clears the screen.
    delay(1000);
    lcd.setCursor(4,0); //Start at character 4 on line 0
    lcd.print(“University of”);
    delay(1000);
    lcd.setCursor(6,1); //Next start at character 6 on line 1
    lcd.print(“Brighton”);
    delay(1000);
    lcd.setCursor(4,2);
    lcd.print(“Hello World!”);
    delay(1000);
    lcd.setCursor(0,3);
    lcd.print(“20 by 4 Line Display”);
    delay(2000);

    }// –(end main loop )–

After the library is installed you have to include it in the sketch as shown in the picture.

moe

Then i had to connect the LCD display.

  1. Black Gnd    to         Gnd

  2. Red +5V       to         Vcc

  3. Blue SDA      to         A4

  4. Yellow SCL   to         A5

ocolle

poll

I had to adjust the contrast of the screen using the blue trimming tool.

blu

I didn’t understand immediately how the display line worked, so these are some initial errors.

volpe

mm

I finally achieved what Ian was asking us.

good

I just had some extra fun with it adding some Italian words from my dialect.

“Adda passà ‘a nuttata” that translated means “the bad night will end” a famous quotation from one of the most important Neapolitan minds, Eduardo De Filippo.

<a nuttata