I'm newbie to Arduino.
I want LED to blink at 1st click , fade at 2nd click , hold for the period of time pressed at 3rd click/hold.
Everything is working fine.
But I want to adjust the timing of fading.
I want it to Fade Out and Fade In then Wait for 2 seconds to start ease up again.
but it's fading in and out with the same frequency.It's not holding the time for OFF state.
If I use delay() instead of millis() it's working fine.
But I don't want to pause the program.Thanks
.
/*
This is a sample sketch to show how to use the OneButtonLibrary
to detect click events on 2 buttons in parallel.
The library internals are explained at
http://www.mathertel.de/Arduino/OneButtonLibrary.aspx
Setup a test circuit:
* Connect a pushbutton to pin A1 (ButtonPin) and ground.
* Connect a pushbutton to pin A2 (ButtonPin) and ground.
* The Serial interface is used for output the detected button events.
The Sketch shows how to setup the library and bind 2 buttons to their functions.
In the loop function the button1.tick and button2.tick functions have to be called as often as you like.
*/
// 01.03.2014 created by Matthias Hertel
// ... and working.
/* Sample output:
Starting TwoButtons...
Button 1 click.
Button 2 click.
Button 1 doubleclick.
Button 2 doubleclick.
Button 1 longPress start
Button 1 longPress...
Button 1 longPress...
Button 1 longPress...
Button 1 longPress stop
Button 2 longPress start
Button 2 longPress...
Button 2 longPress...
Button 2 longPress stop
*/
#include "OneButton.h"
// Setup a new OneButton on pin A1.
OneButton button1(A1, true);
// Setup a new OneButton on pin A2.
OneButton button2(A2, true);
int led = 9;
int i=0;
int inc=5;
int clik=0;
int period =2000;
unsigned long current_time = 0;
// setup code here, to run once:
void setup() {
// Setup the Serial port. see http://arduino.cc/en/Serial/IfSerial
Serial.begin(9600);
pinMode(led , OUTPUT);
Serial.println("Starting TwoButtons...");
// link the button 1 functions.
button1.attachClick(click1);
button1.attachDoubleClick(doubleclick1);
button1.attachLongPressStart(longPressStart1);
button1.attachLongPressStop(longPressStop1);
button1.attachDuringLongPress(longPress1);
// link the button 2 functions.
button2.attachClick(click2);
button2.attachDoubleClick(doubleclick2);
button2.attachLongPressStart(longPressStart2);
button2.attachLongPressStop(longPressStop2);
button2.attachDuringLongPress(longPress2);
} // setup
// main code here, to run repeatedly:
void loop() {
// keep watching the push buttons:
unsigned long cms = millis();
button1.tick();
button2.tick();
if (clik ==1){
analogWrite(led , 255);
delay(100);
analogWrite(led , 0);
delay(100);
}
if (clik == 2 ){
if (i==0){
analogWrite(led , 0);
if(millis() > current_time + period){
current_time = millis();
analogWrite(led , 0);
}
}
//This is where i stuck
analogWrite(led , i);
i = i + inc;
if(i == 0 || i == 255){
inc = -inc;
}
delay(100);
}
if (clik == 3) {
analogWrite(led , 255);
}
if (clik == 4){
analogWrite(led , 0);
}
// You can implement other code in here or just wait a while
delay(10);
} // loop
// ----- button 1 callback functions
// This function will be called when the button1 was pressed 1 time (and no 2. button press followed).
void click1() {
clik = 1;
Serial.println(clik);
} // click1
// This function will be called when the button1 was pressed 2 times in a short timeframe.
void doubleclick1() {
clik = 2;
Serial.println(clik);
} // doubleclick1
// This function will be called once, when the button1 is pressed for a long time.
void longPressStart1() {
Serial.println("Button 1 longPress start");
} // longPressStart1
// This function will be called often, while the button1 is pressed for a long time.
void longPress1() {
clik =3;
Serial.println(clik);
} // longPress1
// This function will be called once, when the button1 is released after beeing pressed for a long time.
void longPressStop1() {
clik = 4;
Serial.println(clik);
} // longPressStop1
// ... and the same for button 2:
void click2() {
Serial.println("Button 2 click.");
} // click2
void doubleclick2() {
Serial.println("Button 2 doubleclick.");
} // doubleclick2
void longPressStart2() {
Serial.println("Button 2 longPress start");
} // longPressStart2
void longPress2() {
Serial.println("Button 2 longPress...");
} // longPress2
void longPressStop2() {
Serial.println("Button 2 longPress stop");
} // longPressStop2
// End