Why does my sketch stop after a custom void?
hello all! have knock sensor keep attached door. uses piezo element detect knocks , rf transmitter beam code when knock detected. can see in code block under "// voltmeter", updates every 10 minutes. #1 below verified working properly. #2 has issues once gets batterylevel(). instead of going through entire block of code in #1, custom "void batterylevel()" called can see. once interval reached in #2 , batterylevel() triggered, rf transmitter no longer transmits upon detecting knock (even though still detects knocks , executes "serial.println(sensorreading)"). why happen? thanks!
#1
#2
#1
code: [select]
const int knocksensor = a6;
const int threshold = 1;
int sensorreading = 0;
#include <rcswitch.h>
rcswitch myswitch = rcswitch();
// voltmeter
float vpow = 5.21;
float r1 = 100000;
float r2 = 10000;
long previousmillis = 0;
long interval = 600000;
// rgb led
int redpin = 7;
int greenpin = 6;
int bluepin = 5;
#define common_anode
void setcolor(int red, int green, int blue)
{
#ifdef common_anode
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogwrite(redpin, red);
analogwrite(greenpin, green);
analogwrite(bluepin, blue);
}
void setup() {
serial.begin(9600);
myswitch.enabletransmit(3);
pinmode(redpin, output);
pinmode(greenpin, output);
pinmode(bluepin, output);
float v = (analogread(7) * vpow) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
char battery[7];
dtostrf(v2,7,1,battery);
serial.println(v2);
if (v2 > 7.5) {
setcolor(0,130,0);
}
else if (v2 >= 7.1 && v2 < 7.4) {
setcolor(128,120,0);
}
else if (v2 <= 7.0) {
setcolor(128,0,0);
}
}
void loop() {
unsigned long currentmillis = millis();
if(currentmillis - previousmillis > interval) {
// save last time blinked led
previousmillis = currentmillis;
float v = (analogread(7) * vpow) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
char battery[7];
dtostrf(v2,7,1,battery);
serial.println(v2);
if (v2 > 7.5) {
setcolor(0,130,0);
}
else if (v2 >= 7.1 && v2 < 7.4) {
setcolor(128,120,0);
}
else if (v2 <= 7.0) {
setcolor(128,0,0);
}
}
sensorreading = analogread(knocksensor);
if (sensorreading >= threshold) {
serial.println("knock!");
serial.println(sensorreading);
myswitch.send(127001, 24);
delay(1000); // have make delay avoid overloading serial port
}
}
#2
code: [select]
// #include <lowpower.h>
const int knocksensor = a6;
const int threshold = 1;
int sensorreading = 0;
#include <rcswitch.h>
rcswitch myswitch = rcswitch();
// voltmeter
float vpow = 5.21;
float r1 = 100000;
float r2 = 10000;
long previousmillis = 0;
long interval = 600000;
// rgb led
int redpin = 7;
int greenpin = 6;
int bluepin = 5;
#define common_anode
void setcolor(int red, int green, int blue)
{
#ifdef common_anode
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogwrite(redpin, red);
analogwrite(greenpin, green);
analogwrite(bluepin, blue);
}
void batterylevel() {
float v = (analogread(7) * vpow) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
char battery[7];
dtostrf(v2,7,1,battery);
serial.println(v2);
if (v2 > 7.5) {
setcolor(0,130,0);
}
else if (v2 >= 7.1 && v2 < 7.4) {
setcolor(128,120,0);
}
else if (v2 <= 7.0) {
setcolor(128,0,0);
}
}
void setup() {
serial.begin(9600);
myswitch.enabletransmit(3);
pinmode(redpin, output);
pinmode(greenpin, output);
pinmode(bluepin, output);
batterylevel();
}
void loop() {
unsigned long currentmillis = millis();
if(currentmillis - previousmillis > interval) {
previousmillis = currentmillis;
batterylevel();
}
sensorreading = analogread(knocksensor);
if (sensorreading >= threshold) {
//serial.println("knock!");
serial.println(sensorreading);
myswitch.send(127001, 24);
delay(500); // have make delay avoid overloading serial port
//lowpower.powerdown(sleep_60ms, adc_on, bod_on);
}
}
#1 works fine , have no problem using sketch instead. vaguely recall having issue in sketch had custom "void something()" (replace "something" actual command). means i'm continuously doing wrong i'd learn future sketches can execute "void something()" properly.
Arduino Forum > Using Arduino > Programming Questions > Why does my sketch stop after a custom void?
arduino
Comments
Post a Comment