Trenino elettrico & Arduino

Salve,
conosco abbastanza il C, e credo mi sia utile nella programmazione di Arduino.
Vorrei realizzare un controllo “automatico” per un trenino elettrico (lima)…
insomma una station che mi registri la velocità (avevo pensato di usare due Led a infrarossi e calcolare il tempo tra il primo e il secondo) e me la stampi su un LCD e casomai scambi attivati tramite un pulsante (avevo pensato all’utilizzo di Servi).
premetto che non sono ancora in possesso di una board programmabile, ma sono intenzionato a procurarmene una, credo un Arduino 2009.
Secondo voi è “complesso” (e un’idea su come potrei realizzarlo, cosa mi serve per attuarlo) come primo progetto da realizzare, tendendo conto che le uniche conoscenze di elettronica che ho sono letture da wikipedia?

Ma di quanti ingressi/uscite hai bisogno? Le UNO/2009 sono limitate. Forse dovresti pensare ad una Arduino MEGA.

In quanto a difficoltà a me non pare eccessivamente difficile, come progetto. Dovra iniziare a piccoli passi, ma questo è ovvio. Conoscendo il C, sei avvantaggiato sul lato programmazione.

la parte più complessa è quella relativa alla velocità, per essere abbastanza veritira, salvo loop molto veloce, devi usare gli interrupt. per i pulsanti e i servo son i tipici esempi di base per imparare.

se arrivi dal C sappi che il main non esiste (o meglio è nascosto) ed è scriito così: main(){ setup() while(1){ loop() }

tu in arduino puoi modificare sia setup() che loop()

beh lato programmazione non mi pare tanto complicato: crei un arredi di un numero di valore pari al numero di sensori, quindi ad ogni passaggio salvi i millisecondi, ad ogni aggiornamento poi fai la differenza e la dividi per la distanza, quindi trasformazioni. però ti servono valori in float in quanto le divisioni ti risulteranno un numero piccolo e composto da una parte decimale. per le distanze puoi usare un0altro array.

oer la memorizzazione: attendi un segnale sul pin, quando leggi il segnale alto salvi il valore dei millisecondi nell'array usando come indice i che è una variabile numerica che aumenta ad ogni lettura di sensore e quando arriva al numero dei sensori si resetta. ora ad occhio fai una roba del genere (da sistemare):

void setup() {
Serial.begin(9600);
}

int distanza[20?] = {valori fino a riempire l'array};
int i = 0;
float array[20?]; //verifica qui sono insicuro

void main()
{
while(digitalRead(pin) != HIGH || digitalRead(pin) != HIGH || digitalRead(pin) != HIGH ||... per ogni pinnn);
array[i] = millis();
velocita = (array[i] - array[i-1])/distanza[i];
i++;
Serial.println(velocita); 
}

non l'ho provato ma dovrebbe andare, intanto stampa su seriale ;)

Ciao,

se vuoi puoi vedere cosa hanno fatto altri per controllare i modellini di treni, ad esempio:

In video details vi sono gli indirizzi

Video generale presentazione elettronica

Vi era una persona che aveva fatto una scheda basata su Arduino specifica per modellismo ferroviario, ma non trovo il link.

Ciao,
Marco.