Fara detektor (6 / 8 steg)
Steg 6: Testa projektet
Om sensorn känner antingen gas eller rök summern ljuder och LED-blixt.
Vi använde en BIC ljusare och en pappershandduk i en plåtburk för att testa vårt projekt.
Först släppte vi butan gas från BIC lättare utan belysning lågan. Detta bör ställa in larmet.
Nästa använde vi ljusare för att sätta en pappershandduk på eld i en plåtburk. Vi blåste sedan ut lågan så att papperet pyrde och producerade rök. Detta också ställa in larmet.
När du är nöjd allt fungerar kan du placera allt i en plastlåda. Genom att fastställa magnetband till rutan, kan du tillfälligt koppla boxen någon ståldörr.
Här är programmet:
#include < unistd.h >
#include < iostream >
#include "mq3.h"
#include "grove.h"
#include "buzzer.h"
#include < signal.h >
#include < stdlib.h >
#include < sys/time.h >
#include "mraa/gpio.h"
#define TRIGGER 200
int is_running = 0;
uint16_t buffert [128];
UPM::MQ3 * sensor = NULL;
void
sig_handler (int signo)
{
printf fick ("signal\n");
om (signo == SIGINT) {
is_running = 1;
}
}
//! [Intressant]
int
Main (int argc, char ** argv)
{
Skapa den Grove LED objekt med GPIO stift 2
UPM::GroveLed * ledde = nya upm::GroveLed(2);
mraa_gpio_context gpio = NULL;
gpio = mraa_gpio_init(5);
mraa_gpio_dir (gpio, MRAA_GPIO_OUT);
Skriva ut namnet
std::Cout << led-> name() << std::endl;
Bifoga gas sensor till A0
sensor = nya upm::MQ3(0);
signal (SIGINT, sig_handler);
thresholdContext ctx;
ctx.averageReading = 0;
ctx.runningAverage = 0;
ctx.averagedOver = 2;
Oändlig loop, slutar när skriptet avbryts
Upprepade gånger, ta ett prov varje 2 millisekunder;
hitta medelvärdet av 128 proven. och
skriva ut ett rinnande diagram av medelvärdena med en upplösning på 5
medan (! is_running) {
int len = sensor -> getSampledWindow (2, 128, buffert);
om (len) {
int tröska = sensor -> findThreshold (& ctx, 30, buffert, len);
sensor -> printGraph (& ctx, 5);
om (tröska > TRIGGER) {
LED -> on ();
mraa_gpio_write (gpio, 1);
Sleep(1);
} annat {
LED -> off();
mraa_gpio_write (gpio, 0);
Sleep(1);
}
}
mraa_gpio_write (gpio, 0);
LED -> off();
}
std::Cout << "programmet avslutats" << std::endl;
Ta bort objektet Grove LED
ta bort ledde;
Return 0;
}
//! [Intressant]