CICLO A TEMPO

CIAO A TUTTI SONO NUOVO QUI, E MI SONO AFFACCIATO ADESSO SU ARDUINO PERCHE HO UN ESIGENZA CHE NON RIESCO A RISOLVERE.
DETTO QUESTO, IO VORREI COMANDARE UN MOTORE IN AVANTI E INDIETRO CON TEMPO DI LAVORO E TEMPO DI PAUSA REGOLABILE CON DUE POTENZIOMETRI.
DURANTE IL TEMPO DI LAVORO IL MOTORE DEVE ANDARE IN AVANTI PER UN CERTO TEMPO E INDIETRO PER UN ALTRO (QUINDI DEVO CREARE UN CICLO NEL CICLO DI LAVORO CHE SI RIPETE PER UN TEMPO IMPOSTATO DA UN POTENZIOMETRO)
HO PROVATO CON LA FUNZIONE "MILLIS()" MA NON C'HO CAPITO NULLA

SPERO DI ESSERE STATO CHIARO
GRAZIE IN ANTICIPO

Si, sei stato chiaro, ma :

  1. Non gridare. l'Uso delle maiuscole equivale a quello
  2. Visto che sie nuovo, forse sarebbe il caso che ti presentassi nella apposita sezione
  3. Non sappiamo che motore usi e sopratutto con cosa lo comandi
  4. Qui "aiutiamo" e basta. Ovvero non ti diciamo " tieni, ecco no sketch giusto giusto per te "

Quindi, facci vedere cosa hai fatto e volentieri ti aiutiamo a completarlo

Punto 2, qui il link Presentazioni
Regolamento: Regolamento

Un pò di link utili in generale:

Allora,

  1. scrivo minuscolo
    2)presentazioni fatte,
  2. il motore viene comandato da 4 relè (per fare l’inversione di marcia, altrimenti me ne bastava uno, uso una scheda arduino uno, per ora sto eseguendo solamente delle prove su una bread-board quindi mi limito a far accendere dei led.
  3. prima di postare lo sketch premetto che sono andato avanti ma ho trovato nuovi prolemi, ora il ciclo a tempo lo fa, però non esce mai dal loop e non esegue tutto il programma
    Eccolo:
int potpin1 = A0; //pin del potenziometro per regolare il tempo
int potpin2 = A1; //pin del potenziometro per regolare il tempo     
int tempo1 = 0;   //valore tempo impostato
int tempo2 = 0;   //valore tempo impostato
int valpot1 = 0;  //valore letto del potenziometro
int valpot2 = 0;  //valore letto del potenziometro
unsigned long tempo3;
unsigned long tempo4;

void setup() {
 
 pinMode(10, OUTPUT); //motore avanti  
 pinMode(11, OUTPUT); //led
 pinMode(9, OUTPUT); //motore indietro
}


void loop() {
       valpot1 = analogRead(potpin1);
tempo1 = map(valpot1, 0, 1023, 0, 10000);
       tempo3 = millis();
       tempo4 = tempo3;
       
   while ( tempo3-tempo4 < tempo1){
           digitalWrite(10, HIGH);
                   digitalWrite(11, HIGH);
                   delay(3000);
                   
                   digitalWrite(10, LOW);
                   delay(300);
                   digitalWrite(9, HIGH);
                   delay(500);
                   digitalWrite(9, LOW);
                   delay (500);
                 }  
       
       
       
   delay(tempo1);
       valpot2 = analogRead(potpin2);
tempo2 = map(valpot2, 0, 1023, 0, 10000);
       digitalWrite(9  , LOW);
digitalWrite(10, LOW);
       digitalWrite(11, LOW);
delay(tempo2);
}

Penso che nel while non hai messo alla fine tempo3 = millis();
infatti tempo4=tempo3 e poi cicli per tempo4-tempo3< valore quindi differnza di 2 valori uguali fa 0 perciò sta continuamente ciclando per 0<qualcosa ovvero per sempre

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Per il codice nell’IDE usa CTRL+T che lo indenta rendendolo più leggibile.

Se nella setup() metti Serial.begin(9600);
allora dentro la loop() puoi scrivere/mandare messaggi son Serial.println(“messaggio”); al monitor seriale, che ti aiuta a fare il debug, ovvero a verificare cosa succede dentro Arduino. Puoi anche mandare i valori delle variabili, esempio Serial.println(tempo3);