Created
March 16, 2020 04:11
-
-
Save Kenneth9951/25b8c1eac85e264a599715d761ba1681 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Programacion de SEGUIDOR DE LINEA con PWM usando ARDUINO, CNY70, DRIVER L298N. | |
Realizado por:THEFENIX-THE FENIX-EMIC TRON.*/ | |
int infraPin1 = 10; // pin del infrarrojos utilizado como entrada digital en el lado derecho(#1). | |
int infraPin2 = 11; // pin del infrarrojos utilizado como entrada digital en el lado izquierdo(#2). | |
int valorInfra1 = 0; // Valor inicial de la lectura digital del infrarrojo #1. | |
int valorInfra2 = 0; // Valor inicial de la lectura digital del infrarrojo #2. | |
int ENB = 5; //ENB conectado al pin 5 con señal PWM | |
int ENA = 9; //ENA conectado al pin 9 con señal PWM | |
int OUTPUT4 = 4; // Output4 conectada al pin 4. | |
int OUTPUT3 = 3; // Output3 conectada al pin 3. | |
int OUTPUT2 = 6; // Output2 conectada al pin 6. | |
int OUTPUT1 = 7; // Output1 conectada al pin 7. | |
void setup() { | |
Serial.begin(9600); // Comenzamos comunicacion serial. | |
pinMode(infraPin1, INPUT); // Inicializa el pin 1 como entrada digital. | |
pinMode(infraPin2, INPUT); // Inicializa el pin 2 como entrada digital. | |
pinMode (ENA, OUTPUT); // Inicializa el pin 7 como salida digital. | |
pinMode (ENB, OUTPUT); // Inicializa el pin 6 como salida digital. | |
pinMode (OUTPUT1, OUTPUT); // Inicializa el pin 7 como salida digital. | |
pinMode (OUTPUT2, OUTPUT); // Inicializa el pin 6 como salida digital. | |
pinMode (OUTPUT3, OUTPUT); // Inicializa el pin 3 como salida digital. | |
pinMode (OUTPUT4, OUTPUT); // Inicializa el pin 4 como salida digital. | |
} | |
void loop() { | |
valorInfra1 = digitalRead(infraPin1); // Lee el valor de la entrada 10, esto es, el valor que lee el infrarrojo #1. | |
Serial.print("SENSOR1 "); //Imprimimos el texto "SENSOR1 " | |
Serial.println(valorInfra1); //Imprimimos la lectura del infrarrojo #1. | |
valorInfra2 = digitalRead(infraPin2); // Lee el valor de la entrada 11, esto es, el valor que lee el infrarrojo #2. | |
Serial.print("SENSOR2 "); //Imprimimos el texto "SENSOR2 " | |
Serial.println(valorInfra2); //Imprimimos la lectura del infrarrojo #2. | |
if(valorInfra1==0) // Si la lectura del infrarrojo #1 es 0, entonces se cumplira una de las siguientes condiciones: | |
{ | |
if(valorInfra2==0){ // Si la lectura del infrarrojo #2 es 0, es decir los dos sensores estan sobre la linea negra, entonces los dos motores avanzaran en linea recta. | |
digitalWrite(OUTPUT1,0); | |
digitalWrite(OUTPUT2,1); | |
digitalWrite(OUTPUT3,1); | |
digitalWrite(OUTPUT4,0); | |
analogWrite(ENA,150); // El pin ENA maneja los pines output1 y output2 | |
analogWrite(ENB,150); // El pin ENA maneja los pines output3 y output4 | |
} | |
else // Si la lectura del infrarrojo #2 es 1, el sensor#1 esta sobre la linea negra y el sensor#2 esta fuera de la linea negra, entonces solo una rueda gira y esto causara el giro. | |
{ | |
digitalWrite(OUTPUT1,0); | |
digitalWrite(OUTPUT2,0); | |
digitalWrite(OUTPUT3,1); | |
digitalWrite(OUTPUT4,0); | |
analogWrite(ENA,0); | |
analogWrite(ENB,150); | |
} | |
} | |
else // Si la lectura del infrarrojo #1 no es 0, sera 1, se daran las siguientes posibilidades: | |
{if(valorInfra2==0) // Como el sensor#1 esta fuera de la linea negra y el sensor#2 esta sobre la linea negra, entonces solo una rueda gira y esto causara el giro. | |
{ | |
digitalWrite(OUTPUT3,0); | |
digitalWrite(OUTPUT4,0); | |
digitalWrite(OUTPUT1,0); | |
digitalWrite(OUTPUT2,1); | |
analogWrite(ENA,150); | |
analogWrite(ENB,0); | |
} | |
else{ // si ambos sensores dan lectura 1, los dos estan fuera de la linea negra, para que vuelva a su trayectoria tiene que retroceder. | |
digitalWrite(OUTPUT1,1); | |
digitalWrite(OUTPUT2,0); | |
digitalWrite(OUTPUT3,0); | |
digitalWrite(OUTPUT4,1); | |
analogWrite(ENA,150); | |
analogWrite(ENB,150); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment