Foro de modelismo escala N

Versión completa: Semaforos con arduino
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Buenas todos y todas.
Soy novato en esto de los arduinos. Hace poco compre unos semaforos de carretera como estos.
Me gustaria saber como debo hacer las conexiones ya que solo consigo que me pase de rojo a ambar o de rojo a verde.
Nunca he conseguido la secuencia Verde Amarillo Rojo.
Los cables que salen de este semaforo son:
- 2 verdes
- 2 amarillos
-2 rojos
-1 negro que es el que lleva la resistencia
[Imagen: semaforo-de-trafico-de-led-doble-verdeam...ala-h0.jpg]
 
¿Como deberia conectarlos al arduino sin una protoboard?
Supongo que tienes un cable por cada led. Yo conectaría los leds de 2 en dos, por ejemplo, en el pin 2 digital los rojos, en el pin 3 digital los amarillos y en el 4 los verdes. El negro a ground.
(09-06-2017, 08:16)mrslide escribió: [ -> ]Supongo que tienes un cable por cada led. Yo conectaría los leds de 2 en dos, por ejemplo, en el pin 2 digital los rojos, en el pin 3 digital los amarillos y en el 4 los verdes. El negro a ground.

Gracias. Lo intentaré. Te tendré al día de los logros
Ok, últimamente estoy tocando más el arduino y creo que lo que propones es simple. Si puedo ayudarte, cuenta con ello.
Un abrazo. Imagino que cada cable rojo corresponde al rojo superior y al de medio poste. Igual para cada color de cada semáforo, superior y medio poste. El negro es la toma de tierra o negativo. Ahora, para poder hacer el cambio de rojo a verde, y de verde a amarillo y rojo hay que ver el código. Lo haces por pausa en delay o por un reloj? Me gustaría como mrslide, unirme a un proyecto para hacer automatismos con arduino y dejarlos aquí expuestos. Poder hacer pequeñas tarjetas para aumentar potencia y así aprovechar el arduino para varios bloques de semáforos.
(10-06-2017, 10:00)Ficusrex escribió: [ -> ]Un abrazo. Imagino que cada cable rojo corresponde al rojo superior y al de medio poste. Igual  para cada color de cada semáforo, superior y medio poste. El negro es la toma de tierra o negativo. Ahora, para poder hacer el cambio de rojo a verde, y de verde a amarillo y rojo hay que ver el código. Lo haces por pausa en delay o por un reloj? Me gustaría como mrslide, unirme a un proyecto para hacer automatismos con arduino y dejarlos aquí expuestos. Poder hacer pequeñas tarjetas para aumentar potencia y así aprovechar el arduino para varios bloques de semáforos.

Aqui os mando el codigo

int LED_ORLEGI = 12;
int LED_HORIA = 11;
int LED_GORRIA = 9;


void setup() {
  pinMode(LED_ORLEGI, OUTPUT);
  pinMode(LED_HORIA, OUTPUT);
  pinMode(LED_GORRIA, OUTPUT);
 

  digitalWrite(LED_ORLEGI, LOW);
  digitalWrite(LED_HORIA, LOW);
  digitalWrite(LED_GORRIA, LOW);
 

}

void loop() {
  digitalWrite (LED_ORLEGI, HIGH);
  delay(12000);
  digitalWrite (LED_ORLEGI, LOW);
  delay(1000);
  digitalWrite(LED_HORIA, HIGH);
  delay(1000);
  digitalWrite(LED_HORIA, LOW);
  delay(1000);
  digitalWrite(LED_GORRIA, HIGH);
  delay(5000);
  digitalWrite(LED_GORRIA, LOW);

Gorria= Rojo
Orlegi=Verde
Horia =Amarillo
Pero este código si que funciona.. o sigues teniendo problemas??
(12-06-2017, 00:41)mrslide escribió: [ -> ]Pero este código si que funciona.. o sigues teniendo problemas??

Sigo teniendo problemas.

Se salta un color
Veo que entre el led anterior, por ejemplo el verde/orlegi y el led siguiente, amarillo/horia hay un delay de 1000.en cristiano.
enciende led verde
espera 12000
apaga led verde
espera 1000
enciende led amarillo
espera 1000
apaga led amarillo
espera 1000
enciende led rojo
espera 5000
apaga led rojo
}
y la siguiente orden en el loop es.....enciende led verde.
¿Has probado a poner tras el apagado del led gorria poner un delay de 1000?
Luego pruebo el código
Falta cerrar la llave tras la ultima orden
(12-06-2017, 16:01)Ficusrex escribió: [ -> ]Veo que entre el led anterior, por ejemplo el verde/orlegi y el led siguiente, amarillo/horia hay un delay de 1000.en cristiano.
enciende led verde
espera 12000
apaga led verde
espera 1000
enciende led amarillo
espera 1000
apaga led amarillo
espera 1000
enciende led rojo
espera 5000
apaga led rojo
}
y la siguiente orden en el loop es.....enciende led verde.
¿Has probado a poner tras el apagado del led gorria poner un delay de 1000?
Luego pruebo el  código
Falta cerrar la llave tras la ultima orden

int LED_ORLEGI = 12;
int LED_HORIA = 10;
int LED_GORRIA = 8;


void setup() {
  pinMode(LED_ORLEGI, OUTPUT);
  pinMode(LED_HORIA, OUTPUT);
  pinMode(LED_GORRIA, OUTPUT);
 

  digitalWrite(LED_ORLEGI, LOW);
  digitalWrite(LED_HORIA, LOW);
  digitalWrite(LED_GORRIA, LOW);
 

}

void loop() {
  digitalWrite (LED_ORLEGI, HIGH);
  delay(12000);
  digitalWrite (LED_ORLEGI, LOW);
  delay(1000);
  digitalWrite(LED_HORIA, HIGH);
  delay(1000);
  digitalWrite(LED_HORIA, LOW);
  delay(1000);
  digitalWrite(LED_GORRIA, HIGH);
  delay(5000);
  digitalWrite(LED_GORRIA, LOW);
  delay(1000);
}

He cambiado los pines por comodidad.Aqui os subo un video para que veais lo que pasa
(12-06-2017, 16:26)errigoiti escribió: [ -> ]
(12-06-2017, 16:01)Ficusrex escribió: [ -> ]Veo que entre el led anterior, por ejemplo el verde/orlegi y el led siguiente, amarillo/horia hay un delay de 1000.en cristiano.
enciende led verde
espera 12000
apaga led verde
espera 1000
enciende led amarillo
espera 1000
apaga led amarillo
espera 1000
enciende led rojo
espera 5000
apaga led rojo
}
y la siguiente orden en el loop es.....enciende led verde.
¿Has probado a poner tras el apagado del led gorria poner un delay de 1000?
Luego pruebo el  código
Falta cerrar la llave tras la ultima orden

int LED_ORLEGI = 12;
int LED_HORIA = 10;
int LED_GORRIA = 8;


void setup() {
  pinMode(LED_ORLEGI, OUTPUT);
  pinMode(LED_HORIA, OUTPUT);
  pinMode(LED_GORRIA, OUTPUT);
 

  digitalWrite(LED_ORLEGI, LOW);
  digitalWrite(LED_HORIA, LOW);
  digitalWrite(LED_GORRIA, LOW);
 

}

void loop() {
  digitalWrite (LED_ORLEGI, HIGH);
  delay(12000);
  digitalWrite (LED_ORLEGI, LOW);
  delay(1000);
  digitalWrite(LED_HORIA, HIGH);
  delay(1000);
  digitalWrite(LED_HORIA, LOW);
  delay(1000);
  digitalWrite(LED_GORRIA, HIGH);
  delay(5000);
  digitalWrite(LED_GORRIA, LOW);
  delay(1000);
}

He cambiado los pines por comodidad.Aqui os subo un video para que veais lo que pasa

joes que raro.... puede ser polaridad??? esto parece cosa de sorgiñes
(12-06-2017, 21:53)Ficusrex escribió: [ -> ]joes que raro.... puede ser polaridad??? esto parece cosa de sorgiñes

Necesitaremos algo para cambiar polaridad o algun rele.
Soy neofito en la electronica

Es cosa de Sorginak
Hola, supongo que lo habrás comprobado, pero esta el cable de cada led en el pin que indicas del arduino??

Haz una prueba, pon todos a high y pasado un tiempo ponlos todos en low (los tres)
Llevan resistencia esos leds? Otra cosa que puedes hacer es conectar el led a las salidas gnd y 5v (con resistencia si no llevan) y así testear que funciona el led.
(13-06-2017, 23:20)mrslide escribió: [ -> ]Llevan resistencia esos leds? Otra cosa que puedes hacer es conectar el led a las salidas gnd y 5v (con resistencia si no llevan) y así testear que funciona el led.

El unico que lleva resistencia es el cable negro , los demas no tienen. Funcionan todas las luces ya que si no conecto el rojo o el amarillo el verde se enciende
Me parece apreciar en el video que el led amarillo nunca se apaga, cuando conmuta al rojo el amarillo disminuye su iluminación pero no se apaga hasta pasado un tiempo.

Me temo que la secuencia que aparece en el video no tiene mucho que ver con la que expones en este hilo, ¿no estarás aplicando otras órdenes distintas?

Si pretendes mantener un tiempo encendido el amarillo mientras cambia al rojo o al verde posiblemente estés teniendo un problema cuando los leds quedan en paralelo (en un total de cuatro) y sólo tienes una resistencia común para todos ya que las caidas de tensión de unos ledes influirán en los otros, sobre todo dependiendo del color de los mismos.

Primera recomendación: pon una resistencia a cada cable de cada led y quita la del negro común. Prueba de nuevo.

Segunda recomendación: revisa el código por si no fuese exactamente el que aparece aquí. Si no fuese el mismo ponlo aquí, que lo podamos examinar.

Tercera recomendación: ilustra con imágenes las conexiones que has hecho y dónde las has hecho, no somos adivinos.

Si lo anterior no funciona, pregúntale a Sorginak qué es lo que ha hecho y que deje de marear de una vez, que a nuestras edades el cerebro ya no está para mucha tontería.

Ánimo y a por ello, en la vida todo tiene solución (dicen).
na preguntita.
Para conectar a un arduino es necesario una protoboard

Lo siento no haberos hecho mucho caso pero es que he andado liado hasta ahora
No, en absoluto.
La protoboard se usa para hacer pruebas, para conexiones no permanentes.
Si el diseño está claro, se conecta directamente a los pines de la placa de arduino.
Por fin lo he conseguido tras arduos esfurezos
Os dejo aqui el codigo

int led_verde = 12;
int led_amarillo = 8;
int led_rojo = 10;


void setup()
{
pinMode(led_verde, OUTPUT);
pinMode(led_amarillo, OUTPUT);
pinMode(led_rojo, OUTPUT);
}


void loop()
{
digitalWrite(led_rojo, HIGH); //prendemos el led rojo con HIGH
digitalWrite(led_amarillo,HIGH); //apago el led amarillo con LOW
digitalWrite(led_verde, LOW); //apago el led verde con LOW
delay(15000); // esperamos 15 segundos
digitalWrite(led_rojo, HIGH); //prendemos el led rojo con HIGH
digitalWrite(led_amarillo,LOW); //apago el led amarillo con LOW
digitalWrite(led_verde, HIGH); //apago el led verde con LOW
delay(1000); // esperamos 1 segundos
digitalWrite(led_rojo, LOW); //prendemos el led rojo con HIGH
digitalWrite(led_amarillo,HIGH); //apago el led amarillo con LOW
digitalWrite(led_verde, HIGH); //apago el led verde con LOW
delay(10000); // esperamos 10 segundos

}
Páginas: 1 2