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

Week 10 – Intro to Arduino and Flashing LEDs

In this week we started to work with Ian, he helped us to understand how Arduino world is structured.

Before i start to talk about this i want to suggest a tutorial to watch, i watched it before these Arduino lessons because it explains all the background about Arduino and all the story of how it is being made. I’m really proud that it is an Italian invention!

We started this route with Ian giving us a questionnaire to answer.

After this we installed the Arduino IDE software.

ARDUINO

Then we collegate the Arduino (or Elegoo in my case, it is basically the same) to the computer!

Here we started to develop our first sketch on the Arduino software.

The code that you can modify.

  • /*
    Blink

    Turns an LED on for one second, then off for one second, repeatedly.

    Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
    it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
    the correct LED pin independent of which board is used.
    If you want to know what pin the on-board LED is connected to on your Arduino
    model, check the Technical Specs of your board at:
    https://www.arduino.cc/en/Main/Products

    modified 8 May 2014
    by Scott Fitzgerald
    modified 2 Sep 2016
    by Arturo Guadalupi
    modified 8 Sep 2016
    by Colby Newman

    This example code is in the public domain.

    http://www.arduino.cc/en/Tutorial/Blink
    */

    // the setup function runs once when you press reset or power the board
    void setup() {
    // initialize digital pin LED_BUILTIN as an output.
    pinMode(LED_BUILTIN, OUTPUT);
    }

    // the loop function runs over and over again forever
    void loop() {
    digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
    delay(1000); // wait for a second
    digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
    delay(1000); // wait for a second
    }

Resistors

I din’t added resistors to this project because Arduino should have his own safety system, but circuits need resistors for all manner of reasons. Resistors are used to provide biasing voltages that control the gain of amplifiers, they are used to limit currents to safe levels and prevent overheating, they provide a way to sense current and voltage for circuit control and more.

Example of a resistor.

resisti

With this kind of program we were able to turn on a led light with 1000 delay.

Delay 500

Delay 10, too fast that you cannot even see when the light is off.

Delay 20, this is the effect that we was looking for, like stroboscopic.

After this we programmed Arduino for make him accept 3 LEDs!

3leds