Documentos de Académico
Documentos de Profesional
Documentos de Cultura
sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=0ahUKEwiGtIHWhODSAhXMTS
YKHV9LBEoQFgg2MAQ&url=http%3A%2F%2Flearn.teslabem.com%2Fcomo-armar-un-sumobot
%2F&usg=AFQjCNFLqYLwzrLPiOTAfxyJh_SKVJU4_A
zumo
// Conexiones
int pwma = 3;
int pwmb = 5;
int ai1 = 2;
int ai2 = 4;
int bi1 = 6;
int bi2 = 7;
int LED = 13;
// Variables
int lectura_linea_derecha = 0;
int lectura_linea_izquierda = 0;
int lectura_distancia_derecha = 0;
int lectura_distancia_izquierda = 0;
// Inicialización
void setup() {
pinMode(pwma,OUTPUT);
pinMode(pwmb,OUTPUT);
pinMode(ai1,OUTPUT);
pinMode(ai2,OUTPUT);
pinMode(bi1,OUTPUT);
pinMode(bi2,OUTPUT);
analogWrite(pwma,100);
analogWrite(pwmb,100);
}
// Rutina
void loop() {
lectura_linea_izquierda = analogRead(A0); // Lectura del sensor de
línea izquierdo
lectura_linea_derecha = analogRead(A1); // Lectura del sensor de línea
derecho
lectura_distancia_izquierda = analogRead(A2); // Lectura de sensor de
distancia izquierdo
lectura_distancia_derecha = analogRead(A3); // Lectura de sensor de
distancia derecho
// ¡Detección de línea por el lado izquierdo!
if(lectura_linea_izquierda < 30){
reversa();
delay(500);
derecha();
delay(100);
adelante();
}
// ¡Detección de línea por el lado derecho!
if(lectura_linea_derecha < 30){
reversa();
delay(500);
izquierda();
delay(100);
adelante();
}
// ¡Detección de objeto por el lado izquierdo!
if(lectura_distancia_izquierda > 200){
izquierda();
delay(1000);
adelante();
}
// ¡Detección de objeto por el lado derecho!
if(lectura_distancia_derecha > 200){
derecha();
delay(1000);
adelante();
}
}
void adelante(){
digitalWrite(ai1,HIGH);
digitalWrite(ai2,LOW);
digitalWrite(bi1,HIGH);
digitalWrite(bi2,LOW);
}
void derecha(){
digitalWrite(ai1,LOW);
digitalWrite(ai2,HIGH);
digitalWrite(bi1,HIGH);
digitalWrite(bi2,LOW);
}
void izquierda(){
digitalWrite(ai1,HIGH);
digitalWrite(ai2,LOW);
digitalWrite(bi1,LOW);
digitalWrite(bi2,HIGH);
}
void reversa(){
digitalWrite(ai1,LOW);
digitalWrite(ai2,HIGH);
digitalWrite(bi1,LOW);
digitalWrite(bi2,HIGH);
}
void detener(){
digitalWrite(ai1,LOW);
digitalWrite(ai2,LOW);
digitalWrite(bi1,LOW);
digitalWrite(bi2,LOW);
}
/*Sumobot sobre suelo blanco y círculo negro
el valor de color negro en los sensores infrarrojos
es de 480 .Se usó la comunicación serial para obtener estos valores.
*/
//Declaración de los pines
int IN1 = 5; // Input1 conectada al pin 5
int IN2 = 6; // Input2 conectada al pin 6 MOTOR DERECHO
int ENA = 10; // ENB conectada al pin 12 de Arduino
long distancia;
long tiempo;
//Declaración de I/O's
void setup()
{
pinMode (sensFs, OUTPUT); /*activación del pin 7 como salida: para el pulso ultrasónico*/
pinMode (sensFe, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del
ultrasonido*/
pinMode (sensTs, OUTPUT); /*activación del pin 9 como salida: para el pulso ultrasónico*/
pinMode (sensTe, INPUT); /*activación del pin 10 como entrada: tiempo del rebote del
ultrasonido*/
void loop()
{
{
// lectura del pin 1
int buttonStateTi = digitalRead(sensTrasi);
// imprision del resultado
Serial.println(buttonStateTi);
delay(100); // delay in between reads for stability
if(buttonStateTi=1){
blancoatrasizquierda();
}/*
else
{
Buscar();
}*/
{
// lectura del pin 1
int buttonStateTd = digitalRead(sensTrasd);
// imprision del resultado
Serial.println(buttonStateTd);
delay(100); // delay in between reads for stability
if(buttonStateTd=1){
blancoatrasderecha();
}/*
else
{
Buscar();
}*/
/*
if(digitalRead (sensFizq)==HIGH)
{
golpeFizq();
}
else
{
Buscar();
}
*/
/*
if(digitalRead (sensFizq)==HIGH)
{
golpeTizq();
}
else
{
Buscar();
}
*/
}
}
}
//---------------MOVIMIENTOS--------------
int adelante () {
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW); //motor izquierdo
// Aplicamos PWM al pin ENB, haciendo girar el motor, cada 0.2 seg aumenta la velocidad
/*analogWrite(ENB,70);
delay(2);
analogWrite(ENB,120);
delay(2);*/
analogWrite(ENB,160);
/*delay(2);
analogWrite(ENB,255);
delay(2000);*/
int atras()
{
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH); //motor izquierdo
// Aplicamos PWM al pin ENB, haciendo girar el motor, cada 0.2 seg aumenta la velocidad
/*analogWrite(ENB,70);
delay(2);
analogWrite(ENB,120);
delay(2);*/
analogWrite(ENB,160);
/*delay(2);
analogWrite(ENB,255);
delay(2000);*/
int izquierda()
{
delay(100);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH); //motor izquierdo
// Aplicamos PWM al pin ENB, haciendo girar el motor, cada 0.2 seg aumenta la velocidad
/*analogWrite(ENB,70);
delay(2);
analogWrite(ENB,120);
delay(2);*/
analogWrite(ENB,100);
/*delay(2);
analogWrite(ENB,255);
delay(2000);*/
Francesc
Newbie
Posts: 2
Karma: 0 [add]
//--------------GOLPES-------------------
int Buscar()
{
izquierda();
delay(2000);
adelante();
delay(2000);
}
int golpeFder()
{
adelante();
delay(2000);
/*adelante();
delay(2000);
atras();
delay(2000);*/
}
/*
int golpeFizq()
{
atras();
delay(1000) ;
izquierda();
delay(300);
adelante();
}*/
int golpeTder()
{
atras();
delay(2000);
/*atras();
delay(2000);
adelante();
delay(2000);*/
}
/*
int golpeTizq()
{
adelante();
delay(1000);
derecha();
delay(300);
atras();
}*/
int blancodelanteizq()
{
atras();
delay(1000);
derecha();
delay(2000);
adelante();
delay(1000);
}
int blancodelanteder()
{
atras();
delay(1000);
izquierda();
delay(2000);
adelante();
delay(1000);
}
int blancoatrasizquierda()
{
adelante();
delay(1000);
derecha();
delay(2000);
adelante();
delay(1000);
}
int blancoatrasderecha()
{
adelante();
delay(1000);
izquierda();
delay(2000);
adelante();
delay(1000);
}