NASA Space Apps Challenge 2018 Belgrade, Serbia .A.L.S.M. Code
Dependencies: DHT PixelArray WS2812 mbed
Revision 0:28c26981ce42, committed 2018-10-22
- Comitter:
- Tafkal
- Date:
- Mon Oct 22 08:29:53 2018 +0000
- Commit message:
- NASA Space Apps Challenge 2018 Belgrade, Serbia .A.L.S.M. Code
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT.lib Mon Oct 22 08:29:53 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Wimpie/code/DHT/#9b5b3200688f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PixelArray.lib Mon Oct 22 08:29:53 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/chris/code/PixelArray/#b45a70faaa83
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WS2812.lib Mon Oct 22 08:29:53 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/bridadan/code/WS2812/#6e647820f587
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Oct 22 08:29:53 2018 +0000
@@ -0,0 +1,125 @@
+/*Includes*/
+#include "mbed.h"
+#include "DHT.h"
+#include "WS2812.h"
+#include "PixelArray.h"
+
+/*Defines*/
+/*4x4 RGB*/
+#define WS2812_BUF 16 // W2812_BUFF >/= NUM_COLORS * NUM_LEDS
+#define NUM_COLORS 6
+#define NUM_LEDS 16
+
+/*Pins*/
+#define tRF_TX (PA_0)
+#define tRF_RX (PA_1)
+
+#define smoke_pin (PB_0)
+#define humidity_pin (PA_4)
+/*Smoke detector*/
+#define smoke_thresh (0.50f)
+
+/*Where to do a print for debug?*/
+Serial pc(SERIAL_TX, SERIAL_RX, 115200);
+
+/*Init tRF*/
+void init_tRF(Serial* trf){
+ //tRF go to config mode
+ trf->printf("+++");
+ wait(0.05);
+ trf->printf("ATR\r");
+ // Freq
+ trf->printf("ATS206=12\r");
+ // Channel
+ trf->printf("ATS200=3\r");
+ // Speed transmit uart
+ trf->printf("ATS210=5\r");
+ // Radio baud
+ trf->printf("ATS201=3\r");
+ // Go to send mode
+ trf->printf("ATO\r");
+}
+/*End tRF init*/
+
+/*Scream*/
+void tRFScream(Serial* trf,WS2812* ws, PixelArray* px) {
+ for (int z=0; z<WS2812_BUF; z++) // Color updated from Top to Bottom
+// for (z=WS2812_BUF; z>=0; z--) // Color updated from Bottom to Top
+ {
+ ws->write_offsets(px->getBuf(),z,z,z);
+ }
+ while(1){
+ trf->printf("UUUUUUUU");
+ }
+}
+/*End Scream*/
+
+ /*Get some humi data*/
+void doDHT(DHT* sensor){
+ int err;
+ err = sensor->readData();
+ if (err == 0) {
+ pc.printf("Temperature is %4.2f C \r\n",sensor->ReadTemperature(CELCIUS));
+ pc.printf("Humidity is %4.2f \r\n",sensor->ReadHumidity());
+ pc.printf("Dew point is %4.2f \r\n",sensor->CalcdewPoint(sensor->ReadTemperature(CELCIUS), sensor->ReadHumidity()));
+ pc.printf("Dew point (fast) is %4.2f \r\n",sensor->CalcdewPointFast(sensor->ReadTemperature(CELCIUS), sensor->ReadHumidity()));
+ } else {
+ pc.printf("\r\nErr %i \n",err);
+ }
+}
+/*Got em humi datas*/
+
+/*Do me*/
+int main()
+{
+ float smoke_val;
+ /*tRF Serial definition*/
+ Serial tRF(tRF_TX, tRF_RX, 115200);
+ /*RGB*/
+ WS2812 ws(PB_5, WS2812_BUF, 3, 12, 9, 12); // LED Driver
+ PixelArray px(WS2812_BUF);
+ ws.useII(WS2812::GLOBAL); // Pixel dimming disabled
+ int colorbuf[NUM_COLORS] = {0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f};
+
+ // for each of the colours (j) write out 16 of them the pixels are written at the colour*16, plus the colour position all modulus 60 so it wraps around
+ for (int i = 0; i < WS2812_BUF; i++) {
+ px.Set(i, colorbuf[(i / NUM_LEDS) % NUM_COLORS]);
+ }
+
+ // now all the colours are computed, add a fade effect using intensity scaling compute and write the II value for each pixel
+ for (int j=0; j<WS2812_BUF; j++)
+ {
+ // px.SetI(pixel position, II value)
+ px.SetI(j%WS2812_BUF, 0xf+(0xf*(j%NUM_LEDS)));
+ }
+ /*Smoke detector*/
+ AnalogIn smoke_in(smoke_pin);
+ /*Humidity and temperature*/
+ DHT HumSensor(humidity_pin,SEN11301P);
+ /*Init all the things*/
+ init_tRF(&tRF);
+ pc.printf("Alright chums, let's do this!\r\n"); //Debug line
+
+ /*Some infinite action*/
+ while (1) {
+ pc.printf("Loop start.\r\n"); //Debug line, I'm using the mbed online compiler, understand me pls.
+ /*Do smoke*/
+ smoke_val = smoke_in.read();
+ if(smoke_val >= smoke_thresh) {
+ pc.printf("NOK Smoke: %f\r\n", smoke_val);
+ pc.printf("SMOKE!");
+ tRFScream(&tRF, &ws, &px);
+ }
+ else {
+ pc.printf("OK Smoke: %f\r\n", smoke_val);
+ }
+ /*Do humi sensor*/
+ doDHT(&HumSensor);
+ if (HumSensor.ReadTemperature(CELCIUS) > 35.0f) {
+ pc.printf("HUMI!");
+ tRFScream(&tRF, &ws, &px);
+ }
+ wait(1);
+ }
+}
+/*End me*/
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Oct 22 08:29:53 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/e95d10626187 \ No newline at end of file