arduino uno+legopowerfunctions

Ciao a tutti! sono alle prime armi e vorrei riuscire a comandare un treno lego con motore power functions tramite un arduino uno. Qualcuno può darmi qualche dritta?! Grazie

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Qui come funzionano i motori PF, sono a 9V quindi li devi alimentare in maniera separata.
http://www.philohome.com/pf/pf.htm
VCC=9V e GND
Poi hai C1 e C2 per controllo direzione ma anche questi DEVONO essere PWM a 9V, mentre da Arduino esce segnale PWM ma a soli 5V. Meglio quindi usare un driver tipo il DRV8833

.
C1
C2
Avanti
+9V
0V
Indietro
0V
9V
Stop
0V
0V

Qui uno che ha fatto hacking dei cavetti per Arduino+driver:

Ciao nid69ita,
io ho visto questo video:

questo è quello che sto cercando di fare, ma con un motore del nuovo treno passeggeri della Lego, quantomeno per cominciare...
Il motore è alimentato a 9V dal pacco batterie della Lego, e io vorrei inviare un segnale infrarosso dalla scheda Arduino per dirgli quando aumentare la velocità e quando fermarsi.

Ho provato ad inserire questo codice:

/*
   We will send some basic power functions signals to a LEGO train.
 
   J.A. Korten for Railbricks
   Library by Roland Wiersma 
   November 2013
   
   V1.1
   We have included an extra variable myspeed since in my train it was reversed.
 
 */

#include <legopowerfunctions.h> // this imports the LEGO PF library

// The IR LED is connected to pin 13
// Long lead is connected to pin 13, short lead to GND

LEGOPowerFunctions lego(2);

void setup() {                
  // nothing to set up right now   
}

void loop() {
  // myspeed = 2 one direction slow driving 
  // myspeed = 14 slow in reverse direction
  int myspeed = 14;
  lego.SingleOutput(0, myspeed, RED, CH1); // run!
  delay(1000);
  lego.SingleOutput(0, 0, RED, CH1); // pause!
  delay(1000);
}

Viene compilato e trasferito su arduino perfettamente, ma con il LED IR non funziona, mentre se lo sostituisco con un led normale si illumina regolarmente, ma ovviamente il motore del treno non fa nulla.
Non capisco per quale il Led IR blocchi il circuito.
Ringrazio tutti in anticipo.

Quindi usa IR e il ricevitore IR lego.
Dove hai trovato la libreria ?

Mi pare strano quel 2 nel parametro:

LEGOPowerFunctions lego(2);

Se quello è il pin, devi collegare IR al pin 2.
Di solito IRRemote (libreria classica per IR) usa il pin 3 su Arduino (legato ad un timer)

Nella dichiarazione dice:

// The IR LED is connected to pin 13
// Long lead is connected to pin 13, short lead to GND

io ho semplicemente inserito il led tra il pin 13 e il gnd.
Sbaglio?!
Non saprei come collegarlo altrimenti...

cmq il codice l'ho preso da RailBricks_v1_part1a trovato su qualche forum.

Ho provato a collegare direttamente il led ir tra l'uscita a 5V e GND, si è acceso per un istante e poi si è spento... L'ho bruciato?! a occhio nn vedo nulla...
il led dovrebbe essere questo:

carmine86:
Ho provato a collegare direttamente il led ir tra l'uscita a 5V e GND, si è acceso per un istante e poi si è spento... L'ho bruciato?! a occhio nn vedo nulla...
il led dovrebbe essere questo:

http://www.arduino.cc/documents/datasheets/C000043%20-%20Led%20IR.pdf

Si, bruciato. Senza resistenza non mettere mai un led. La corrente è troppa (non i volt ma gli ampere)

carmine86:
cmq il codice l'ho preso da RailBricks_v1_part1a trovato su qualche forum

Hai un link ? Io non lo trovo :frowning:

ok, allora l'ho bruciato! :frowning:

l'ho scaricato da qui!

A quel link, altro link a codice con scritto:

#include <legopowerfunctions.h> // this imports the LEGO PF library
LEGOPowerFunctions lego(13); // sets all PF stuff and makes pin 13 output

Quindi tra parentesi tonde gli dici il pin che utilizzi.
Anche nella libreria c'e' scritta la dichiarazione LEGOPowerFunctions(int IR_Pin);
Tu utilizzi il 13 ma nel tuo codice di esempio che hai postato sopra in parentesi hai 2 (quindi pin 2).
Penso sia quello l'errore

Bene ci proverò, ti ringrazio.
Solo un'ultima cosa, per evitare di bruciare altri led potresti indicarmi il corretto collegamento elettrico?
grazie

Guarda bene anche queste schede: ABC - Arduino Basic Connections
Ci sono gli schemi di molti collegamenti, compresi i led.
Nei led devono scorrere circa 10-20mA quindi una resistenza adeguata ai volt che usi.
Allego tabella

lo schema dovrebbe essere questo:

http://pighixxx.com/PNG/194.png

ma non sono sicuro di come si attui in pratica su una board.
Sapresti spiegarmelo o indicarmi dove guardare?!

Su ebay ci sono dei moduli già fatti, esempio:

Questo ha sopra uno schema tipo quello di Pighi.
Puoi anche usare uno schema semplificato:

Come se fosse un led normale con R=270ohm.
Lo schema di Pighi è migliore per evitare disturbi e migliorare la distanza del segnale.
Inizia con schema minimale.

Ok, ci sono riuscito! Grazie!
L'unico problema è che il segnale arriva massimo a 2 cm di distanza!
Sapresti dirmi dove trovare lo schema di pighi applicato su una board?!

Questo su ebay, mi pare, ma non sono un elettronico.
http://www.ebay.it/itm/Geeetech-IR-Transmitter-module-with-free-3pin-Dupont-jumper-wire-for-Arduino-/221489257579?pt=LH_DefaultDomain_0&hash=item3391c9dc6b

Ok grazie, ma in realtà intendevo se sapresti dirmi come riportare lo schema elettrico disegnato da pighi su una board, tipo questa immagine:

in modo da realizzare i collegamenti corretti.

Ho comprato i componenti per realizzare questo circuito, ma non riesco a capire l'OUT a cosa si riferisce e dove devo collegarlo.
Grazie

http://pighixxx.com/PNG/194.png

OUT è il pin di Arduino a cui hai collegato nel circuito semplice il led.