-
Notifications
You must be signed in to change notification settings - Fork 1
/
teclasino.txt
116 lines (96 loc) · 2.13 KB
/
teclasino.txt
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
#include <ros.h>
#include <std_msgs/String.h>
int in1 = 8; // Pin que controla el sentido de giro Motor A
int in2 = 9; // Pin que controla el sentido de giro Motor A
int EnA = 5; // Pin que controla la velocidad del Motor A
int in3 = 7;
int in4 = 6;
int EnB = 12;
String orden;
ros::NodeHandle nh;
std_msgs::String tecla;
void subscriberCallback(const std_msgs::String& tecla) {
orden = tecla.data;
}
ros::Subscriber<std_msgs::String> teclas_subscriber("/teclas", &subscriberCallback);
void setup ()
{
pinMode(in1, OUTPUT); // Configura los pines como salida
pinMode(in2, OUTPUT);
pinMode(EnA, OUTPUT);
pinMode(in3, OUTPUT); // Configura los pines como salida
pinMode(in4, OUTPUT);
pinMode(EnB, OUTPUT);
pinMode(13,OUTPUT);
nh.initNode();
nh.subscribe(teclas_subscriber);
}
void loop()
{
if(orden == 'w')
{
adelante();
nh.spinOnce();
}
if(orden == 'd')
{
giroDerecha();
nh.spinOnce();
}
if(orden == 'a')
{
giroIzquierda();
nh.spinOnce();
}
if(orden == 's')
{
atras();
nh.spinOnce();
}
else{
detener();
nh.spinOnce();
}
nh.spinOnce();
delay(100);
}
void adelante(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(EnA, 100); //255
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(EnB, 100);
}
void atras(){
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(EnA, 100);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(EnB, 100);
}
void giroIzquierda(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(EnA, 0);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(EnB, 100);
}
void giroDerecha(){
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(EnA, 100);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(EnB, 0);
}
void detener(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
analogWrite(EnA, 0);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(EnB, 0);
}