0

How can I make my LED flashing while executing the rest of the code?

I want to make some LEDs flash while my program executes the rest of the code.

2

I assume you are talking about the "on-board", or "built-in" LEDs, and not an "add-on" LED being controlled from a GPIO pin. If that's the case, you might try incorporating the following into your code:

For the PWR (power) LED, you can turn it off like this:

echo 0 | sudo tee /sys/class/leds/led1/brightness  

turn it on like this:

echo 1 | sudo tee /sys/class/leds/led1/brightness  
  • I am talking about the add on LEDs from GPIO pins, thank you anyway – Andreas Paxih Dec 28 '18 at 14:16
  • 2
    @AndreasPaxih: OK, there are lots and lots and lots of examples available that show how to do this. Why not pick one, and try it? If you hit a snag, that's what we're here for - what we're NOT here for is to search for information for you. Please take The Tour, and read how to ask a good question – Seamus Dec 28 '18 at 14:22
2

It seems you are looking to execute two parts of your script at the same time. One part is controlling the flashing of the LEDs, and the other part is executing the rest of the code. This can be done with multi threading or multi processing in Python. Look at Python 3 threading — Thread-based parallelism and Python 3 multiprocessing — Process-based parallelism.

1

It is possible to do what you want without involving either multi threading or multiple separate processes. There are merits to all these other methods of course.

Ok so how do you do it? Well you need to instrument your code to update the blink. It works a bit like implementing a progress bar or logging. So, imagine you have this code.

for item in some_big_list:
    process()

Need to become:

for item in some_big_list:
    process()
    update_progress()

Now its true that this can become tedious, but its not necessarily all that hard. Obviously update_progress() could check a timer from a wall clock, to blink only x seconds if called more frequently or just let it toggle every time it enters.

The benefit of this scheme is that if your main program hangs so does the flashing.

0

I STRONGLY suggest you don't do threading unless you're coding often or plan to put a lot of time into learning about the potential pitfalls and how to avoid them ... it's pretty much the fastest way to get a program with unreliable behaviour if you don't know what you're doing.

I would suggest you have a separate script that does the flashing; which you can then control from your other script... It's very much like threading, but because the memory isn't shared you're not going to find yourself having to debug issues you can't reproduce.

  • 1
    It's more multiprocessing. – Ingo Dec 28 '18 at 18:07
  • 3
    How will you become familiar with multithreaded programming if you don't ever try it? I'd give the opposite advice - if you're using a language that supports threading, try spawning a background thread to do the flashing. – Johnny Dec 28 '18 at 18:18
  • 1
    I would love to start learning new things, but I already have many problems with the export of the program because I want to export it as an apk and the buildozer can't be executed correctly – Andreas Paxih Dec 28 '18 at 18:31

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.