Can someone help me? I wanted to make a strobe light effect that rapidly blinks 30 milliseconds in every second, so the strobe light effect that rapidly blinks 30 milliseconds will turn on every second.
Did you go back and update your code that you posted in post #1?
If so why, the aim of this forum is to help and give advise, this thread will now be useless in both ways.
If you had left your original code in post #1 and posted your fixed code in a new post, then the thread may have been useful to others.
The original code was so messy and too long, and I have the function that I wasn't able to solve it, so i took small part of it and shared it here, basically i took out the separate function of my whole code which i wasn't able to finish. anyways sorry for making confusions in this forum
The updated code has the same problem in my original code, i just took out the specific function from my original code and transferred it into another sketch, my apologies for confusion.
/*
Blink without Delay
Turns on and off a light emitting diode (LED) connected to a digital pin,
without using the delay() function. This means that other code can run at the
same time without being interrupted by the LED code.
The circuit:
- Use the onboard LED.
- Note: Most Arduinos have an on-board LED you can control. On the UNO, MEGA
and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN
is set to the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your
Arduino model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
created 2005
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen
modified 11 Nov 2013
by Scott Fitzgerald
modified 9 Jan 2017
by Arturo Guadalupi
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/
// constants won't change. Used here to set a pin number:
const int blinkPin1 = 7;
// Variables will change:
int ledState = LOW; // ledState used to set the LED
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated
long interval = 0; // interval at which to blink (milliseconds)
long ontime = 30; // ON time interval 30ms
long offtime = 970; // OFF time interval 970ms
void setup()
{
// set the digital pin as output:
pinMode(blinkPin1, OUTPUT);
interval = ontime;
}
void loop()
{
// check to see if it's time to blink the LED; that is, if the difference
// between the current time and last time you blinked the LED is bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
{
ledState = HIGH;
interval = ontime; //now that the LED will be ON, set the interval to ontime duration
}
else
{
ledState = LOW;
interval = offtime; //now that the LED will be OFF, set the interval to offtime duration
}
// set the LED with the ledState of the variable:
digitalWrite(blinkPin1, ledState);
}
}
It is an adaptation of the "Blink without delay" example.
Hello, thank you for your advise, I finally got what I wanted to happen, here's how I edited the code
/*
Blink without Delay
Turns on and off a light emitting diode (LED) connected to a digital pin,
without using the delay() function. This means that other code can run at the
same time without being interrupted by the LED code.
The circuit:
- Use the onboard LED.
- Note: Most Arduinos have an on-board LED you can control. On the UNO, MEGA
and ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN
is set to the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your
Arduino model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
created 2005
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen
modified 11 Nov 2013
by Scott Fitzgerald
modified 9 Jan 2017
by Arturo Guadalupi
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/
// constants won't change. Used here to set a pin number:
const int blinkPin1 = 7;
// Variables will change:
int ledState = LOW; // ledState used to set the LED
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated
long interval = 0; // interval at which to blink (milliseconds)
long ontime = 30; // ON time interval 30ms
long offtime = 30; // OFF time interval 970ms
long wraptime = 350;
int checker = 0;
void setup()
{
// set the digital pin as output:
pinMode(blinkPin1, OUTPUT);
interval = ontime;
Serial.begin(9600);
}
void loop()
{
// check to see if it's time to blink the LED; that is, if the difference
// between the current time and last time you blinked the LED is bigger than
// the interval at which you want to blink the LED.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW)
{
ledState = HIGH;
checker++;
interval = ontime; //now that the LED will be ON, set the interval to ontime duration
Serial.print(checker);
}
else
{
checker++;
ledState = LOW;
interval = offtime; //now that the LED will be OFF, set the interval to offtime duration
Serial.print(checker);
}
if(checker == 20){
ledState = LOW;
interval = wraptime;
checker = 0;
}
// set the LED with the ledState of the variable:
digitalWrite(blinkPin1, ledState);
}
}