Rocker Bogie Wheelchair Prototype
Rocker Bogie Wheelchair Prototype Prototipo Cadeira de Rodas
Components and supplies
12
SG90 Micro-servo motor
1
HC-05 Bluetooth Module
1
Arduino Nano R3
Project description
Code
rocker_bogie_wheelchair.ino
c_cpp
1#include <Timing.h> 2#include <Servo.h> 3#include <SoftwareSerial.h> 4 5//definicao bluetooth 6#define RX 0 7#define TX 1 8 9//definicao das portas utilizadas 10#define RFE 2 //roda frontal esquerda porta 0 11#define RME 3 //roda meio esquerda porta 1 12#define RTE 4 //roda traseira esquerda porta 2 13#define RFD 5 //roda frontal direita porta 3 14#define RMD 6 //roda meio direita porta 4 15#define RTD 7 //roda traseira direita porta 5 16#define GFE 8 //giro frontal esquerda porta 6 17#define GME 9 //giro meio esquerda porta 7 18#define GTE 10 //giro traseira esquerda porta 8 19#define GFD 11 //giro frontal direita porta 9 20#define GMD 12 //giro meio direita porta 10 21#define GTD 13 //giro traseira direita porta 11 22 23SoftwareSerial bluetooth(RX, TX); // RX, TX 24 25//servos 26Servo ServoRFD; 27Servo ServoRMD; 28Servo ServoRTD; 29Servo ServoRFE; 30Servo ServoRME; 31Servo ServoRTE; 32Servo ServoGFD; 33Servo ServoGMD; 34Servo ServoGTD; 35Servo ServoGFE; 36Servo ServoGME; 37Servo ServoGTE; 38 39int hor = 0; //sentido horario 40int anti = 180; 41int pare = 90; 42int leitura = 0; 43char posicao = 'n'; 44 45Timing timerVelocidade; 46 47void setup () 48{ 49 50 ServoRFD.attach(RFD); 51 ServoRMD.attach(RMD); 52 ServoRTD.attach(RTD); 53 ServoRFE.attach(RFE); 54 ServoRME.attach(RME); 55 ServoRTE.attach(RTE); 56 ServoGFD.attach(GFD); 57 ServoGMD.attach(GMD); 58 ServoGTD.attach(GTD); 59 ServoGFE.attach(GFE); 60 ServoGME.attach(GME); 61 ServoGTE.attach(GTE); 62 63 Serial.begin(9600); // Inicializa a serial nativa do Arduino 64 bluetooth.begin(9600); // Inicializa a serial via software (Onde est conectado o nosso mdulo bluetooth) 65 timerVelocidade.begin(0); 66 67 alinhado(); 68 parado(); 69} 70 71void verificaBluetooth() { // Verifica se existe algum dado a ser lido da serial 72 if (bluetooth.available()) { // verifica se existem bytes a serem lidos da porta serial virtual 73 char dados = bluetooth.read(); // L 1 byte da porta serial 74 Serial.print(dados); // Mostra esse dado lido na porta serial 75 76 77 if (dados == 'p') { // Se o byte lido for igual a p 78 parado(); 79 } 80 else if (dados == 'f'){ 81 // Se o byte lido for igual a f 82 andar(); 83 //delay faz o prototipo andar por por um meio segundo 84 delay(500); 85 } 86 else if (dados == 'r'){ 87 // Se o byte lido for igual a r 88 re(); 89 //delay faz o prototipo andar por por um meio segundo 90 delay(500); 91 } 92 else if (dados == 'e'){ 93 // Se o byte lido for igual a e 94 esquerda(); 95 //delay faz o prototipo andar por por um meio segundo 96 delay(200); 97 } 98 else if (dados == 'd'){ 99 // Se o byte lido for igual a d 100 direita(); 101 //delay faz o prototipo andar por por um meio segundo 102 delay(200); 103 } 104 else if (dados == 'a'){ 105 // Se o byte lido for igual a a 106 alinhado(); 107 } 108 } 109 else{ 110 if (timerVelocidade.onTimeout(20)){ 111 parado(); 112 } 113 } 114} 115 116void loop() 117{ 118 119 verificaBluetooth(); 120} 121void re() 122{ 123 if(posicao == 'n'){ 124 ServoRFD.write(hor); 125 ServoRMD.write(hor); 126 ServoRTD.write(hor); 127 ServoRFE.write(anti); 128 ServoRME.write(anti); 129 ServoRTE.write(anti); 130 } 131 else if(posicao == 'e' || posicao == 'd'){ 132 ServoRFD.write(anti); 133 ServoRMD.write(anti); 134 ServoRTD.write(anti); 135 ServoRFE.write(anti); 136 ServoRME.write(anti); 137 ServoRTE.write(anti); 138 } 139 140} 141void parado() { 142 ServoRFD.write(pare); 143 ServoRMD.write(pare); 144 ServoRTD.write(pare); 145 ServoRFE.write(pare); 146 ServoRME.write(pare); 147 ServoRTE.write(pare); 148} 149void andar() 150{ 151 if(posicao == 'n'){ 152 ServoRFD.write(anti); 153 ServoRMD.write(anti); 154 ServoRTD.write(anti); 155 ServoRFE.write(hor); 156 ServoRME.write(hor); 157 ServoRTE.write(hor); 158 } 159 else if(posicao == 'e' || posicao == 'd'){ 160 ServoRFD.write(hor); 161 ServoRMD.write(hor); 162 ServoRTD.write(hor); 163 ServoRFE.write(hor); 164 ServoRME.write(hor); 165 ServoRTE.write(hor); 166 } 167} 168void alinhado() 169{ 170 ServoGFD.write(90); 171 ServoGMD.write(90); 172 ServoGTD.write(90); 173 ServoGFE.write(90); 174 ServoGME.write(90); 175 ServoGTE.write(90); 176 177 posicao = 'n'; 178} 179void esquerda() 180{ 181 ServoRFD.write(hor); 182 ServoRMD.write(hor); 183 ServoRTD.write(hor); 184 ServoRFE.write(hor); 185 ServoRME.write(hor); 186 ServoRTE.write(hor); 187 188} 189void direita() 190{ 191 ServoRFD.write(anti); 192 ServoRMD.write(anti); 193 ServoRTD.write(anti); 194 ServoRFE.write(anti); 195 ServoRME.write(anti); 196 ServoRTE.write(anti); 197} 198
rocker_bogie_wheelchair.ino
c_cpp
1#include <Timing.h> 2#include <Servo.h> 3#include <SoftwareSerial.h> 4 5//definicao 6 bluetooth 7#define RX 0 8#define TX 1 9 10//definicao das portas utilizadas 11#define 12 RFE 2 //roda frontal esquerda porta 0 13#define RME 3 //roda meio esquerda porta 14 1 15#define RTE 4 //roda traseira esquerda porta 2 16#define RFD 5 //roda frontal 17 direita porta 3 18#define RMD 6 //roda meio direita porta 4 19#define RTD 7 //roda 20 traseira direita porta 5 21#define GFE 8 //giro frontal esquerda porta 6 22#define 23 GME 9 //giro meio esquerda porta 7 24#define GTE 10 //giro traseira esquerda porta 25 8 26#define GFD 11 //giro frontal direita porta 9 27#define GMD 12 //giro meio 28 direita porta 10 29#define GTD 13 //giro traseira direita porta 11 30 31SoftwareSerial 32 bluetooth(RX, TX); // RX, TX 33 34//servos 35Servo ServoRFD; 36Servo ServoRMD; 37Servo 38 ServoRTD; 39Servo ServoRFE; 40Servo ServoRME; 41Servo ServoRTE; 42Servo ServoGFD; 43Servo 44 ServoGMD; 45Servo ServoGTD; 46Servo ServoGFE; 47Servo ServoGME; 48Servo ServoGTE; 49 50int 51 hor = 0; //sentido horario 52int anti = 180; 53int pare = 90; 54int leitura = 55 0; 56char posicao = 'n'; 57 58Timing timerVelocidade; 59 60void setup () 61{ 62 63 64 ServoRFD.attach(RFD); 65 ServoRMD.attach(RMD); 66 ServoRTD.attach(RTD); 67 68 ServoRFE.attach(RFE); 69 ServoRME.attach(RME); 70 ServoRTE.attach(RTE); 71 72 ServoGFD.attach(GFD); 73 ServoGMD.attach(GMD); 74 ServoGTD.attach(GTD); 75 76 ServoGFE.attach(GFE); 77 ServoGME.attach(GME); 78 ServoGTE.attach(GTE); 79 80 81 Serial.begin(9600); // Inicializa a serial nativa do Arduino 82 bluetooth.begin(9600); 83 // Inicializa a serial via software (Onde est conectado o nosso mdulo bluetooth) 84 85 timerVelocidade.begin(0); 86 87 alinhado(); 88 parado(); 89} 90 91void 92 verificaBluetooth() { // Verifica se existe algum dado a ser lido da serial 93 94 if (bluetooth.available()) { // verifica se existem bytes a serem lidos da porta 95 serial virtual 96 char dados = bluetooth.read(); // L 1 byte da porta serial 97 98 Serial.print(dados); // Mostra esse dado lido na porta serial 99 100 101 102 if (dados == 'p') { // Se o byte lido for igual a p 103 parado(); 104 105 } 106 else if (dados == 'f'){ 107 // Se o byte lido for 108 igual a f 109 andar(); 110 //delay faz o prototipo andar por 111 por um meio segundo 112 delay(500); 113 } 114 else 115 if (dados == 'r'){ 116 // Se o byte lido for igual a r 117 re(); 118 119 //delay faz o prototipo andar por por um meio segundo 120 delay(500); 121 122 } 123 else if (dados == 'e'){ 124 // Se o byte lido for 125 igual a e 126 esquerda(); 127 //delay faz o prototipo andar 128 por por um meio segundo 129 delay(200); 130 } 131 else 132 if (dados == 'd'){ 133 // Se o byte lido for igual a d 134 direita(); 135 136 //delay faz o prototipo andar por por um meio segundo 137 delay(200); 138 139 } 140 else if (dados == 'a'){ 141 // Se o byte lido for 142 igual a a 143 alinhado(); 144 } 145 } 146 else{ 147 if 148 (timerVelocidade.onTimeout(20)){ 149 parado(); 150 } 151 } 152} 153 154void 155 loop() 156{ 157 158 verificaBluetooth(); 159} 160void re() 161{ 162 if(posicao 163 == 'n'){ 164 ServoRFD.write(hor); 165 ServoRMD.write(hor); 166 ServoRTD.write(hor); 167 168 ServoRFE.write(anti); 169 ServoRME.write(anti); 170 ServoRTE.write(anti); 171 172 } 173 else if(posicao == 'e' || posicao == 'd'){ 174 ServoRFD.write(anti); 175 176 ServoRMD.write(anti); 177 ServoRTD.write(anti); 178 ServoRFE.write(anti); 179 180 ServoRME.write(anti); 181 ServoRTE.write(anti); 182 } 183 184} 185void 186 parado() { 187 ServoRFD.write(pare); 188 ServoRMD.write(pare); 189 ServoRTD.write(pare); 190 191 ServoRFE.write(pare); 192 ServoRME.write(pare); 193 ServoRTE.write(pare); 194} 195void 196 andar() 197{ 198 if(posicao == 'n'){ 199 ServoRFD.write(anti); 200 ServoRMD.write(anti); 201 202 ServoRTD.write(anti); 203 ServoRFE.write(hor); 204 ServoRME.write(hor); 205 206 ServoRTE.write(hor); 207 } 208 else if(posicao == 'e' || posicao == 'd'){ 209 210 ServoRFD.write(hor); 211 ServoRMD.write(hor); 212 ServoRTD.write(hor); 213 214 ServoRFE.write(hor); 215 ServoRME.write(hor); 216 ServoRTE.write(hor); 217 218 } 219} 220void alinhado() 221{ 222 ServoGFD.write(90); 223 ServoGMD.write(90); 224 225 ServoGTD.write(90); 226 ServoGFE.write(90); 227 ServoGME.write(90); 228 ServoGTE.write(90); 229 230 231 posicao = 'n'; 232} 233void esquerda() 234{ 235 ServoRFD.write(hor); 236 ServoRMD.write(hor); 237 238 ServoRTD.write(hor); 239 ServoRFE.write(hor); 240 ServoRME.write(hor); 241 ServoRTE.write(hor); 242 243} 244void 245 direita() 246{ 247 ServoRFD.write(anti); 248 ServoRMD.write(anti); 249 ServoRTD.write(anti); 250 251 ServoRFE.write(anti); 252 ServoRME.write(anti); 253 ServoRTE.write(anti); 254} 255
Downloadable files
untitled
untitled

Documentation
rocker_bogie_wheelchair_ulZl0Qzphf.zip
rocker_bogie_wheelchair_ulZl0Qzphf.zip
rocker_bogie_wheelchair_ulZl0Qzphf.zip
rocker_bogie_wheelchair_ulZl0Qzphf.zip
Comments
Only logged in users can leave comments