Buenas noches.
Estoy realizando un proyecto que incluye:
1.Dos Leds y un pulsador.
2.Un Led RGB, un servo y un Fotorresistor.
3.Un sensor ultrasonico.
Cuando inicio el simulador de mi proyecto en Tinkercad, todo funciona como debería menos los dos Leds. Se supone que al presionar un pulsador, deberian encenderse ambos Leds, pero eso no sucede. Aclaro que cada parte de este proyecto (1,2 y 3) los realice por separado y al final los junte en un solo sketch.
Mi conocimiento en Arduino no es amplio y me estoy manejando con el material que mi profesor me ha dado e internet.
Acá dejo el código y una captura de pantalla del circuito:
#include <Servo.h>
Servo SERVOFARITO;
const int LED1 = 12; //CASA
const int LED2 = 13; //CASA
const int PULSADOR = 8; //CASA
int push_lee = 0; //CASA
int estadoLed = 0; //CASA
int estadoAnterior = 0; //CASA
const int LEDFARO1 = 7; //FARO
const int LEDFARO2 = 4; //FARO
const int LEDFARO3 = 2; //FARO
const int LDRPin = A0; //Fotorresistencia del FARO
const int luz = 300; //FARO
int pos = 10; //FARO
const int TRIG = 6; //SENSOR
const int ECHO = 5; //SENSOR
const int BUZ=10; //SENSOR
long distancia; /*más de 8 digitos (en centimetros).*/ //SENSOR
long tiempo; /*calcula el tiempo que tarda en ir y volver ese sonido.*/ //SENSOR
void setup()
{
SERVOFARITO.attach(9);
pinMode(PULSADOR, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LEDFARO1,OUTPUT);
pinMode(LEDFARO2,OUTPUT);
pinMode(LEDFARO3,OUTPUT);
pinMode(LDRPin, INPUT);
pinMode(6, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/ /*Salida.*/
pinMode(5, INPUT); /*Entrada.*/
pinMode(BUZ, OUTPUT); /*Pin 10 de salida (BUZZER)*/
Serial.begin(9600);
}
void loop()
{
//CASA
push_lee = digitalRead(PULSADOR);
if ((push_lee == HIGH) && (estadoAnterior == LOW))
{
estadoLed = 1-estadoLed;
delay(10);
}
estadoAnterior = push_lee;
if (estadoLed == 1)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
}
else
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
}
//FARO
int entrada = analogRead(LDRPin);
Serial.print("valor de lectura de la fotoresistencia es: ");
Serial.println(entrada);
delay(200);
if (entrada < luz)
{
digitalWrite(LEDFARO1, HIGH);
digitalWrite(LEDFARO2, HIGH);
digitalWrite(LEDFARO3, HIGH);
for (pos = 10; pos <= 170; pos ++)
{
SERVOFARITO.write(pos);
delay(5); //Para que se note el movimiento [SI NO EL SERVO SE MOVERA A SU VELOCIDAD HABITUAL]
}
delay(800); //Cuando llegue a una esquina, se detenga un breve momento.
for (pos = 170; pos >= 10; pos --)
{
SERVOFARITO.write(pos);
delay(5); //Para que se note el movimiento [SI NO EL SERVO SE MOVERA A SU VELOCIDAD HABITUAL]
}
delay(800); //Cuando llegue a una esquina, se detenga un breve momento.
}
else
digitalWrite(LEDFARO1, LOW);
digitalWrite(LEDFARO2, LOW);
digitalWrite(LEDFARO3, LOW);
SERVOFARITO.write(0); //Al ser la entrada de luz mayor a 300, el servo se posiciona en 0°.
//SENSOR
digitalWrite(6,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5); /*Espera 5 Microsegundos(Tiempo mas corto)*/
digitalWrite(6, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10); /*Esperamos 10µs. El pulso sigue active este tiempo*/
digitalWrite(6, LOW); /* Cortamos el pulso y a esperar el echo*/
tiempo=pulseIn(5, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 8 empieza a recibir el rebote, HIGH, hasta que
deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
/*Monitorización en centímetros por el monitor serial*/
if (distancia <= 20 )
{
tone(BUZ,440);
delay(300/distancia);
noTone(BUZ);
}
else
{
digitalWrite(BUZ,LOW);
delay(1000);
}
Serial.print("Distancia ");
Serial.print(distancia);
Serial.println(" cm");
delay(1000);
}
PD: Busqué por todas partes a ver si encontraba la solución y nada. Mi último recurso es pedir ayuda acá. Gracias