-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnanobot.ino
139 lines (107 loc) · 3.31 KB
/
nanobot.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* include library */
#include <SoftwareSerial.h> // libreria que permite establecer pines digitales
SoftwareSerial miBT (10, 11); //pin RX, pin TX
// ----------- Puenteh
int ENA = 13;
//derecho
int IN1 = 12;
int IN2 = 7;
//izquierdo
int IN3 = 6;
int IN4 = 5;
int ENB = 4;
int speedCar = 255; // variable para almacenar valor de velocidad
int speedMAX = 255; // variable para almacenar valor de velocidad
int speedMED = 200; // variable para almacenar valor de velocidad
int speedMIN = 130; // variable para almacenar valor de velocidad
int speedOff = 0 ;
char dato = 0; // variable para almacenar caracter recibido
void setup(){
miBT.begin(38400);
Serial.begin(38400);
// l298n
/* pinMode(ENA, OUTPUT); // ENA como salida
pinMode(ENB, OUTPUT); // ENB como salida
pinMode(IN1, OUTPUT); // IN1 como salida
pinMode(IN2, OUTPUT); // IN2 como salida
pinMode(IN3, OUTPUT); // IN3 como salida
pinMode(IN4, OUTPUT); // IN4 como salida
*/
for (int i = 4; i <= 9; i++) {
pinMode(i, OUTPUT);
}
}
void loop(){
//------------Bluetooth
if (miBT.available()){ // si hay informacion disponible desde modulo
dato = miBT.read(); // almacena en dato el caracter recibido desde modulo
Serial.println("dato");
Serial.println(dato);
Serial.write(dato); //Sacarlo a la terminal
if(dato == '4') { MotorForward();}
else if(dato == '2') {MotorBackward();}
else if(dato == '1') {TurnLeft();}
else if(dato == '3') {TurnRight();}
else if(dato == '0') {MotorStop(); } //motor stop
else if(dato == 'a') { SetSpeedCarMax(); }
else if(dato == 'b') { SetSpeedCarUp(); }
else if(dato == 'c') { SetSpeedCarDown(); }
}
delay(500);
}
// Funciones de motores
/* FORWARD */
void MotorForward(){
analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA
analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
/* BACKWARD */
void MotorBackward(){
analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA
analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
/* TURN RIGHT */
void TurnRight(){
analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA
analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
/* TURN LEFT */
void TurnLeft(){
analogWrite(ENA, speedCar); // velocidad mediante PWM en ENA
analogWrite(ENB, speedCar); // velocidad mediante PWM en ENB
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
void MotorStop(){
analogWrite(ENA, speedOff); // deshabilita motor A
analogWrite(ENB, speedOff); // deshabilita motor B
}
// ----------------------- SPEED -----------------------
void SetSpeedCarMax(){
speedCar = speedMAX;
Serial.print("speedCar "+ speedCar);
delay(90);
}
void SetSpeedCarUp(){
speedCar = speedMED;
Serial.print("speedCar s"+ speedCar);
delay(90);
}
void SetSpeedCarDown(){
speedCar = speedMIN;
delay(90);
}