Continuing the discussion from Run program on boot:
Is there a way to set the program to run on boot without clicking Run in XRPCode?
Continuing the discussion from Run program on boot:
Is there a way to set the program to run on boot without clicking Run in XRPCode?
MicroPython first looks for a file called boot.py and then looks for main.py. XRPCode hides main.py for a better user experience, and modifies it when you hit run. Our main.py does a number of things including setting up the bluetooth to connect remotely and resets the XRP to a known state when a program ends or gets an exception.
Depending on what you are trying to do.
XRP Code doesn’t use boot.py, right? It’s just an option that MicroPython would support, if it existed. When I list files via the MicroPython REPL I don’t see that file:
>>> import os
>>> os.listdir()
['XRPExamples', 'lib', 'main.py']
Here’s what main.py looks like for me:
import os
import sys
import time
FILE_PATH = '/lib/ble/isrunning'
doNothing = False
x = os.dupterm(None, 0)
if(x == None):
import ble.blerepl
else:
os.dupterm(x,0)
try:
with open(FILE_PATH, 'r+b') as file:
byte = file.read(1)
if byte == b'\x01':
file.seek(0)
file.write(b'\x00')
doNothing = True
else:
file.seek(0)
file.write(b'\x01')
if(not doNothing):
with open('/XRPExamples/installation_verification.py', mode='r') as exfile:
code = exfile.read()
execCode = compile(code, 'XRPExamples/installation_verification.py', 'exec')
exec(execCode)
with open(FILE_PATH, 'r+b') as file:
file.write(b'\x00')
except Exception as e:
import sys
sys.print_exception(e)
with open(FILE_PATH, 'r+b') as file:
file.write(b'\x00')
finally:
import gc
gc.collect()
if 'XRPLib.resetbot' in sys.modules:
del sys.modules['XRPLib.resetbot']
import XRPLib.resetbot
A fun hack might be to set up a small display and a couple buttons that let you choose what program to run at runtime. E.g. you press button A and the display shows the name of one of your scripts. Press button A again and it shows a different script. If you press button B then it executes whatever script is currently being displayed on the screen.
Hi Kace,
I put something together similar to exactly what you are describing by adding an encoder and a screen along with a buzzer. Here is the writeup on it that i put together on the build Innovate with Ease: XRP, Qwiic Encoder, OLED, Buzzer Guide