Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: PCF2119_16X2_LCD SRF02 mbed
Revision 0:ad0e2e5cb37b, committed 2016-01-05
- Comitter:
- BPPearson
- Date:
- Tue Jan 05 16:41:00 2016 +0000
- Commit message:
- Ultrasonic bag sensor
Changed in this revision
diff -r 000000000000 -r ad0e2e5cb37b PCF2119_16X2_LCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PCF2119_16X2_LCD.lib Tue Jan 05 16:41:00 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/ssozonoff/code/PCF2119_16X2_LCD/#1590b28a5be7
diff -r 000000000000 -r ad0e2e5cb37b SRF02.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SRF02.lib Tue Jan 05 16:41:00 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/bobboteck/code/SRF02/#6b978ea41787
diff -r 000000000000 -r ad0e2e5cb37b main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Tue Jan 05 16:41:00 2016 +0000
@@ -0,0 +1,131 @@
+#include "mbed.h"
+#include "SRF02.h"
+#include "PC2119_16X2_LCD.h"
+
+// ultrasonc sensor has a resolution of 1 cm at best so can only be used for rough positional measurements
+
+// Batron LCD - this code is a bit rough and ready and doesn't cope with the second line of the dsiplay very well
+
+// Adresse I2C standard des afficheurs LCD
+#define LCDADDR 0x76
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+DigitalIn multiSensor(p20);
+//I2C i2c(p9, p10);
+//DigitalOut resetLCD(p11);
+//I2C ultraS(p28,p27);
+Serial pc(USBTX, USBRX); // tx, rx
+SRF02 srf02c(p28, p27, 0xE0, 0x52);
+SRF02 srf02l(p28, p27, 0xE2, 0x52);
+SRF02 srf02r(p28, p27, 0xE4, 0x52);
+AnalogOut anOut(p18);
+//PC2119_16X2_LCD lcd(p9, p10, p11);
+
+float filteredDistance = 1000.0;
+float range = 4000.0;
+
+// procedure declarations
+
+
+
+
+int main()
+{
+ // char str[10];
+// char msb = 0;
+// char lsb = 0;
+ float distanceC;
+ float distanceL = range;
+ float distanceR = range;
+ bool validReading;
+
+ // set i2c frequency to 100KHz
+ //i2c.frequency(100000);
+
+ //pc.printf("clear lcd display\n");
+ multiSensor.mode(PullUp);
+
+ // do forever
+ while (1)
+ {
+ validReading = false;
+
+ distanceC = srf02c.read();
+
+ if (multiSensor == true)
+ {
+ distanceL = srf02l.read();
+ distanceR = srf02r.read();
+ }
+
+ if (distanceC < range)
+ {
+ led1 = 1;
+ validReading = true;
+ }
+ else
+ {
+ led1 = 0;
+ }
+
+ if (multiSensor == true){
+ if (distanceL < range)
+ {
+ led2 = 1;
+ validReading = true;
+ }
+ else
+ {
+ led2 = 0;
+ }
+
+ if (distanceR < range)
+ {
+ led3 = 1;
+ validReading = true;
+ }
+ else
+ {
+ led3 = 0;
+ }
+ }
+
+ //pc.printf("Distances %5.3f, %5.3f, %5.3f\n", distanceC, distanceL, distanceR);
+
+ if (validReading)
+ {
+ float shortestDistance = 0.0;
+
+ if (multiSensor == true){
+ if (distanceC < distanceL && distanceC < distanceR)
+ shortestDistance = distanceC;
+ else
+ if (distanceL < distanceR)
+ shortestDistance = distanceL;
+ else
+ shortestDistance = distanceR;
+ }
+ else
+ shortestDistance = distanceC;
+
+ filteredDistance = (0.7 * filteredDistance) + (0.3 * shortestDistance);
+
+ pc.printf("Average distance %5.3f\n", filteredDistance);
+
+ anOut = filteredDistance / range;
+ }
+ else
+ {
+ pc.printf("Out of range\n");
+
+ anOut = 0.0;
+ }
+
+ // wait a while then loop again - was 20 ms
+ //wait_ms(100);
+ }
+}
+
diff -r 000000000000 -r ad0e2e5cb37b mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jan 05 16:41:00 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/8ab26030e058 \ No newline at end of file