Domanda

sto sviluppando un robot per una classe di ingegneria. Ai fini della classe sono tenuto a usare il linguaggio di programmazione NXT. Per spostare, il robot ha bisogno di seguire una linea nera solida.

Se il robot perde la linea, l'ho scansione a sinistra per 1 secondo, o fino a raggiungere una linea nera. Se non viene trovata alcuna linea scansiona verso destra per 2 secondi per cui la posizione iniziale è raggiunto quindi 1 secondo o più rotazione si ottiene.

Ho il ciclo impostato in modo che, se non è stata trovata la linea, il robot continua a muoversi. Che corre per un pieno secondo periodo di tempo 1. Se viene trovata la linea, il movimento si arresta, ma la seconda completo deve ancora completare. In ultima analisi, che significa che il mio programma funziona perfettamente, ma è davvero molto lento.

tl; dr C'è un modo per fare loop con due condizione di uscita in un ambiente di programmazione LEGO Mindstorm? Sia dopo 1 secondo è trascorso, o un sensore riceve l'ingresso desiderato?

È stato utile?

Soluzione 3

Mindstorms non ha una funzione OR.

La soluzione è quella di creare una variabile di uscita, quindi avere due istruzioni switch. Nell'esempio sopra, ho avuto uno switch con un temporizzatore, e l'altro con l'uscita del sensore. Impostare la variabile di uscita su false, quindi all'interno di un ciclo while, correre fino a quando la variabile di uscita è vero.

Se il timer scade, impostare la variabile a true, altrimenti ignora la variabile di uscita. Fate lo stesso con l'uscita del sensore.

Questo è un disordinato e soluzione piuttosto lungo, ma risolve il problema perfettamente all'interno del sistema Lego Mindstorms piuttosto limitata.

Altri suggerimenti

Gli ultimi due blocchi sono blocchi logici impostate su "O". In questo caso, i sensori 3 sono osservati. Se uno è scattato il programma cade fuori dal giro.

Questo è da pagina 86 del http: //www.hightechkids .org / sites / default / files / CoachingLibrary / fll_programming_101_nxt_g.pdf

Che cosa si potrebbe fare è rendere il timeout più breve (100 ms per esempio) e di arresto se la linea è trovato o il loop corse 10 volte.

Non sono un esperto Mindstorms, ma mi aspetto di avere una funzione OR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top