For Nabeel
Dependencies: mbed mbed-http ESP8266
Revision 12:2c3550f16e6d, committed 2022-03-26
- Comitter:
- sekefors
- Date:
- Sat Mar 26 22:30:25 2022 +0000
- Parent:
- 11:756321f0b0cd
- Commit message:
- ultrasonic works with sw2 and rgb;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/RGBLED.cpp Sat Mar 26 22:30:25 2022 +0000
@@ -0,0 +1,18 @@
+#include "RGBLED.h"
+
+RGBLed::RGBLed (PinName redpin, PinName greenpin, PinName bluepin)
+ : _redpin(redpin), _greenpin(greenpin), _bluepin(bluepin)
+{
+ //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker)
+ _redpin.period(0.0005);
+}
+
+void RGBLed::write(float red,float green, float blue)
+{
+ _redpin = red;
+ _greenpin = green;
+ _bluepin = blue;
+}
+//class could be moved to include file
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/RGBLED.h Sat Mar 26 22:30:25 2022 +0000
@@ -0,0 +1,21 @@
+#ifndef MBED_RGBLED_H
+#define MBED_RGBLED_H
+
+#include "mbed.h"
+
+//Class to control an RGB LED using three PWM pins
+
+class RGBLed
+{
+public:
+ RGBLed(PinName redpin, PinName greenpin, PinName bluepin);
+ void write(float red,float green, float blue);
+private:
+ PwmOut _redpin;
+ PwmOut _greenpin;
+ PwmOut _bluepin;
+};
+
+
+
+#endif
\ No newline at end of file
--- a/main.cpp Sat Aug 28 22:17:23 2021 +0000
+++ b/main.cpp Sat Mar 26 22:30:25 2022 +0000
@@ -5,17 +5,19 @@
#include "mbed.h"
#include "hcsr04.h"
-#include "ESP8266.h"
#include "math.h"
-#define CloudIP "184.106.153.149" //Raw IP Address of ThingSpeak Cloud Server
+#include "RGBLED.h"
+//Setup RGB led using PWM pins and class
+RGBLed myRGBled(D6,D5,D3); //RGB PWM pins
+
+DigitalIn sw2(SW2);
DigitalOut RLed(LED1); //Onboard Red LED = Shelf Out of Stock
DigitalOut GLed(LED2); //Onboard Green LED = All OK
DigitalOut BLed(LED3); //Onboard Blue LED for Wifi Tx Indication
HCSR04 usensor1(D8,D9); //ECHO Pin=D9, TRIG Pin=D8
-HCSR04 usensor2(D7,D6); //ECHO Pin=D7, TRIG Pin=D6
Serial pc(USBTX,USBRX); //Serial Communication with PC
-ESP8266 wifi(PTC17, PTC16, 115200); //Tx Pin:PTC17; Rx Pin:PTC17; Baud rate:115200
+
void wifi_send(void);; //Connect and Push Data Channel to Cloud Server
@@ -28,104 +30,40 @@
int main()
{
pc.baud(115200); //Baud Rate of 115200 for Tera Term
-
- pc.printf("######## ###### #### ###### ###### ## ## ###### ######## ######## ## ##\n\r");
- pc.printf("## ## ## ## ## ## ## ## ## ## ## ## ## ## ### ###\n\r");
- pc.printf("## ## ## ## ## #### ## ## ## #### ####\n\r");
- pc.printf("###### ## ## ###### ###### ## ###### ## ###### ## ### ##\n\r");
- pc.printf("## ## ## ## ## ## ## ## ## ## ##\n\r");
- pc.printf("## ## ## ## ## ## ## ## ## ## ## ## ## ## ##\n\r");
- pc.printf("######## ###### #### ###### ###### ## ###### ## ######## ## ##\n\r");
- pc.printf("-----------------------------------------------------------------------------------------\n\r");
- pc.printf("Developed By: Priyank Kalgaonkar\n\r");
- pc.printf("-----------------------------------------------------------------------------------------\n\r\n\r");
-
+
pc.printf("Initial Setup\r\n");
- wifi.SetMode(1); //Set ESP mode to 1
- wifi.RcvReply(rcv, 1000); //Receive a response from ESP
- pc.printf("%s\r", rcv);
-
- pc.printf("Connecting to WiFi\r\n"); //AP Setup Initialization
- wifi.Join("Z", "12345678");//Put your Wifi SSID followed by Password WiFi_SSID WiFi_Password
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s\n", rcv);
- wait(8);
-
- wifi.GetIP(rcv); //Obtains an IP address from the AP
-
- while (1)
- {
- wifi_send();
-
- RLed = 1;
- GLed = 1;
- BLed = 0;
- wait(2.0f);
- }
-}
-
-void wifi_send(void)
-{
+
while(num<1000000000000)
{
num=num+1;
- pc.printf("\nCloud Sync Instance #: %d\n\r", num);
- pc.printf("Syncing Data with Cloud, Please Wait.\n\r");
+ //checking for switch value to detect traffic light
+ if(sw2 == 0) {
+ myRGBled.write(1.0,0.0,0.0); //red
+ printf("Red light detected; applying breaks\n\r");
+ wait(1.0);
+ }else{
+ myRGBled.write(0.0,1.0,0.0); //green
//Ultrasound Sensor (HC-SR04) #1 Initialization
- int a = 30;
usensor1.start();
wait_ms(500);
- //Calculating Distance Percentage Remaining for Sensor # 1
+ //Calculating Distance for Sensor # 1
distance1 = usensor1.get_dist_cm();
- dist_remaining1 = a-distance1;
- dist_percent1 = (dist_remaining1/30)*100;
-
+
//LED and Tera Term Output
- if (distance1<30 && distance2<30) {
- RLed = 1;
- BLed = 1;
- GLed = 0;
- //printf("Percent remaining: %f\r", dist_percent1 && dist_percent2);
- } else {
- GLed = 1;
- BLed = 1;
- RLed = 0;
- printf("Shelves Empty! Replenish Stock.\n\r");
- }
-
- //Sending Data to the Cloud Server via ESP8266 WiFi Module
- strcpy(snd,"AT+CIPMUX=0\n\r"); //AT+CIPMUX: Enabling Single Channel Mode
- wifi.SendCMD(snd);
- wait(1);
- wifi.RcvReply(rcv, 1000);
- wait(1);
-
- //Establish TCP connection w/ Cloud Server
- sprintf(snd,"AT+CIPSTART=4,\"TCP\",\"%s\",80\n",CloudIP);
- wait(1);
- wifi.RcvReply(rcv, 1000);
- wait(1);
-
- //Set length of the data that will be sent
- strcpy(snd,"AT+CIPSEND=100\n\r");
- wifi.SendCMD(snd);
- pc.printf("%s\r", rcv);
- wait(1);
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s\r", rcv);
- wait(1);
-
- //Pushing the data acquired from HC-SR04 Ultrasonic Sensor to Cloud Server via API
- //Replace with your own API Request - Write a Channel Feed below
- pc.printf("Product X - Sensor 1: \n\r");
- sprintf(snd,"\r ***Replace with your own API Request - Write a Channel Feed below*** \r", dist_percent1);
- printf("Percent Stock X Remaining: %f\n\r", dist_percent1);
- wifi.SendCMD(snd);
- pc.printf("%s\r",snd);
- wait(0.5);
- wifi.RcvReply(rcv, 1000);
- pc.printf("%s\r", rcv);
- }
-}
\ No newline at end of file
+ if (distance1<10) {
+ RLed = 1;
+ BLed = 0;
+ GLed = 0;
+ printf("Emergency Brakes Engaged %u\n\r", distance1);
+ wait(1.0);
+ } else {
+ GLed = 1;
+ BLed = 0;
+ RLed = 0;
+ printf("Distance: %u\n\r", distance1);
+ } //end nested-if
+ } //end if
+ } //end while
+} //end main
\ No newline at end of file