Forum >> Principianti >> Invalid preprocessing directive #Mac

Pagina: 1

Salve, sono alle primissime armi, volevo realizzare il progetto del potenziometro rotativo multifunzione su raspberry-pico. Ho installato le librerie della mia pico-2040 nell' Ide di Arduino, ho copiato il codice ma nella verifica mi da l'errore scritto nel titolo. Allego il codice che ho utilizzato:




import digitalio
import board
import usb_hid
import time
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.mouse import Mouse
from adafruit_hid.keycode import Keycode
from adafruit_hid.consumer_control import ConsumerControl
from adafruit_hid.consumer_control_code import ConsumerControlCode

print("== Pi Pico control ==")

CLK_PIN = board.GP4
DT_PIN = board.GP3
SW_PIN = board.GP2
clk_last = None
count = 0
totalMode = 3
currentMode = 0

cc = ConsumerControl(usb_hid.devices)
mouse = Mouse(usb_hid.devices)
keyboard = Keyboard(usb_hid.devices)


clk = digitalio.DigitalInOut(CLK_PIN)
clk.direction = digitalio.Direction.INPUT

dt = digitalio.DigitalInOut(DT_PIN)
dt.direction = digitalio.Direction.INPUT

sw = digitalio.DigitalInOut(SW_PIN)
sw.direction = digitalio.Direction.INPUT
sw.pull = digitalio.Pull.UP

def millis():
return time.monotonic() * 1000

def ccw():
print("CCW")

if (currentMode == 0): # Mac brightness down
keyboard.send(Keycode.SCROLL_LOCK)

elif(currentMode ==1): # Mac horizontal scroll right
keyboard.press(Keycode.SHIFT)
mouse.move(wheel=-1)
keyboard.release(Keycode.SHIFT)

elif(currentMode == 2): # Volume decrement
cc.send(ConsumerControlCode.VOLUME_DECREMENT)

def cw():
print("CW")
if (currentMode == 0): # Mac brightness up
keyboard.send(Keycode.PAUSE) 

elif(currentMode ==1): # Mac horizontal scroll left
keyboard.press(Keycode.SHIFT)
mouse.move(wheel=1)
keyboard.release(Keycode.SHIFT)

elif(currentMode == 2): # Volume increment
cc.send(ConsumerControlCode.VOLUME_INCREMENT)


def long_press():
#Mac sleep: CMD + OPT + EJECT
keyboard.press(Keycode.ALT, Keycode.COMMAND) 
cc.send(ConsumerControlCode.EJECT)
keyboard.release_all()

while(1):
clkState = clk.value
if(clk_last != clkState):
if(dt.value != clkState):
cw()
else:
ccw()

if (sw.value == 0):
pressTime = millis()
time.sleep(0.2)
longPress = False

while(sw.value == 0):
if(millis() - pressTime > 1000 and not longPress):
print("longPress")
longPress = True
long_press()


if (not longPress):
currentMode += 1
currentMode %= totalMode
print("Mode: " + str(currentMode))

clk_last = clkState


Ciao e benvenuto, purtroppo non so aiutarti, non ho nessuna esperienza sull'argomento.

Ti volevo solo far notare:
A. Il codice che hai riportato è sbagliato dal punto di vista dell'indentazione, ma quello forse è solo per la formattazione su questa risorsa;
B. Se c'è qualcuno che può aiutarti sarebbe magari agevolato dalla lettura di tutto l'errore;
C. Ricorda che ci sono anche altre risorse nella comunità che potrebbero aiutarti.

Cya
Poiché la funzione millis() non è dichiarata nel codice, viene visualizzato il messaggio di errore "'millis' non è definito". Questa funzione, che viene spesso utilizzata negli schizzi di Arduino per ottenere l'ora corrente in millisecondi, non è accessibile in CircuitPython o MicroPython. (utilizzati sul Raspberry Pi Pico).




Puoi sostituire il tempo per millis().monotonic() è una funzione CircuitPython che restituisce il numero di secondi dall'ultimo reset di Pico. Per utilizzare time.monotonic() per monitorare l'ora per una pressione prolungata, è necessario modificare il codice come segue:




Aggiungi il tempo di importazione all'elenco delle istruzioni di importazione nella parte superiore del codice.

Sostituisci pressTime = millis() con pressTime = time.monotonic().

Sostituire if(millis() - pressTime > 1000 e non longPress): con if(time.monotonic() - pressTime > 1 e non longPress):

Dopo aver apportato queste modifiche, prova a verificare nuovamente il codice e verifica se l'errore è stato risolto.


Pagina: 1



Esegui il login per scrivere una risposta.