Conocen Arduino?

Geramador

Well-Known Member
Pues eso, ¿Quien lo conoce?, ¿Quien ha trabajado con estos equipos?

Yo apenas estoy iniciando, un hobby te lleva a otro, eso me he dado cuenta, el modelismo es muy completo y meter electrónica es abrir una ventana enorme de posibilidades, hoy compre mi primer arduino (propio), después de jugar mucho rato con uno prestado, la verdad me ha fascinado el mundo de posibilidades que tiene.

De momento mi proyecto requiere de 3 atmel328P, que pienso programar en el arduino uno y de ahi pasarlos a un pcb para que ya no se puedan reprogramar pero que hagan lo que quiero hacer.


Alguien mas los ha usado?, ¿Que proyectos tienen?
 

Gzuz

Active Member


Yooooo, no había visto este post... En la uni aprendí sobre microcontroladores pic, ojalá hubiese conocido los arduinls en ese entonces... todo hubiese sido más fácil

Yo estoy armando un wideband controller para un amigo con su pantalla TFT con tres entradas analogicas, una digital... Me está costando un poco lo de leer el sensor de oxigeno pero ahí la llevo

Que vas a hacer tú?

Enviado desde mi Nexus 6 mediante Tapatalk
 

Geramador

Well-Known Member
Wooow, Pues yo no estoy haciendo nada del otro mundo, realmente me llamo la atención y se me hizo buen inicio para aprender a programar, de momento tengo un sistema de sensores para mis trenes a escala, con un sistema de semáforos, al entrar el tren al sector se pone el semáforo en rojo, como es por infrarrojo hasta que los sensores no detecten obstáculo no cambia la luz, de igual modo empiezo a controlar los cambios de vía con un puente H y el arduino pero esto ya es otro rollo, he estado explorando las posibilidades que tiene, lo que me gusta es lo pequeñito que es, he pensado un c130 a escala 1/144 con luces y motores funcionales pero eso ya es otro rollo.

En pocas palabras yo solo estoy jugando con el Arduino pero vaya que tiene muchas posibilidades, sobre los cambios de vía en mi maqueta me gustaría controlarlos con el celular por vía wifi o bluethoot pero todavia no llego a ese nivel de programación.

Ademas de eso, se me han ocurrido un par de cosas para el coche pero eso creo ya estoy fumando de la verde y hasta con semillas jajaja.
 

Gzuz

Active Member
Eso del C130 tmb se me había ocurrido por lo menos ya compré uno de los motores brushless para ver si me sale ahaha pero lo que me falta es tiempo...



Enviado desde mi Nexus 6 mediante Tapatalk
 

Geramador

Well-Known Member
Aprovechando Gzuz, una duda, estoy tratando de crear un semáforo para mis trenes, la idea es simple, pero quiero aprovechar todos los pines posibles, en si para un solo semáforo necesito 2 entradas análogas (una activa el rojo y otra el amarillo, cuando el rojo esta activado anula el amarillo aun que este activado), 4 salidas digitales, 3 para los leds del semáforo y una que se usaría para activar otro circuito externo (servos para cruceros o para activar el amarillo de un semáforo anterior), hasta ahí funciona bien, pero ¿Puedo repetir el programa en el mismo arduino para tener 2 semáforos en vez de uno?, la verdad lo he intentado, solo repetí el programa y cambie pines y nombres pero al hacerlo los semáforos se vuelven locos, dejan de responder como deberían.
 

Gzuz

Active Member
En teoría si, tendrías que estar leyendo los pines de las entradas constantemente y poner ifs como condicionantes para que haga lo que quieras cuando detecte cambios en las entradas.

Lo que no entendí es por que tienes entradas analogicAs? No serían solamente digitales? Que sensor usas.como.entrada?

Enviado desde mi Nexus 6 mediante Tapatalk
 

Geramador

Well-Known Member
En teoría si, tendrías que estar leyendo los pines de las entradas constantemente y poner ifs como condicionantes para que haga lo que quieras cuando detecte cambios en las entradas.

Lo que no entendí es por que tienes entradas analogicAs? No serían solamente digitales? Que sensor usas.como.entrada?

Enviado desde mi Nexus 6 mediante Tapatalk
Estoy usando infrarrojos como el CNY70, (en realidad es el QRE1113).

Este es mi programa.

//2 señales, LED´s RGB//
int Detector1 = A5; //Entrada Analogica 1 como Detector1//:
int SalidaDetector1 = 2; //PIN 0 como Salida de detector1//:
int DetectorA1 = 3; //PIN 1 como entrada de Amarillo1//:
int Verde1 = 4; //PIN 2 como salida verde1//:
int Rojo1 = 5; //PIN 3 como salida Rojo1//:
int Amarillo1 = 6; //PIN4 como salida Amarillo1//:
int Detector2 = A0; //Entrada Analogica 2 como Detector2//:
int SalidaDetector2 = 7; //PIN 0 como Salida de detector2//:
int DetectorA2 = 8; //PIN 1 como entrada de Amarillo2//:
int Verde2 = 9; //PIN 2 como salida verde2//:
int Rojo2 = 10; //PIN 3 como salida Rojo2//:
int Amarillo2 = 11; //PIN4 como salida Amarillo2//:
void setup() {
pinMode(A5, INPUT); //Entrada senctor 1//:
pinMode(A0, INPUT); //Entrada sector 2//:
pinMode(2, OUTPUT); //Salida detector 1//;
pinMode(3, INPUT); //Entrada amarillo1//:
pinMode(4, OUTPUT); //Salida verde 1//:
pinMode(5, OUTPUT); //Salida Rojo 1//:
pinMode(6, OUTPUT); //Salida Amadillo1//:
pinMode(7, OUTPUT); //Salida Detector 2//:
pinMode(8, INPUT); //Entrada Amarillo 2//:
pinMode(9, OUTPUT); //Salida Verde 2//:
pinMode(10, OUTPUT); //Salida Rojo 2//:
pinMode(11, OUTPUT); //Salida Amarillo 2//:
Serial.begin(9600);
}
void loop() {
Detector1 = analogRead(5); //Detector1 = pin analogo 5//:
DetectorA1 = digitalRead(3); //Amarillo1 = pin digital 1//:
Detector2 = analogRead(0); //Detector1 = pin analogo 5//:
DetectorA2 = digitalRead(8); //Amarillo1 = pin digital 1//:
if (Detector1 == HIGH && DetectorA1 == LOW){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector1, HIGH); //Salida Detector en 1//:
digitalWrite(Verde1, LOW); //Verde Apaga//:
digitalWrite(Rojo1, HIGH); //Rojo Prende//:
digitalWrite(Amarillo1, LOW); //Amarillo Apaga//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector1, LOW); //Salida Detector en 0//:
digitalWrite(Verde1, HIGH); //Verde Enciende//:
digitalWrite(Rojo1, LOW); //Rojo Apaga//:
digitalWrite(Amarillo1, LOW); //Amarillo Apaga//:
}
if (Detector1 == HIGH && DetectorA1 == HIGH){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector1, HIGH); //Salida Detector en 1//:
digitalWrite(Verde1, LOW); //Verde Apaga//:
digitalWrite(Rojo1, HIGH); //Rojo Prende//:
digitalWrite(Amarillo1, LOW); //Amarillo Apaga//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector1, LOW); //Salida Detector en 0//:
digitalWrite(Verde1, HIGH); //Verde Enciende//:
digitalWrite(Rojo1, LOW); //Rojo Apaga//:
digitalWrite(Amarillo1, LOW); //Amarillo Apaga//:
}
if (Detector1 == LOW && DetectorA1 == HIGH){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector1, LOW); //Salida Detector en01//:
digitalWrite(Verde1, LOW); //Verde Apaga//:
digitalWrite(Rojo1, LOW); //Rojo Apaga//:
digitalWrite(Amarillo1, HIGH); //Amarillo Enciende//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector1, LOW); //Salida Detector en 0//:
digitalWrite(Verde1, HIGH); //Verde Enciende//:
digitalWrite(Rojo1, LOW); //Rojo Apaga//:
digitalWrite(Amarillo1, LOW); //Amarillo Apaga//:
}
if (Detector2 == HIGH && DetectorA2 == LOW){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector2, HIGH); //Salida Detector en 1//:
digitalWrite(Verde2, LOW); //Verde Apaga//:
digitalWrite(Rojo2, HIGH); //Rojo Prende//:
digitalWrite(Amarillo2, LOW); //Amarillo Apaga//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector2, LOW); //Salida Detector en 0//:
digitalWrite(Verde2, HIGH); //Verde Enciende//:
digitalWrite(Rojo2, LOW); //Rojo Apaga//:
digitalWrite(Amarillo2, LOW); //Amarillo Apaga//:
}
if (Detector2 == HIGH && Detector2 == HIGH){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector1, HIGH); //Salida Detector en 1//:
digitalWrite(Verde1, LOW); //Verde Apaga//:
digitalWrite(Rojo2, HIGH); //Rojo Prende//:
digitalWrite(Amarillo2, LOW); //Amarillo Apaga//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector2, LOW); //Salida Detector en 0//:
digitalWrite(Verde2, HIGH); //Verde Enciende//:
digitalWrite(Rojo2, LOW); //Rojo Apaga//:
digitalWrite(Amarillo2, LOW); //Amarillo Apaga//:
}
if (Detector2 == LOW && DetectorA2 == HIGH){ //Si Detector en 1 y Amarillo en 0//:
digitalWrite(SalidaDetector2, LOW); //Salida Detector en01//:
digitalWrite(Verde2, LOW); //Verde Apaga//:
digitalWrite(Rojo2, LOW); //Rojo Apaga//:
digitalWrite(Amarillo2, HIGH); //Amarillo Enciende//:
delay(1000); //Demora de 30 segundos//:
}
else{
digitalWrite(SalidaDetector2, LOW); //Salida Detector en 0//:
digitalWrite(Verde2, HIGH); //Verde Enciende//:
digitalWrite(Rojo2, LOW); //Rojo Apaga//:
digitalWrite(Amarillo2, LOW); //Amarillo Apaga//:
}
Serial.println(Detector1);
}
 

Gzuz

Active Member
Creo tu principal problema es que utilizas el cny70 como analógico.
El sensor te deja pasar un voltaje que el Arduino con sus entradas analógicas las convierte en un dato de 10 bits. En tu programa lees el valor analógico pero luego lo quieres utilizar como si fuese digital en los if...

Espero haberme dado a entender, deja ver si te puedo poner un ejemplo de cómo lo usaría yo

Enviado desde mi Nexus 6 mediante Tapatalk
 

Gzuz

Active Member
// declaras variables que van a contener el estado de los pines
// de entrada
byte cny1;
byte cny2;
byte cny3;
byte cny4;

void setup() {
// declaras tus pines como entrada y salidas digitales
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
//lees los pines de entrada y el estado lo almacenas
//en una variable ya declarada
cny1 = digitalRead(A0);
cny2 = digitalRead(A1);
cny3 = digitalRead(A2);
cny4 = digitalRead(A3);

// colocas las condiciones para cada led
if (cny1 == HIGH && cny2 == LOW) {
digitalWrite(0, HIGH);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
} else {
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
}
if (cny3 == HIGH && cny4 == LOW) {
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
} else {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
}
}


y aqui esta donde lo estuve simulando y si funcionaba




espero te funcione

Saludos!
 
Arriba