Stap 6: Het project testen
Als de sensor detecteert of gas of rook die de zoemer klinkt en de LED-flitser.
We gebruikten een BIC lichter en een papieren handdoek in een blikje te testen van ons project.
Eerst vrijgegeven hebben we butaangas uit de BIC lichter zonder verlichting van de vlam. Dit moet instellen van het alarm.
Next we de aansteker gebruikt om in te stellen van een papieren handdoek op brand in een blikje. Wij vervolgens blies de vlam, zodat het papier smoldered en rook geproduceerd. Dit ook instellen van het alarm.
Zodra u tevreden bent alles werkt kunt u alles in een plastic doos plaatsen. Door de vaststelling van magneetband aan het vak, kunt u tijdelijk het vak koppelen aan een stalen deur.
Hier is het programma:
#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 200int is_running = 0; uint16_t buffer [128]; upm::MQ3 *sensor = NULL;void sig_handler(int signo) { printf("got signal\n"); if (signo == SIGINT) { is_running = 1; } }//! [Interesting] int main(int argc, char **argv) { // Create the Grove LED object using GPIO pin 2 upm::GroveLed* led = new upm::GroveLed(2); mraa_gpio_context gpio = NULL; gpio = mraa_gpio_init(5); mraa_gpio_dir(gpio, MRAA_GPIO_OUT); // Print the name std::cout << led->name() << std::endl; // Attach gas sensor to A0 sensor = new upm::MQ3(0); signal(SIGINT, sig_handler); thresholdContext ctx; ctx.averageReading = 0; ctx.runningAverage = 0; ctx.averagedOver = 2; // Infinite loop, ends when script is cancelled // Repeatedly, take a sample every 2 milliseconds; // find the average of 128 samples; and // print a running graph of the averages using a resolution of 5 while (!is_running) { int len = sensor->getSampledWindow (2, 128, buffer); if (len) { int thresh = sensor->findThreshold (&ctx, 30, buffer, len); sensor->printGraph(&ctx, 5); if (thresh > TRIGGER) { led->on(); mraa_gpio_write(gpio, 1); sleep(1); } else { led->off(); mraa_gpio_write(gpio, 0); sleep(1); } } mraa_gpio_write(gpio, 0); led->off(); } // std::cout << "exiting application" << std::endl; // Delete the Grove LED object delete led; return 0; } //! [Interesting]