Hola, como estan?
Bueno, estoy teniendo un problema en mi proyecto con arduino. El Carro robot de 4 ruedas que estoy haciendo tiene un problema; este tendria que actuar en base a los colores que tiene, por ejemplo si detecta negro avanza, si detecta blanco para. Para esto estoy usando 4 motores CC y un sensor RGB tcs3200.
Hay una linea de mi codigo que me esta impidiendo hacer la accion de leer los colores al mismo tiempo que avanzo, o leer los colores y luego avanzar. Esta linea es la 38 [Serial.begin(9600);], si la dejo el programa solo lee los colores y el robot no avanza, si la saco el robot no lee los colores pero avanza.
Yo quiero una forma de poder juntar estas cosas, asi le puedo dar ordenes como: mientras sea negro, avanzar, hasta que sea blanco o cosas asi
Desde ya muchas gracias!
#include <Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(6, 7); // RX (pin 6) y TX (pin 7)
// Definición de pines
Servo servoMotor;
int S0 = 8;
int S1 = 9;
int S2 = 10;
int S3 = 11;
int salidaTCS = 12;
const int IN1 = 0;
const int IN2 = 1;
const int IN3 = 2;
const int IN4 = 3;
void GirarDerechaAdelante();
void GirarIzquierdaAdelante();
void Avanzar();
void setup() {
// Configura los pines como salidas
bluetooth.begin(9600);
servoMotor.attach(11);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(salidaTCS, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
digitalWrite(S0, HIGH); // Establece la frecuencia de salida
digitalWrite(S1, LOW); // del módulo al 20 por ciento
Serial.begin(9600); // Inicializa el monitor serie a 9600 bps
}
void GirarDER()
{
digitalWrite(IN3,0);
digitalWrite(IN4,1);
}
void GirarIZQ()
{
digitalWrite(IN1,0);
digitalWrite(IN2,1);
}
void giro180(){
digitalWrite(IN1,0);
digitalWrite(IN2,1);
digitalWrite(IN3,1);
digitalWrite(IN4,0);
}
void Avanzar()
{
GirarDER();
GirarIZQ();
}
void Parar(){
digitalWrite(IN1,0);
digitalWrite(IN2,0);
digitalWrite(IN3,0);
digitalWrite(IN4,0);
}
void loop() {
digitalWrite(S2, LOW); // Establece fotodiodos con filtro rojo
digitalWrite(S3, LOW);
int azul = pulseIn(salidaTCS, LOW); // Obtiene la duración del pulso de salida del sensor
delay(200);
digitalWrite(S2, HIGH); // Establece fotodiodos con filtro verde
digitalWrite(S3, LOW);
int verde = pulseIn(salidaTCS, LOW);
delay(200);
digitalWrite(S2, LOW); // Establece fotodiodos con filtro azul
digitalWrite(S3, HIGH);
int rojo = pulseIn(salidaTCS, LOW);
delay(200);
Serial.print("R:");
Serial.print(rojo);
Serial.print("\t");
Serial.print("V:");
Serial.print(verde);
Serial.print("\t");
Serial.print("A:");
Serial.println(azul);
Avanzar();
}