Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 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