|
151
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 21, 2012, 01:39:38 pm
|
ok i have this now working in a manner of speaking the delay seems to start as soon as its powered up instead of just when the button goes low ? else { // switching off digitalWrite(solenoid, LOW); digitalWrite(ignition_fan_2, LOW); DoneInitialization=false; // resetting the count delay(500); digitalWrite(relay230_24, LOW); unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (fanState == HIGH) fanState = LOW; digitalWrite(fan, fanState); } }
this at the top of the code int fanState = LOW; long previousMillis = 0; long interval = 20000;
|
|
|
|
|
152
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 19, 2012, 02:31:58 pm
|
Use a stopwatch or timer instead of delay, delay will freeze the thread until the delay is up.
ok does anybody have any examples for this that would be helpful to my project?
|
|
|
|
|
153
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 18, 2012, 02:59:22 pm
|
still having issues ive given up looking at the blink without delay as the more i look at it the more confused im getting so had a look generally on the internet and come across this idea but still doesnt work i seemed to get it to not have a delay or have an endless delay doing my head in now lol else { // switching off digitalWrite(solenoid, LOW); digitalWrite(ignition_fan_2, LOW); DoneInitialization=false; // resetting the count delay(1000); digitalWrite(relay230_24, LOW); static unsigned long starttime; static int fanstate = LOW; if (fanstate == LOW && millis() - starttime > 10000) { fanstate = HIGH; digitalWrite(fan, LOW); starttime = millis(); } }
|
|
|
|
|
154
|
Using Arduino / Project Guidance / will this work on a attiny45
|
on: June 16, 2012, 10:54:44 am
|
hi there will this work on a attiny45 be for i purchase one? // digital const int led2 = 0; const int led3 = 1 ; // analog int knockinput = 3 ; int led1 = 2 ;
// attiny45 / attiny85 // // +-\/-+ // Reset 1| |8 Vcc // (A 3) 2| |7 (A 1) // (A 2) 3| |6 (D 1) PWM1 // GND 4| |5 (D 0) PWM0 // +----+
void setup() { pinMode(led2, OUTPUT); pinMode(led3, OUTPUT);
}
void loop() { int val = analogRead(knockinput); if (val >256) { analogWrite(led1, 255); } else { analogWrite(led1, 0); } //------------------------------ if (val >512) { digitalWrite(led2, HIGH); } else { digitalWrite(led2, LOW); } //------------------------------- if (val >768) { digitalWrite(led3, HIGH); } else { digitalWrite(led3, LOW); } }
|
|
|
|
|
155
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 08, 2012, 04:30:23 pm
|
|
i have looked and looked and i dont understand it hence why i have posted this to seek help. and i have written the whole of this code apart from the delay without delay which is what i dont understand. hence why i am asking.
|
|
|
|
|
156
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 08, 2012, 04:05:19 pm
|
|
i have no idea all i have dun is looked at blink with out delay and tried splicing it in to my code what does not work. dont no how else to make this work?
|
|
|
|
|
160
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 01, 2012, 04:16:39 pm
|
What exactly are you trying to accomplish with this part?
im trying just to do the delay without delay at the moment Also, the "check if it's been long enough" code will only run if your button is HIGH. Is that your intention? In other words, fan won't go low unless it's been long enough AND heatbutton is HIGH.
my intention is to delay the fan when turning off so when the heat button goes from high to low it will delay. but i do want to include as i said earlier that the time delay is dependent on the time the heat button has been high upto a set time.
|
|
|
|
|
161
|
Using Arduino / Project Guidance / Re: heating control
|
on: June 01, 2012, 03:35:09 pm
|
ok i have had a bit off a play with this (again lol) this seem to work but did miss the delay a couple of times but this is just on a test rig at mo so mite be ok then installed what do you think? this is just delay with out delay at mo
const int heatbutton = 2 ; const int ignition_fan_2 = 10; const int saleswitch = 4 ; const int solenoid = 12; const int photo_pressure = 3 ; const int lockoutled = 8 ; const int heatbutton_feed= 5 ; const int fan = 9 ; const int relay230_24 = 11; const int ionisation_in = 7 ; int ionisation = 5 ; bool DoneInitialization = false; int fandelay = LOW; long previousMillis = 0; long interval = 30000; void setup() { pinMode(heatbutton, INPUT ); pinMode(ignition_fan_2, OUTPUT); pinMode(saleswitch, INPUT ); pinMode(solenoid, OUTPUT); pinMode(photo_pressure, INPUT ); pinMode(lockoutled, OUTPUT); pinMode(heatbutton_feed, OUTPUT); pinMode(fan, OUTPUT); pinMode(relay230_24, OUTPUT); pinMode(ionisation_in, INPUT ); //------------------------------------------- digitalWrite(heatbutton_feed, HIGH); }
void loop() { int val = analogRead(ionisation); //--------------------------------------------------------------------
if (digitalRead(heatbutton)== HIGH) { delay(10); //debounce if (!DoneInitialization) { if (digitalRead(ionisation_in)== HIGH) { // if ionisation swith HIGH if (val >900) { digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); return; } } else { if (digitalRead(photo_pressure)== HIGH) { // if photo swith HIGH delay(10); digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); return; } } digitalWrite(fan, HIGH); delay(3000); //--------------------------------------------------------------------- if (digitalRead(saleswitch)==HIGH) { // sale switch if HIGH digitalWrite(relay230_24, HIGH); // 230V out put to ignition digitalWrite(ignition_fan_2, HIGH); delay(1000); digitalWrite(solenoid, HIGH); } DoneInitialization=true; // Initialization is done, don't run it again until button has been low } //--------------------------------------------------------------------- if (digitalRead(saleswitch)== LOW) { // sale switch if LOW digitalWrite(lockoutled, HIGH); digitalWrite(solenoid, LOW); digitalWrite(fan, LOW); delay(10); digitalWrite(heatbutton_feed, LOW); } //--------------------------------------------------------------------- delay(3000); if (digitalRead(ionisation_in)== HIGH) { if (val <900) { // ionisation if LOW digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); } }
if (digitalRead(photo_pressure)==LOW) { // photo if LOW delay(10); digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); } //--------------------------------------------------------------------- else { digitalWrite(ignition_fan_2, LOW); } } //--------------------------------------------------------------------- else { // switching off digitalWrite(solenoid, LOW); digitalWrite(ignition_fan_2, LOW); DoneInitialization=false; // resetting the count delay(500); digitalWrite(relay230_24, LOW); unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { // save the last time you blinked the LED previousMillis = currentMillis; if (fandelay == LOW) digitalWrite(fan, LOW); digitalWrite(fan, fandelay); } } //--------------------------------------------------------------------- }
|
|
|
|
|
163
|
Using Arduino / Project Guidance / heating control
|
on: June 01, 2012, 12:45:27 pm
|
hi there on this heating project i'm doing when the control is turned off the fan will run for 30 secs but one problem i have is it will not start back up until the 30 secs are up what is not good? and what i would like to do aswel i would like to have the delay variable so if the heater has been running for 20secs the over run with be 20 secs but max over run to be 30secs? i had come across this for the variable over run but could not intergrate this into my code and make it still work and it does not have a max over run to const int switchPin = 2; const int led = 13;
long startTime; long duration;
void setup() { pinMode(switchPin, INPUT); digitalWrite(switchPin, HIGH); pinMode(led, OUTPUT); }
void loop() { if(digitalRead(switchPin) == HIGH) { digitalWrite(led, HIGH); }
if(digitalRead(switchPin) == HIGH) { startTime = millis(); while(digitalRead(switchPin) ==HIGH) ; long duration = millis() - startTime; delay(duration); digitalWrite(led, LOW); } }
this is my code where the yellow glow saying // THIS IS WHERE MY DELAY IS this is where my delay is at mo const int heatbutton = 2 ; const int ignition_fan_2 = 10; const int saleswitch = 4 ; const int solenoid = 12; const int photo_pressure = 3 ; const int lockoutled = 8 ; const int heatbutton_feed= 5 ; const int fan = 9 ; const int relay230_24 = 11; const int ionisation_in = 7 ; int ionisation = 5 ; bool DoneInitialization = false;
void setup() { pinMode(heatbutton, INPUT ); pinMode(ignition_fan_2, OUTPUT); pinMode(saleswitch, INPUT ); pinMode(solenoid, OUTPUT); pinMode(photo_pressure, INPUT ); pinMode(lockoutled, OUTPUT); pinMode(heatbutton_feed, OUTPUT); pinMode(fan, OUTPUT); pinMode(relay230_24, OUTPUT); pinMode(ionisation_in, INPUT ); //------------------------------------------- digitalWrite(heatbutton_feed, HIGH); }
void loop() { int val = analogRead(ionisation); //--------------------------------------------------------------------
if (digitalRead(heatbutton)== HIGH) { delay(10); //debounce if (!DoneInitialization) { if (digitalRead(ionisation_in)== HIGH) { // if ionisation swith HIGH if (val >900) { digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); return; } } else { if (digitalRead(photo_pressure)== HIGH) { // if photo swith HIGH delay(10); digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); return; } } digitalWrite(fan, HIGH); delay(3000);
//--------------------------------------------------------------------- if (digitalRead(saleswitch)==HIGH) { // sale switch if HIGH digitalWrite(relay230_24, HIGH); // 230V out put to ignition digitalWrite(ignition_fan_2, HIGH); delay(1000); digitalWrite(solenoid, HIGH); } DoneInitialization=true; // Initialization is done, don't run it again until button has been low } //--------------------------------------------------------------------- if (digitalRead(saleswitch)== LOW) { // sale switch if LOW digitalWrite(lockoutled, HIGH); digitalWrite(solenoid, LOW); digitalWrite(fan, LOW); delay(10); digitalWrite(heatbutton_feed, LOW); } //--------------------------------------------------------------------- delay(3000); if (digitalRead(ionisation_in)== HIGH) { if (val <900) { // ionisation if LOW digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); } }
if (digitalRead(photo_pressure)==LOW) { // photo if LOW delay(10); digitalWrite(lockoutled, HIGH); delay(10); digitalWrite(heatbutton_feed, LOW); } //--------------------------------------------------------------------- else { digitalWrite(ignition_fan_2, LOW); } } //--------------------------------------------------------------------- else { // switching off digitalWrite(solenoid, LOW); digitalWrite(ignition_fan_2, LOW); DoneInitialization=false; // resetting the count delay(500); digitalWrite(relay230_24, LOW); delay(30000); // THIS IS WHERE MY DELAY IS digitalWrite(fan, LOW); // THIS IS WHERE MY DELAY IS } //---------------------------------------------------------------------
}
|
|
|
|
|
165
|
Using Arduino / Project Guidance / Re: timing within a loop
|
on: May 14, 2012, 10:14:08 am
|
Looks like.
Having said that
Code:
if(count == 1) count =0; // resetting the count
Why check count? You can unconditionally set it zero (either it was already zero, or it's one and you want it to be zero)
Also, given that count can only take two values, shouldn't it be a boolean?
honestly i havent got a clue show me what you mean I don't understand, was there a question?
yes sorry finding it hard to explain basically when the switch is turned off theres to be a delay before the LED goes off but the delay depends on how long the input was high for so if the button was on for 10s the light will stop on after the button goes low for 10s but the delay rime can only go upto 30s i hope ive worded that a bit better thanks all for your help
|
|
|
|
|