Components and supplies
Arduino Mega 2560
Dual H-Bridge motor drivers L298
Tools and machines
Drill / Driver, Cordless
Plier, Cutting
Apps and platforms
Arduino IDE
Project description
Code
Escoriabot
arduino
1/* include library */ 2#include <Servo.h> // Add Servo library 3#include <SoftwareSerial.h> // libreria que permite establecer pines digitales 4#include <AFMotor.h> 5 6 7SoftwareSerial miBT(19, 18); // pin 19 como RX, pin 18 como TX 8 9// ----------- Puenteh 10 11int ENA = 40; // ENA de L298N a pin digital 5 gris 12int ENB = 50; // ENb de L298N a pin digital 5 naranja 13//derecho 14int IN1 = 42; // IN1 de L298N a pin digital 2 violeta 15int IN2 = 44; // IN2 de L298N a pin digital 3 azul 16//izquierdo 17int IN3 = 46; // IN2 de L298N a pin digital 2 verde 18int IN4 = 48; // IN3 de L298N a pin digital 3 amarillo 19int ALIMENTACION1 = 52; // pin de alimentacion siempre on 20 21int speedCar = 1024; // variable para almacenar valor de velocidad 22int speedMAX = 1024; // variable para almacenar valor de velocidad 23int speedMED = 768; // variable para almacenar valor de velocidad 24int speedMIN = 130; // variable para almacenar valor de velocidad 25int speedOff = 0 ; 26 27// ---------- Servo 28Servo myservoH; // Define any servo name 29int contador; 30int powerServ = 30; 31 32 33// ----------- definir led 34int PinLED0 = 32; //blanco adelante 35int PinLED1 = 34; //blanco adelante 36int PinLED2 = 36; //rojo 37int PinLED3 = 38; //rojo 38 39void setup(){ 40 41 Serial.begin(38400); 42 Serial1.begin(38400); 43 44 pinMode(ALIMENTACION1, OUTPUT); // ENB como salida 45 digitalWrite(ALIMENTACION1,HIGH); 46 47 // l298n 48 pinMode(IN1, OUTPUT); // IN1 como salida 49 pinMode(IN2, OUTPUT); // IN2 como salida 50 pinMode(ENA, OUTPUT); // ENA como salida 51 pinMode(IN3, OUTPUT); // IN3 como salida 52 pinMode(IN4, OUTPUT); // IN4 como salida 53 pinMode(ENB, OUTPUT); // ENB como salida 54 55 //Servos 56 myservoH.attach (2); // Define the servo signal pins 57 pinMode(powerServ, OUTPUT); // IN1 como salida 58 digitalWrite(powerServ, HIGH); 59 60 // LED 61 62 pinMode(PinLED0, OUTPUT); 63 pinMode(PinLED1, OUTPUT); 64 pinMode(PinLED2, OUTPUT); 65 pinMode(PinLED3, OUTPUT); 66 67} 68 69void loop(){ 70 71 //------------Bluetooth 72 if (Serial1.available()){ // si hay informacion disponible desde modulo 73 char DATO = Serial1.read(); // almacena en DATO el caracter recibido desde modulo 74 Serial.write(DATO); 75 Serial.println('\ \ 76'); 77 Serial.println("dato" + DATO); 78 79 80 if(DATO == '1') { MotorForward();} 81 else if(DATO == '3') {MotorBackward();} 82 else if(DATO == '4') {TurnLeft();} 83 else if(DATO == '2') {TurnRight();} 84 else if(DATO == '0') {MotorStop(); } //motor stop 85 86 else if(DATO == 'a') SetSpeedCarMax (); 87 else if(DATO == 'b') SetSpeedCarUp(); 88 else if(DATO == 'c') SetSpeedCarDown(); 89 90 else if(DATO == 'd') {goLuces();} 91 else if(DATO == 'e') {goLucesOff();} 92 else if(DATO == 'f') {led_blink();} 93 94 else if(DATO == 'h') { rotarCabeza_H_I(); }//rotar horizontal izquierda 95 else if(DATO == 'i') { rotarCabeza_H_D(); } //rotar horizontal derecha 96 else if(DATO == 'j') { rotarCabeza_H_90(); } //rotar horizontal derecha 97 else if(DATO == 'k') { goLucesColor(); } 98 else if(DATO == 'l') { goLucesOffColor(); } 99 100 } 101 delay(50); 102 103} 104 105 106// Funciones de motores 107/* FORWARD */ 108void MotorForward(){ 109 Serial.println(speedCar); 110 goLuces(); 111 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 112 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 113 114 digitalWrite(IN1,HIGH); 115 digitalWrite(IN2,LOW); 116 digitalWrite(IN3,HIGH); 117 digitalWrite(IN4,LOW); 118} 119 120/* BACKWARD */ 121void MotorBackward(){ 122 Serial.println(speedCar); 123 goLucesColor(); 124 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 125 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 126 127 digitalWrite(IN1,LOW); 128 digitalWrite(IN2,HIGH); 129 digitalWrite(IN3,LOW); 130 digitalWrite(IN4,HIGH); 131} 132/* TURN RIGHT */ 133void TurnRight(){ 134 Serial.println(speedCar); 135 136 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 137 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 138 139 digitalWrite(IN1,HIGH); 140 digitalWrite(IN2,LOW); 141 digitalWrite(IN3,LOW); 142 digitalWrite(IN4,HIGH); 143} 144 145/* TURN LEFT */ 146void TurnLeft(){ 147 Serial.println(speedCar); 148 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 149 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 150 151 digitalWrite(IN1,LOW); 152 digitalWrite(IN2,HIGH); 153 digitalWrite(IN3,HIGH); 154 digitalWrite(IN4,LOW); 155} 156 157void MotorStop(){ 158 analogWrite(ENA, speedOff); // deshabilita motor A 159 analogWrite(ENB, speedOff); // deshabilita motor B 160 goLucesOffColor(); 161 goLucesOff(); 162} 163 164// ----------------------- SPEED ----------------------- 165int SetSpeedCarMax(){ 166 speedCar = speedMAX; 167 Serial.print("speedCar "+ speedCar); 168 169 delay(90); 170} 171 172 173int SetSpeedCarUp(){ 174 speedCar = speedMED; 175 Serial.print("speedCar "+ speedCar); 176 177 delay(90); 178} 179 180 181int SetSpeedCarDown(){ 182 speedCar = speedMIN; 183 delay(90); 184} 185 186//--------------------- SERVO --------------------- 187 188int rotarCabeza_H_I(){ 189 if(contador == 0){ contador = 90; } 190 contador = contador + 25; //Incrementa el contador 191 delay (300); // Retardo 192 myservoH.write(contador); 193 } 194 195void rotarCabeza_H_D(){ 196 if(contador == 0){ contador = 90; } 197 contador= contador - 25; //Incrementa el contador 198 delay (300); // Retardo 199 myservoH.write(contador); 200} 201 202void rotarCabeza_H_90(){ myservoH.write(90); } 203 204// ----------------- LUCES ----------------- 205void led_blink(){ 206 int var = 0; 207 while (var < 3) { 208 digitalWrite(PinLED0, HIGH); 209 delay(90); 210 digitalWrite(PinLED1, HIGH); 211 delay(90); 212 digitalWrite(PinLED2, HIGH); 213 delay(90); 214 digitalWrite(PinLED3, HIGH); 215 delay(90); 216 217 digitalWrite(PinLED0, LOW); 218 delay(90); 219 digitalWrite(PinLED1, LOW); 220 delay(90); 221 digitalWrite(PinLED2, LOW); 222 delay(90); 223 digitalWrite(PinLED3, LOW); 224 delay(90); 225 226 var ++; 227 } 228} 229 230void goLuces(){ 231 digitalWrite(PinLED0, HIGH); 232 digitalWrite(PinLED1, HIGH); 233} 234 235void goLucesOff(){ 236 digitalWrite(PinLED0, LOW); 237 digitalWrite(PinLED1, LOW); 238} 239 240void goLucesColor(){ 241 digitalWrite(PinLED2, HIGH); 242 digitalWrite(PinLED3, HIGH); 243} 244 245void goLucesOffColor(){ 246 digitalWrite(PinLED2, LOW); 247 digitalWrite(PinLED3, LOW); 248} 249
Escoriabot
arduino
1/* include library */ 2#include <Servo.h> // Add Servo library 3#include <SoftwareSerial.h> // libreria que permite establecer pines digitales 4#include <AFMotor.h> 5 6 7SoftwareSerial miBT(19, 18); // pin 19 como RX, pin 18 como TX 8 9// ----------- Puenteh 10 11int ENA = 40; // ENA de L298N a pin digital 5 gris 12int ENB = 50; // ENb de L298N a pin digital 5 naranja 13//derecho 14int IN1 = 42; // IN1 de L298N a pin digital 2 violeta 15int IN2 = 44; // IN2 de L298N a pin digital 3 azul 16//izquierdo 17int IN3 = 46; // IN2 de L298N a pin digital 2 verde 18int IN4 = 48; // IN3 de L298N a pin digital 3 amarillo 19int ALIMENTACION1 = 52; // pin de alimentacion siempre on 20 21int speedCar = 1024; // variable para almacenar valor de velocidad 22int speedMAX = 1024; // variable para almacenar valor de velocidad 23int speedMED = 768; // variable para almacenar valor de velocidad 24int speedMIN = 130; // variable para almacenar valor de velocidad 25int speedOff = 0 ; 26 27// ---------- Servo 28Servo myservoH; // Define any servo name 29int contador; 30int powerServ = 30; 31 32 33// ----------- definir led 34int PinLED0 = 32; //blanco adelante 35int PinLED1 = 34; //blanco adelante 36int PinLED2 = 36; //rojo 37int PinLED3 = 38; //rojo 38 39void setup(){ 40 41 Serial.begin(38400); 42 Serial1.begin(38400); 43 44 pinMode(ALIMENTACION1, OUTPUT); // ENB como salida 45 digitalWrite(ALIMENTACION1,HIGH); 46 47 // l298n 48 pinMode(IN1, OUTPUT); // IN1 como salida 49 pinMode(IN2, OUTPUT); // IN2 como salida 50 pinMode(ENA, OUTPUT); // ENA como salida 51 pinMode(IN3, OUTPUT); // IN3 como salida 52 pinMode(IN4, OUTPUT); // IN4 como salida 53 pinMode(ENB, OUTPUT); // ENB como salida 54 55 //Servos 56 myservoH.attach (2); // Define the servo signal pins 57 pinMode(powerServ, OUTPUT); // IN1 como salida 58 digitalWrite(powerServ, HIGH); 59 60 // LED 61 62 pinMode(PinLED0, OUTPUT); 63 pinMode(PinLED1, OUTPUT); 64 pinMode(PinLED2, OUTPUT); 65 pinMode(PinLED3, OUTPUT); 66 67} 68 69void loop(){ 70 71 //------------Bluetooth 72 if (Serial1.available()){ // si hay informacion disponible desde modulo 73 char DATO = Serial1.read(); // almacena en DATO el caracter recibido desde modulo 74 Serial.write(DATO); 75 Serial.println('\ \ 76'); 77 Serial.println("dato" + DATO); 78 79 80 if(DATO == '1') { MotorForward();} 81 else if(DATO == '3') {MotorBackward();} 82 else if(DATO == '4') {TurnLeft();} 83 else if(DATO == '2') {TurnRight();} 84 else if(DATO == '0') {MotorStop(); } //motor stop 85 86 else if(DATO == 'a') SetSpeedCarMax (); 87 else if(DATO == 'b') SetSpeedCarUp(); 88 else if(DATO == 'c') SetSpeedCarDown(); 89 90 else if(DATO == 'd') {goLuces();} 91 else if(DATO == 'e') {goLucesOff();} 92 else if(DATO == 'f') {led_blink();} 93 94 else if(DATO == 'h') { rotarCabeza_H_I(); }//rotar horizontal izquierda 95 else if(DATO == 'i') { rotarCabeza_H_D(); } //rotar horizontal derecha 96 else if(DATO == 'j') { rotarCabeza_H_90(); } //rotar horizontal derecha 97 else if(DATO == 'k') { goLucesColor(); } 98 else if(DATO == 'l') { goLucesOffColor(); } 99 100 } 101 delay(50); 102 103} 104 105 106// Funciones de motores 107/* FORWARD */ 108void MotorForward(){ 109 Serial.println(speedCar); 110 goLuces(); 111 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 112 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 113 114 digitalWrite(IN1,HIGH); 115 digitalWrite(IN2,LOW); 116 digitalWrite(IN3,HIGH); 117 digitalWrite(IN4,LOW); 118} 119 120/* BACKWARD */ 121void MotorBackward(){ 122 Serial.println(speedCar); 123 goLucesColor(); 124 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 125 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 126 127 digitalWrite(IN1,LOW); 128 digitalWrite(IN2,HIGH); 129 digitalWrite(IN3,LOW); 130 digitalWrite(IN4,HIGH); 131} 132/* TURN RIGHT */ 133void TurnRight(){ 134 Serial.println(speedCar); 135 136 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 137 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 138 139 digitalWrite(IN1,HIGH); 140 digitalWrite(IN2,LOW); 141 digitalWrite(IN3,LOW); 142 digitalWrite(IN4,HIGH); 143} 144 145/* TURN LEFT */ 146void TurnLeft(){ 147 Serial.println(speedCar); 148 analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA 149 analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB 150 151 digitalWrite(IN1,LOW); 152 digitalWrite(IN2,HIGH); 153 digitalWrite(IN3,HIGH); 154 digitalWrite(IN4,LOW); 155} 156 157void MotorStop(){ 158 analogWrite(ENA, speedOff); // deshabilita motor A 159 analogWrite(ENB, speedOff); // deshabilita motor B 160 goLucesOffColor(); 161 goLucesOff(); 162} 163 164// ----------------------- SPEED ----------------------- 165int SetSpeedCarMax(){ 166 speedCar = speedMAX; 167 Serial.print("speedCar "+ speedCar); 168 169 delay(90); 170} 171 172 173int SetSpeedCarUp(){ 174 speedCar = speedMED; 175 Serial.print("speedCar "+ speedCar); 176 177 delay(90); 178} 179 180 181int SetSpeedCarDown(){ 182 speedCar = speedMIN; 183 delay(90); 184} 185 186//--------------------- SERVO --------------------- 187 188int rotarCabeza_H_I(){ 189 if(contador == 0){ contador = 90; } 190 contador = contador + 25; //Incrementa el contador 191 delay (300); // Retardo 192 myservoH.write(contador); 193 } 194 195void rotarCabeza_H_D(){ 196 if(contador == 0){ contador = 90; } 197 contador= contador - 25; //Incrementa el contador 198 delay (300); // Retardo 199 myservoH.write(contador); 200} 201 202void rotarCabeza_H_90(){ myservoH.write(90); } 203 204// ----------------- LUCES ----------------- 205void led_blink(){ 206 int var = 0; 207 while (var < 3) { 208 digitalWrite(PinLED0, HIGH); 209 delay(90); 210 digitalWrite(PinLED1, HIGH); 211 delay(90); 212 digitalWrite(PinLED2, HIGH); 213 delay(90); 214 digitalWrite(PinLED3, HIGH); 215 delay(90); 216 217 digitalWrite(PinLED0, LOW); 218 delay(90); 219 digitalWrite(PinLED1, LOW); 220 delay(90); 221 digitalWrite(PinLED2, LOW); 222 delay(90); 223 digitalWrite(PinLED3, LOW); 224 delay(90); 225 226 var ++; 227 } 228} 229 230void goLuces(){ 231 digitalWrite(PinLED0, HIGH); 232 digitalWrite(PinLED1, HIGH); 233} 234 235void goLucesOff(){ 236 digitalWrite(PinLED0, LOW); 237 digitalWrite(PinLED1, LOW); 238} 239 240void goLucesColor(){ 241 digitalWrite(PinLED2, HIGH); 242 digitalWrite(PinLED3, HIGH); 243} 244 245void goLucesOffColor(){ 246 digitalWrite(PinLED2, LOW); 247 digitalWrite(PinLED3, LOW); 248} 249
Downloadable files
Circuit
https://fritzing.org/projects/arduino-mega-l298n-2-motors-for-robot-botsura
All codes
github complete repository
https://github.com/EstebanJPagano/EscoriaBot
Circuit
Circuit
All codes
github complete repository
https://github.com/EstebanJPagano/EscoriaBot
Circuit
https://fritzing.org/projects/arduino-mega-l298n-2-motors-for-robot-botsura
Documentation
Escoriabot Blueprints
Escoriabot Blueprints
Escoriabot Blueprints
Escoriabot Blueprints
Comments
Only logged in users can leave comments
estebanregistros
0 Followers
•0 Projects
Table of contents
Intro
2
0