Salve a tutti,
vorrei presentarvi il mio progetto, dato le mie conoscenze di programmazione direi ambizioso:
allora, dovrei far partire un timer quando passa un oggetto che chiamerò OBJ sotto un sensore infrarosso che chiamerò SENS, dopodichè ignorare i successivi 2 passaggi di OBJ e riprendere il tempo al 3° passaggio sempre su SENS, e diciamo che fin qui potrebbe anche essere fattibile, il problema è che dovrei gestire 3 timer differenti quindi tre SENS differenti e possibilmente su interfaccia grafica.
Secondo voi è fattibile? Cosa dovrei iniziare a studiare?
Grazie
penso che studiandoci un po sia fattibile,
contare passaggi con variabile di stato,
usare millis come timer e il fatto che i sensori siano 3 non credo sia un problema.
cosa dovresti visualizzare sull’interfaccia grafica?
Ciao camperos, guarda per l'interfaccia grafica mi basterebbe un pulsante di start e stop che inizializzi l'apparecchio, dopodichè al passaggio di OBJ1,OBJ2,OBJ3 per ognuno dei 3 sensori avvii tre timer differenti, poi come già detto ogni sensore deve ignorare i successivi 2 passaggi degli OBJ sotto i sensori e riprendere i tempi al terzo passaggio degli OBJ sotto i sensori.
In pratica sarebbe una pista per macchinette. Su cosa mi consigliate di orientarmi per lo studio della programmazione (quale libreria)? è possibile gestire tre timer differenti su una scheda arduino uno?
come detto sopra nessuna libreria,ci saranno comunque sicuramente vie migliori
se colleghi un pulsante al pin digitale 2, puoi simulare questo sketch.
apri il monitor seriale
int state = 0;
unsigned long time1;
unsigned long time2;
void setup() {
Serial.begin(9600);
pinMode(2, INPUT);
delay(2000);
}
void loop() {
if (digitalRead(2) == HIGH && state == 0) {
time1 = millis();
Serial.println("start");
state = 1;
delay(50);
}
if (digitalRead(2) == LOW && state == 1) {
state = 2;
delay(50);
}
//////////////////////////////
if (digitalRead(2) == HIGH && state == 2) {
Serial.println("secondo");
state = 3;
delay(50);
}
if (digitalRead(2) == LOW && state == 3) {
state = 4;
delay(50);
}
//////////////////////////////
if (digitalRead(2) == HIGH && state == 4) {
Serial.println("terzo");
state = 5;
delay(50);
}
if (digitalRead(2) == LOW && state == 5) {
state = 6;
delay(50);
}
///////////////////////////////
if (digitalRead(2) == HIGH && state == 6) {
time2 = millis();
Serial.print("time: ");
Serial.println((time2 - time1) / 1000);
Serial.println("==================");
state = 7;
delay(50);
}
if (digitalRead(2) == LOW && state == 7) {
state = 0;
delay(50);
}
}
se va bene così per una macchinina prova ad inserire 3 pulsanti e modifica lo sketch per 3, ovviamente state e time avranno numeri diversi da quelli nello sketch sopra
poi vediamo processing