Problema con millis()

Ragazzi ho un problema che non riesco proprio a trovare... Ho questo codice che si basa sull'input di valori tramite joystick xbox per controllare due motori.
Di per se il codice del joystick è giusto perchè funzionava, ora che ho provato a temporizzare con millis non mi va.
Se guardate il codice, ho messo un serial print con "ok" per verificare che la temporizzazione fosse giusta, ma l'ok non viene mai stampato. Non capisco dove sia il problema sinceramente!

#include <XBOXRECV.h>
//#include <motori.h>
//#include <motion.h>

#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif

#define LHATX_DEAD_ZONE 10000

USB Usb;
XBOXRECV Xbox(&Usb);

int vm1in = 0, vm2in = 0, vm1out = 0, vm2out = 0;
unsigned long tempo_p = 0, tempo;

void setup() 
{
  Serial.begin(115200);
  //init_motori();
  
  #if !defined(__MIPSEL__)
  while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
  #endif
  if (Usb.Init() == -1) {
    Serial.print(F("\r\nOSC did not start"));
    while (1); //halt
  }
  Serial.print(F("\r\nXbox Wireless Receiver Library Started\n"));
}

void loop() 
{
  //motion_control(&vm1in, &vm2in, &vm1out, &vm2out, Usb, Xbox);
  //m1_run(vm1out);
  //m2_run(vm2out);
  
  Usb.Task();
  if(Xbox.XboxReceiverConnected) 
  {
    for (uint8_t i = 0; i < 4; i++) {
      if(Xbox.Xbox360Connected[i]) 
      {
        if((millis() - tempo_p) >= (255/255))
        {
          // Rampa
          
          tempo_p = millis();
          if(vm1in>vm1out)
            vm1out++;
          else if(vm1in<vm1out)
            vm1out--;
          
          if(vm2in>vm2out)
            vm2out++;
          else if(vm2in<vm2out)
            vm2out--;
          
          // Fine rampa
        }
        
        if(millis()-tempo_p >= 1000)
        {
          tempo_p = millis();
          Serial.print("ok");
          // Avanzamento con joystick
          
          if(Xbox.getButtonPress(R2, i))
          {
            vm1in = Xbox.getButtonPress(R2, i);
            vm2in = vm1in; 
          }
          else if(Xbox.getButtonPress(L2, i))
          {
            vm1in = -Xbox.getButtonPress(L2, i);
            vm2in = vm1in;
          }
          
          // Fine avanzamento con joystick
          
          // Rotazione con joystick
          
          if (Xbox.getAnalogHat(LeftHatX, i) > LHATX_DEAD_ZONE)
          {
            if(vm1in==0 && vm2in==0)
            {
            vm2in = map(Xbox.getAnalogHat(LeftHatX, i), LHATX_DEAD_ZONE, 32767, 0, 255);  
            vm1in = -vm2in;
            }
            else
            vm2in -= map(Xbox.getAnalogHat(LeftHatX, i), LHATX_DEAD_ZONE, 32767, 0, vm2in);  
          }
          else if (Xbox.getAnalogHat(LeftHatX, i) < -LHATX_DEAD_ZONE) 
          {
            if(vm1in == 0 && vm2in == 0)
            {
            vm1in = map(Xbox.getAnalogHat(LeftHatX, i), -LHATX_DEAD_ZONE, -32767, 0, 255);  
            vm2in = -vm1in;
            }
            else
            vm1in -= map(Xbox.getAnalogHat(LeftHatX, i), -LHATX_DEAD_ZONE, -32768, 0, vm1in);  
          }
          
          // Fine rotazione con joystick
        }
      }
    }
  }   
  
  /*Serial.print(vm1in);
  Serial.print("\t ");
  Serial.print(vm2in);
  Serial.print("\n");*/
}

Come vedete ho commentato tutto quello che riguarda il controllo dei motori.

Non avendolo tu ancora fatto, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie.

Guglielmo

cosa usi? un Arduino o un teensy?

simonedefabris:
Di per se il codice del joystick è giusto perchè funzionava, ora che ho provato a temporizzare con millis non mi va.

Possiamo anche guardare il codice, ma se non ci dici che vuoi fare... cosa vuol dire "voglio temporizzare con millis..." ?
Cosa vuoi temporizzare ? Prima andava, perchè hai necessità di temporizzare ? Ragazzi, senza info ... non si cava un ragno del buco !!

Ciao, entrando sempre in questo if

if((millis() - tempo_p) >= (255/255))
        {
          // Rampa
          
          tempo_p = millis();

(255/255 ??)
"resettando" tempo_p non entrerà mai nel successivo if poichè la differenza non riuscirà ad essere > 1000....

Prima semplicemente leggevo il joystick ad ogni ciclo di loop, ora vorrei dargli una temporizzazione usando millis. Tutto qua! Niente di che in realtà ma non funziona.
Uso arduino mega adk.

Cioè guardate il codice qua: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

cosa c'è di sbagliato nel mio?

Che li l'azzeramento della variabile temporanea è fatto 1 sola volta.
Come ti ha detto @cam9500 nel tuo codice la parte del millis è questa:

        if((millis() - tempo_p) >= (255/255))    // ovvero 1
        { // Rampa
          tempo_p = millis();
          ...
        }
        if(millis()-tempo_p >= 1000)       // non entra MAI !!!
        { tempo_p = millis();

Nel secondo if non entra MAI, il primo if scatta sempre 255/255=1 quindi ogni millisecondo tempo_p=millis()
in pratica mai nel secondo if c'e' che millis() - tempo_p è maggiore di 1 secondo

simonedefabris:
Ragazzi ho un problema

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Grazie risolto e funziona tutto!