]> git.piffa.net Git - rover/blob - libraries/rover/rover.cpp
Servo rotation now is progressive
[rover] / libraries / rover / rover.cpp
1 /*
2   Rover
3
4 Autore: Andrea Manni
5
6 Link: http://aero.piffa.net
7 Licenza:    GPLv3
8
9 */
10
11 #include "Arduino.h"
12 #include "rover.h"
13
14 #define dEBUG
15
16 // Configurazione con OUTPUT digitali
17 // motor one
18 const int enA = 6;
19 const int in1 = 7;
20 const int in2 = 8;
21 byte speedA = 255;
22 // motor two
23 const int enB = 5;
24 const int in3 = 4;
25 const int in4 = 3;
26 byte speedB = 255;
27
28 // Servo vars
29 int pos = 0;    // variable to store the servo position
30 const byte servoPIN =9 ;
31 const byte middle = 90; // Centratura servo
32 const int spausa = 10; // Pausa movimenti servo
33 const byte sx = 10;  // Min SX
34 const byte dx = 170; // Maz DX
35 Servo myservo; // Non c'e' bisogno di extern se e' dichiarato in questo scope
36
37 ////////////////////////
38 // Funzioni:
39 //
40 void abilita() {
41 // Abilita i PINs come OUTPUTS
42     pinMode(enA, OUTPUT);
43     pinMode(in1, OUTPUT);
44     pinMode(in2, OUTPUT);
45     pinMode(enB, OUTPUT);
46     pinMode(in3, OUTPUT);
47     pinMode(in4, OUTPUT);
48
49
50     pinMode(servoPIN, OUTPUT);
51     myservo.attach(servoPIN);
52 }
53
54
55 // MotorA
56 void forwardA() {
57     // Avanzamento motore
58     digitalWrite(in1,LOW);
59     digitalWrite(in2,HIGH);
60     analogWrite(enA,speedA);
61 }
62
63 void forwardA(byte speedA) {
64     // Avanzamento motore
65     digitalWrite(in1,LOW);
66     digitalWrite(in2,HIGH);
67     analogWrite(enA,speedA);
68 }
69
70 void backwardA() {
71     // Reverse motore
72     digitalWrite(in2,LOW);
73     digitalWrite(in1,HIGH);
74     analogWrite(enA,speedA);
75 }
76
77 void backwardA(byte speedA) {
78     // Reverse motore
79     digitalWrite(in2,LOW);
80     digitalWrite(in1,HIGH);
81     analogWrite(enA,speedA);
82 }
83
84 void stopA() {
85     // Stop
86     digitalWrite(enA,LOW);
87 }
88
89 // MotorB
90 void forwardB() {
91     // Avanzamento motore
92     digitalWrite(in3,LOW);
93     digitalWrite(in4,HIGH);
94     analogWrite(enB,speedB);
95 }
96
97 void forwardB(byte speedB) {
98     // Avanzamento motore
99     digitalWrite(in3,LOW);
100     digitalWrite(in4,HIGH);
101     analogWrite(enB,speedB);
102 }
103
104 void backwardB() {
105     // Reverse motore
106     digitalWrite(in4,LOW);
107     digitalWrite(in3,HIGH);
108     analogWrite(enB,speedB);
109 }
110
111 void backwardB(byte speedB) {
112     // Reverse motore
113     digitalWrite(in4,LOW);
114     digitalWrite(in3,HIGH);
115     analogWrite(enB,speedB);
116 }
117
118 void stopB() {
119     // Stop
120     digitalWrite(enB,LOW);
121 }
122
123 // Servo
124 void turnDX() {
125     // TurnDX
126     while (pos < dx) {
127         myservo.write(pos++);
128         delay(spausa);
129     }
130 }
131
132 void turnSX() {
133     // TurnSX
134     while (pos > sx) {
135         myservo.write(pos--);
136         delay(spausa);
137     }
138 }
139
140 void turnMiddle() {
141     // Middle
142     while (pos > middle) {
143         myservo.write(pos--);
144         delay(spausa);
145     }
146     while (pos < middle) {
147         myservo.write(pos++);
148         delay(spausa);
149     }
150 }