0% found this document useful (0 votes)
26 views11 pages

Practicas (01-08) Robots Moviles

The document contains code for controlling a robot using Arduino. It defines variables for motor pins and movement commands like forward, reverse, left and right turns. The code progresses from basic movement commands to using buttons/keyboard, line following sensors and detecting stations along a track. The final section describes making the robot follow a line using three sensors, detect stations using all sensors on the line, and log its progress to the serial monitor.

Uploaded by

Mayra Vilchis
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views11 pages

Practicas (01-08) Robots Moviles

The document contains code for controlling a robot using Arduino. It defines variables for motor pins and movement commands like forward, reverse, left and right turns. The code progresses from basic movement commands to using buttons/keyboard, line following sensors and detecting stations along a track. The final section describes making the robot follow a line using three sensors, detect stations using all sensors on the line, and log its progress to the serial monitor.

Uploaded by

Mayra Vilchis
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 11

/PRACTICA 2: "CONTROL DE DESPLAZAMIENTO BÁSICOS" 10/11/2022

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3a = 8;
byte m3r = 7;
byte m4r = 6;
byte m4a = 5;
byte mov = 0;

void setup() {
}

void loop() {
if (mov==0){
adelante (127, 2000);
adelante (255, 1000);
detenerse (1000);
reversa (127, 2000);
reversa (255, 1000);
detenerse (1000);
mov++;
}
}
void detenerse (int t){
analogWrite (m1a, 0);
analogWrite (m1r, 0);
analogWrite (m2a, 0);
analogWrite (m2r, 0);
analogWrite (m3a, 0);
analogWrite (m3r, 0);
analogWrite (m4a, 0);
analogWrite (m4r, 0);
delay(t);
}

void adelante (int vel, int t){


analogWrite (m1r, 0);
analogWrite (m2r, 0);
analogWrite (m3r, 0);
analogWrite (m4r, 0);
analogWrite (m1a, vel);
analogWrite (m2a, vel);
analogWrite (m3a, vel);
analogWrite (m4a, vel);
delay(t);
}

void reversa (int vel, int t){


analogWrite (m1a, 0);
analogWrite (m2a, 0);
analogWrite (m3a, 0);
analogWrite (m4a, 0);
analogWrite (m1r, vel);
analogWrite (m2r, vel);
analogWrite (m3r, vel);
analogWrite (m4r, vel);
delay(t);

//PRACTICA 4: "CONTROL DE ROBOT, VUELTA CERRADA CON SUBRUTINAS" 14/11/2022

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3r = 8;
byte m3a = 7;
byte m4r = 6;
byte m4a = 5;
byte mov = 0;

void setup() {
}

void loop() {
if(mov==0){
derecha(127, 3000);
izquierda(127, 3000);
detenerse(200);
mov++;
}
}

void derecha(int vel, int t) {


analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m2a, 0);
analogWrite(m3a, 0);
analogWrite(m1r, vel);
analogWrite(m4r, vel);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
delay(t);
}

void izquierda(int vel, int t) {


analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, 0);
analogWrite(m4a, 0);
analogWrite(m1a, vel);
analogWrite(m4a, vel);
analogWrite(m2r, vel);
analogWrite(m3r, vel);
delay(t);
}

void detenerse(int t) {
analogWrite(m1a, 0);
analogWrite(m1r, 0);
analogWrite(m2a, 0);
analogWrite(m2r, 0);
analogWrite(m3a, 0);
analogWrite(m3r, 0);
analogWrite(m4a, 0);
analogWrite(m4r, 0);
delay(t);
}

//PRACTICA 3: "CONTROL DE ROBOT VUELTA ABIERTA CON SUBRUTINAS" 14/11/2022

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3r = 8;
byte m3a = 7;
byte m4r = 6;
byte m4a = 5;
byte mov = 0;

void setup() {
}

void loop() {
if(mov==0){
derecha(255, 5000);
izquierda(255, 5000);
detenerse(200);
mov++;
}

}
void derecha(int vel, int t) {
analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m2a, 0);
analogWrite(m3a, 0);
analogWrite(m1a, vel);
analogWrite(m4a, vel);
delay(t);
}
void izquierda(int vel, int t) {
analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, 0);
analogWrite(m4a, 0);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
delay(t);
}
void detenerse(int t) {
analogWrite(m1a, 0);
analogWrite(m1r, 0);
analogWrite(m2a, 0);
analogWrite(m2r, 0);
analogWrite(m3a, 0);
analogWrite(m3r, 0);
analogWrite(m4a, 0);
analogWrite(m4r, 0);
delay(t);
}

-------------------------------

//PRACTICA 5: "CONTROL DE ROBOT CON TECLADO" 14/11/2022

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3r = 8;
byte m3a = 7;
byte m4r = 6;
byte m4a = 5;
int tecla = 0;

void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available()) {
tecla = Serial.read();
if (tecla == 'd' || tecla == 'D') detenerse ();
else if (tecla == 'a') adelante(127);
else if (tecla == 'A') adelante(255);
else if (tecla == 'r') reversa(127);
else if (tecla == 'R') reversa(255);
else if (tecla == 'h') giroabiertoder(127);
else if (tecla == 'i') giroabiertoizq(127);
else if (tecla == 'b') girocerradoder(127);
else if (tecla == 'c') girocerradoizq(127);
}
}

void detenerse () {
analogWrite(m1r, 0);
analogWrite(m1a, 0);
analogWrite(m2r, 0);
analogWrite(m2a, 0);
analogWrite(m3r, 0);
analogWrite(m3a, 0);
analogWrite(m4r, 0);
analogWrite(m4a, 0);
}
void adelante(int vel) {
analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, vel);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
analogWrite(m4a, vel);
}
void reversa(int vel) {
analogWrite(m1a, 0);
analogWrite(m2a, 0);
analogWrite(m3a, 0);
analogWrite(m4a, 0);
analogWrite(m1r, vel);
analogWrite(m2r, vel);
analogWrite(m3r, vel);
analogWrite(m4r, vel);
}
void giroabiertoder(int vel) {
analogWrite(m1r, 0);
analogWrite(m2a, 0);
analogWrite(m2r, 0);
analogWrite(m3a, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, vel);
analogWrite(m4a, vel);
}
void giroabiertoizq(int vel) {
analogWrite(m1r, 0);
analogWrite(m1a, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m4a, 0);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
}
void girocerradoder(int vel) {
analogWrite(m1r, 0);
analogWrite(m2a, 0);
analogWrite(m3a, 0);
analogWrite(m4r, 0);
analogWrite(m1a, vel);
analogWrite(m4a, vel);
analogWrite(m2r, vel);
analogWrite(m3r, vel);
}
void girocerradoizq(int vel) {
analogWrite(m1a, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4a, 0);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
analogWrite(m1r, vel);
analogWrite(m4r, vel);
}
-----------------------------------------

/PRACTICA 6: "CONTROL DE ROBOT CON SENSOR DE SEGUIDOR DE LINEA" 16/11/2022


#define linea 0
#define nolinea 1

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3r = 8;
byte m3a = 7;
byte m4r = 6;
byte m4a = 5;
byte sd = 27, sc = 29, si = 31;
byte Derecha, Centro, Izquierda;

void setup() {
pinMode(sd, INPUT);
pinMode(sc, INPUT);
pinMode(si, INPUT);
}

void loop() {
Derecha = digitalRead(sd);
Centro = digitalRead(sc);
Izquierda = digitalRead(si);

if (Derecha == nolinea && Centro == linea && Izquierda == nolinea) {


adelante(127);
}

if (Derecha == nolinea && Centro == nolinea && Izquierda == linea) {


GiroabiertoIzq(127);
}

if (Derecha == linea && Centro == nolinea && Izquierda == nolinea) {


GiroabiertoDer(127);
}

if (Derecha == nolinea && Centro == nolinea && Izquierda == nolinea) {


reversa(127);
}
}
void adelante (int vel) {
analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, vel);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
analogWrite(m4a, vel);
}

void reversa (int vel) {


analogWrite(m1a, 0);
analogWrite(m2a, 0);
analogWrite(m3a, 0);
analogWrite(m4a, 0);
analogWrite(m1r, vel);
analogWrite(m2r, vel);
analogWrite(m3r, vel);
analogWrite(m4r, vel);
}

void GiroabiertoDer (int vel) {


analogWrite(m1r, 0);
analogWrite(m2a, 0);
analogWrite(m2r, 0);
analogWrite(m3a, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m1a, vel);
analogWrite(m4a, vel);
}

void GiroabiertoIzq (int vel) {


analogWrite(m1a, 0);
analogWrite(m1r, 0);
analogWrite(m2r, 0);
analogWrite(m3r, 0);
analogWrite(m4r, 0);
analogWrite(m4a, 0);
analogWrite(m2a, vel);
analogWrite(m3a, vel);
}
---------------------------------------

//PRACTICA 7: "CONTROL DE ROBOT CON SENSOR SEGUIDOR DE LINEA CON ESTACIONES"


17/11/2022

#define linea 0
#define nolinea 1

byte m1r = 12;


byte m1a = 11;
byte m2r = 10;
byte m2a = 9;
byte m3r = 8;
byte m3a = 7;
byte m4r = 6;
byte m4a = 5;
byte sd=27, sc=29, si=31;
byte derecha, centro, izquierda;
byte estaciones = 0;

void setup() {
pinMode(sd, INPUT);
pinMode(sc, INPUT);
pinMode(si, INPUT);
Serial.begin(9600);
}

void loop() {
derecha = digitalRead(sd);
centro = digitalRead(sc);
izquierda = digitalRead(si);

if (izquierda == nolinea && centro == linea && derecha == nolinea) {


adelante(127);
}
if (izquierda == linea && centro == nolinea && derecha == nolinea) {
giroabiertoizq(127);
}
if (izquierda == nolinea && centro == nolinea && derecha == linea) {
giroabiertoder(127);
}
if (izquierda == nolinea && centro == nolinea && derecha == nolinea){
reversa(127);
}
if (izquierda == linea && centro == linea && derecha == linea && estaciones < 10)
{
estaciones++;
detenerse(5000);
adelante(127);
delay(100);
}
}

void detenerse(int t) {
analogWrite(m1a,0);
analogWrite(m1r,0);
analogWrite(m2a,0);
analogWrite(m2r,0);
analogWrite(m3a,0);
analogWrite(m3r,0);
analogWrite(m4a,0);
analogWrite(m4r,0);
Serial.println("estacion");
delay(t);
}

void adelante(int vel) {


analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
analogWrite(m1a,vel);
analogWrite(m2a,vel);
analogWrite(m3a,vel);
analogWrite(m4a,vel);
Serial.println("adelante");
}

void reversa(int vel) {


analogWrite(m1a,0);
analogWrite(m2a,0);
analogWrite(m3a,0);
analogWrite(m4a,0);
analogWrite(m1r,vel);
analogWrite(m2r,vel);
analogWrite(m3r,vel);
analogWrite(m4r,vel);
Serial.println("reversa");
}

void giroabiertoder(int vel) {


analogWrite(m1a,vel);
analogWrite(m4a,vel);
analogWrite(m2a,0);
analogWrite(m3a,0);
analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
Serial.println("giro derecha");
}

void giroabiertoizq(int vel) {


analogWrite(m3a,vel);
analogWrite(m2a,vel);
analogWrite(m1a,0);
analogWrite(m4a,0);
analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
Serial.println("giro izquierda");
}
--------------------------------------------------------

/PRACTICA 8: "CONTROL DE ROBOT CON SENSOR SEGUIDOR DE LINEA Y SENSOR ULTRASÓNICO"


23/11/2022

#define linea 0
#define nolinea 1
byte m1r=12;
byte m1a=11;
byte m2r=10;
byte m2a=9;
byte m3r=8;
byte m3a=7;
byte m4r=6;
byte m4a=5;
byte pindisparo=2;
byte pineco=3;
byte sd=27, sc=29, si=31;
byte Derecha, Centro, Izquierda;
long TiempoMs;
int Dist;

void setup() {
pinMode(sd,INPUT);
pinMode(sc,INPUT);
pinMode(si,INPUT);
pinMode(pindisparo,OUTPUT);
pinMode(pineco,INPUT);
Serial.begin(9600);
}

void loop() {
iniciarDisparo();
TiempoMs=pulseIn(pineco, HIGH);
Dist=TiempoMs*0.01715;
Serial.println (Dist);
if(Dist>=90){
Derecha=digitalRead(sd);
Centro=digitalRead(sc);
Izquierda=digitalRead(si);
if(Izquierda == nolinea && Centro == linea && Derecha == nolinea) {
adelante(127);
}
if(Izquierda == linea && Centro == nolinea && Derecha == nolinea) {
abiertai(127);
}
if(Izquierda == nolinea && Centro == nolinea && Derecha == linea) {
abiertad(127);
}
if(Izquierda == nolinea && Centro == nolinea && Derecha == nolinea) {
reversa(127);
}
if(Derecha == linea && Centro == linea && Izquierda == linea){
detenerse(5000);
adelante(127);
delay(100);
}
}
if(Dist>=40 && Dist<80){
Derecha = digitalRead(sd);
Centro = digitalRead(sc);
Izquierda = digitalRead(si);
if(Izquierda == nolinea && Centro == linea && Derecha == nolinea) {
adelante(80);
}
if(Izquierda == linea && Centro == nolinea && Derecha == nolinea) {
abiertai(80);
}
if(Izquierda == nolinea && Centro == nolinea && Derecha == linea) {
abiertad(80);
}
if(Izquierda == nolinea && Centro == nolinea && Derecha == nolinea) {
reversa(80);
}
if(Derecha == linea && Centro == linea && Izquierda == linea){
detenerse(5000);
adelante(80);
delay(100);
}
}
if(Dist<40){
detenerse(80);
}
delay(100);
}

void iniciarDisparo(){
digitalWrite(pindisparo,LOW);
delayMicroseconds(2);
digitalWrite(pindisparo,HIGH);
delayMicroseconds(10);
digitalWrite(pindisparo,LOW);
}

void detenerse(int t) {
analogWrite(m1a,0);
analogWrite(m1r,0);
analogWrite(m2a,0);
analogWrite(m2r,0);
analogWrite(m3a,0);
analogWrite(m3r,0);
analogWrite(m4a,0);
analogWrite(m4r,0);
delay(t);
}

void adelante(int vel) {


analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
analogWrite(m1a,vel);
analogWrite(m2a,vel);
analogWrite(m3a,vel);
analogWrite(m4a,vel);
}

void reversa(int vel) {


analogWrite(m1a,0);
analogWrite(m2a,0);
analogWrite(m3a,0);
analogWrite(m4a,0);
analogWrite(m1r,vel);
analogWrite(m2r,vel);
analogWrite(m3r,vel);
analogWrite(m4r,vel);
}

void abiertad(int vel) {


analogWrite(m1a,vel);
analogWrite(m4a,vel);
analogWrite(m2a,0);
analogWrite(m3a,0);
analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
}

void abiertai(int vel) {


analogWrite(m3a,vel);
analogWrite(m2a,vel);
analogWrite(m1a,0);
analogWrite(m4a,0);
analogWrite(m1r,0);
analogWrite(m2r,0);
analogWrite(m3r,0);
analogWrite(m4r,0);
}

You might also like