Jump to content
Forum sending old emails Read more... ×

Search the Community

Showing results for tags 'hc-sr04'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • News
    • Announcements
    • Suggestions
    • New users say Hi!
  • Spotlight!
    • Sponsor Spotlight
    • Sponsor Giveaways
  • Energia
    • Energia - MSP
    • Energia - TivaC/CC3XXX
    • Energia - C2000
    • Energia Libraries
  • MSP Technical Forums
    • General
    • Compilers and IDEs
    • Development Kits
    • Programmers and Debuggers
    • Code vault
    • Projects
    • Booster Packs
    • Energia
  • Tiva-C, Hercules, CCXXXX ARM Technical Forums
    • General
    • SensorTag
    • Tiva-C, Hercules, CC3XXX Launchpad Booster Packs
    • Code Vault
    • Projects
    • Compilers and IDEs
    • Development Kits and Custom Boards
  • Beagle ARM Cortex A8 Technical Forums
    • General
    • Code Snippets and Scripts
    • Cases, Capes and Plugin Boards
    • Projects
  • General Electronics Forum
    • General Electronics
    • Other Microcontrollers
  • Connect
    • Embedded Systems/Test Equipment Deals
    • Buy, Trade and Sell
    • The 43oh Store
    • Community Projects
    • Fireside Chat
  • C2000 Technical Forums
    • General
    • Development Kits
    • Code Vault
    • Projects
    • BoosterPacks


There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL





Found 3 results

  1. KaruppuSwamy

    MSP430 based Distance Meter

    Here I summarize the hardware connections (schematic given below) and source code (attached) to build a Distance meter using MSP430 Launchpad and Ultrasonic Sensor HC-SR04. Project: Ultrasonice based Distance Meter with LCD Display Microcontroller: MSP430G2231 on MSP-EXP430G2 Launchpad Ultrasonic Ranging Module: HC-SR04 16 msp_dist.c
  2. - INTRODUCTION Hi everybody, I want to share a library for controlling a 4-pins PING sensor (HC-SR04 ICStation) basically, although you can also control the 3-pins PING))) sensor conventional of Parallax (URL). This library is a modification of the Caleb Zulawski's library for PING))) sensors. I made basic improvements in calculations, I added a function to calculate the distance in millimeters and added the option to change the "input trigger signal" [10uS for HC-SR04 and 5uS for PING)))] - CHANGE LOG v2.1 (26/08/2014) * Fixed calculations of distance in inches. v2.0 (25/08/2014) * Fixed problems with measurements adjustments. * New function for modification of a single unit. v1.0 (24/08/2014) * Basic modification of Caleb Zulawski's library. * Added the calculation of distace in millimeters. * Identified problems with measurements adjustments. - TESTING Tested on: Tiva C (TM4C123GXL) & Arduino UNO R3 - COMPARISON SECTION A small comparison between the 2 sensors is: * HC-SR04 sensor: 1. Working Voltage: 5V (DC) 2. Output signal: Electric frequency signal, high level 5V, 0V low level. 3. Sensor angle: Not more than 15 degrees. 4. Detection distance: 2cm-450cm. 5. High precision: Up to 0.3cm 6. Input trigger signal: TTL impulse 10uS 7. Mode of connection: 1. VCC 2. TRIG ( T ) 3. ECHO ( R ) 4. GND * PING))) sensor: 1. Working Voltage: 5V (DC) 2. Output signal: Electric frequency signal, high level 5V, 0V low level. 3. Sensor angle: Not more than 15 degrees. 4. Detection distance: 2cm-300cm. 5. High precision: Up to 0.3cm 6. Input trigger signal: TTL impulse 5us 7. Mode of connection: 1. GND 2. VCC 3. SG - DOWNLOAD SECTION v2.1: Ping4Pins v2.1.zip v2.0 (Not recommended): Ping4Pins v2.0.zip v1.0 (Not recommended): Ping4Pins v1.0.zip - INSTRUCTIONS OF INSTALLATION 1. Download the latest version of the library 2. Unzip the zip-folder. 3. Copy the "Ping4Pins" folder in the location of the libraries depending of your trainer: * For Arduino: <Arduino IDE directory>\hardware\libraries\ * For Tiva C: <Energia IDE directory>\hardware\lm4f\libraries\ Note: If you used an older version of the library, I recommend deleting the folder and copy the new folder "Ping4Pins". - EXAMPLES SECTION In the "examples" folder are 5 examples for Arduino and 5 examples for Tiva. I'll post the example # 1: /* Example # 1 for TivaC / Arduino Created by Jeyson Zuñiga Gomez (https://fb.me/jeysonzg) E-mail: ingjeysonzg@hotmail.com English: In this example, we will use the basic form of the Ping4Pins library. Español: En este ejemplo, vamos a utilizar la forma básica de la libreria Ping4Pins */ // English: We include the library that we will use, in this case Ping4Pins // Español: Incluimos la librería que vamos a usar, en este caso Ping4Pins #include <Ping4Pins.h> // English: Define Trigger and Echo pins // Español: Definimos los pines "Trigger" y "Echo" #define TriggerPin PF_4 #define EchoPin PD_7 // English: For Arduino use: // Español: Para Arduino usa: #define TriggerPin 8 #define EchoPin 7 // English: Create the ping variable with the builder Ping4Pins class and call the function Ping4Pins // Function: Ping4Pins(int Pin_Trigger, int Pin_Echo) // Español: Creamos la variable ping con el constructor de la clase Ping4Pins y llamamos a la funcion Ping4Pins // Funcion: Ping4Pins(int Pin_Trigger, int Pin_Echo) Ping4Pins ping = Ping4Pins(TriggerPin, EchoPin); void setup(){ // English: We start the serial monitor at a speed of 9600 baud // Español: Iniciamos el monitor serial a una velocidad de 9600 baudios Serial.begin(9600); } void loop(){ // English: We call the function "play", without parameters, of our Ping4Pins class. // Here the input trigger signal is 10us default. // Español: Llamamos a la funcion "play", sin parametros, de nuestra clase Ping4Pins. // Aqui la señal de entrada del disparo es de 10us por defecto. ping.play(); // English: We show in the IDE serial monitor the measurement in // microseconds, inches, centimeters and millimeters, respectively. // Español: Mostramos en el monitor serial del IDE la medicion en // microsegundos, pulgadas, centimetros y milimetros, respectivamente. Serial.print("Microseconds: "); Serial.print(ping.microseconds()); Serial.println(" uS"); Serial.print("Inches: "); Serial.print(ping.inches()); Serial.println(" in"); Serial.print("Centimeters: "); Serial.print(ping.centimeters()); Serial.println(" cms"); Serial.print("Milimeters: "); Serial.print(ping.milimeters()); Serial.println(" mm"); Serial.println(); delay(500); } - IMAGES SECTION Image 1. Image 2. Image 3. Image 4. NOTE 1: In Tiva we use digital pin PF_4 for TRIGGER and digital pin PD_7 for ECHO. In Arduino we use the digital pin # 8 for TRIGGER y digital pin # 7 for ECHO. NOTE 2: For use 3-pins PING))) Sensor with this library, declare TRIGGER and ECHO as same PIN DIGITAL. NOTE 3: Please excuse my English, I'm Colombian and my English is not very good
  3. Hello, I'm a beginner so I think the answer is simple. I have an HC-SR04 connected to 4 AA batteries at 5.4V. The echo from the ultrasonic sensor goes through a voltage divider with 20k and 10k ohm resistors before going into P1.1. My f2013 is being powered by the usb programming tool and is using P1.2 as the out/trigger pin for the hc-sr04. I beleive the sr04 can take a 3.3V trigger. This is my code below, I just can't figure out why my interrupt isn't triggering. I borrowed some code from the internet. I can't remember his username, but the guy with the wall racer with two hc-sr04's. For quick reference: F2013 Datasheet #define LED0 BIT0 #define ECHO BIT1 #define TRIG BIT2 #include <msp430f2013.h> volatile unsigned distance_in_cm=0; volatile unsigned int start_time; volatile unsigned int total_time; volatile unsigned int up=0; void main(void) { //setup ports, cpu speed, timers //send 2 microseconds of off to p1.1 //send 10 microseconds of on to p1.1 //wait 60 microseconds // listen and count time on p1.0 //distance in cm is counted time/58 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; //set speed to 1 megahertz TACTL = 0; //stop the clock P1DIR = (LED0 + TRIG); // set all of P1.0 P1.2 to output and P1.1 to input P1SEL = ECHO; //select echo pin as input for timerA TACCTL0 |= CM_3 + SCS + CAP + CCIE + CCIS_0; //capture rising and falling edge, syncronize(always do this),capture mode, interrupt enabled TACTL = TASSEL_2 + ID_0 + MC_2; // SMCLK,/1, continuous up mode, clear _BIS_SR(GIE); // general interrupt enable while (1) { volatile unsigned int i = 0; up = 1; //Next catch on Timer1A0 should be rising edge - helps with capture timer P1OUT |= TRIG; //turn trig on _delay_cycles(20); //double the required 10 microseconds for good measure //TODO set to 10 again if possible P1OUT &= ~TRIG; //turn trig off _delay_cycles(60000); //wait 60ms before testing again. the interrupt should happen somewhere here } } #pragma vector=TIMERA0_VECTOR __interrupt void timerA0 (){ if (up){ start_time = TACCR0; } else { total_time = TACCR0 - start_time; distance_in_cm = total_time/58; if (distance_in_cm < 20){ P1OUT |= LED0; } else{ P1OUT &= ~LED0; } } up=!up; //if this was the rising edge, the next one will be a falling edge, and vice-versa TA0CTL &= ~TAIFG; //clear timer A interrupt flag, so the chip knows we handled the interrupt TACCTL0 &= ~CCIFG;//clears capture interrupt flag, should already be done automatically though TODO } /* #define MC_0 (0*0x10u) Timer A mode control: 0 - Stop #define MC_1 (1*0x10u) Timer A mode control: 1 - Up to CCR0 #define MC_2 (2*0x10u) Timer A mode control: 2 - Continous up #define MC_3 (3*0x10u) Timer A mode control: 3 - Up/Down #define ID_0 (0*0x40u) Timer A input divider: 0 - /1 #define ID_1 (1*0x40u) Timer A input divider: 1 - /2 #define ID_2 (2*0x40u) Timer A input divider: 2 - /4 #define ID_3 (3*0x40u) Timer A input divider: 3 - /8 #define TASSEL_0 (0*0x100u) Timer A clock source select: 0 - TACLK #define TASSEL_1 (1*0x100u) Timer A clock source select: 1 - ACLK #define TASSEL_2 (2*0x100u) Timer A clock source select: 2 - SMCLK #define TASSEL_3 (3*0x100u) Timer A clock source select: 3 - INCLK #define CCIS_0 (0*0x1000u) Capture input select: 0 - CCIxA #define CCIS_1 (1*0x1000u) Capture input select: 1 - CCIxB #define CCIS_2 (2*0x1000u) Capture input select: 2 - GND #define CCIS_3 (3*0x1000u) Capture input select: 3 - Vcc #define CM_0 (0*0x4000u) Capture mode: 0 - disabled #define CM_1 (1*0x4000u) Capture mode: 1 - pos. edge #define CM_2 (2*0x4000u) Capture mode: 1 - neg. edge #define CM_3 (3*0x4000u) Capture mode: 1 - both edges */