Guest User

NANO code

a guest
Apr 1st, 2024
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.42 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <ArduinoBLE.h>
  3. #include <Stepper.h>
  4.  
  5. ///////////////////////////////////////////////////////
  6. // ----------------------------------------------------
  7. /// THIS CODE RUNS ON THE Arduino R4 - TANK
  8. // ----------------------------------------------------
  9. ///////////////////////////////////////////////////////
  10.  
  11. ////////////////////////////////////////////////////////////////////
  12. // this code sends the ultra sonic distance data to the controller
  13. // we are the peripheral...
  14. ////////////////////////////////////////////////////////////////////
  15.  
  16. // WE ARE UPDATING THE BUTTON CHARACTERISTIC AND READING THE LED STATE CHARACTERISITC
  17. // we send button value
  18. // we recieve LED value
  19.  
  20. // variables for button:
  21. const int buttonPin = 2;
  22. int oldButtonState = LOW;
  23.  
  24. BLEService duplexService("1000"); // create service
  25. BLEByteCharacteristic buttonCharacteristic("1001", BLERead | BLENotify); // create button characteristic and allow remote device to get notifications
  26. BLEIntCharacteristic joystick_1_characteristic("1002", BLERead | BLEWrite); // create joystick_1 characteristic and allow remote device to read and write
  27. BLEIntCharacteristic joystick_2_characteristic("1003", BLERead | BLEWrite); // create joystick_2 characteristic and allow remote device to read and write
  28.  
  29. const int stepsPerRevolution = 800;
  30.  
  31. const int stepMotor1 = 3; //step
  32. const int dirMotor1 = 2; //dir
  33. const int stepMotor2 = 5; //step
  34. const int dirMotor2 = 4; //dir
  35. const int stepMotor3 = 6; //step
  36. const int dirMotor3 = 7; //dir
  37. const int stepMotor4 = 9; //step
  38. const int dirMotor4 = 8; //dir
  39.  
  40. Stepper motor1(stepsPerRevolution, stepMotor1, dirMotor1);
  41. Stepper motor2(stepsPerRevolution, stepMotor2, dirMotor2);
  42. Stepper motor3(stepsPerRevolution, stepMotor3, dirMotor3);
  43. Stepper motor4(stepsPerRevolution, stepMotor4, dirMotor4);
  44.  
  45. const int MOTOR_SPEED = 60;
  46.  
  47. int POS = 0;
  48.  
  49. unsigned long previousUpdateTime = 0;
  50. const unsigned long updateInterval = 500;
  51.  
  52. void setup()
  53. {
  54.  
  55. motor1.setSpeed(0);
  56. motor2.setSpeed(0);
  57. motor3.setSpeed(0);
  58. motor4.setSpeed(0);
  59.  
  60. motor1.step(0);
  61. motor2.step(0);
  62. motor3.step(0);
  63. motor4.step(0);
  64.  
  65. Serial.begin(9600);
  66. pinMode(LED_BUILTIN, OUTPUT); // use the LED as an output
  67. pinMode(buttonPin, INPUT_PULLUP); // use button pin as an input
  68.  
  69. BLE.begin(); //init BLE module
  70. BLE.setLocalName("duplexPeripheral"); // set the local name that the peripheral advertises
  71. BLE.setAdvertisedService(duplexService); // set the UUID for the service the peripheral advertises:
  72.  
  73. duplexService.addCharacteristic(joystick_1_characteristic);
  74. duplexService.addCharacteristic(joystick_2_characteristic);
  75. duplexService.addCharacteristic(buttonCharacteristic);
  76.  
  77. BLE.addService(duplexService); // add the service
  78.  
  79. joystick_1_characteristic.writeValue(0);
  80. joystick_2_characteristic.writeValue(0);
  81. buttonCharacteristic.writeValue(0);
  82.  
  83. BLE.advertise(); // start advertising on BLE network
  84. Serial.println("Peripheral is running");
  85.  
  86.  
  87. }
  88.  
  89. void loop() {
  90.  
  91. BLEDevice central = BLE.central();
  92.  
  93. if (central)
  94. {
  95. Serial.println("Got central connection!");
  96. while (central.connected())
  97. {
  98. byte buttonValue = digitalRead(buttonPin);
  99.  
  100. //check if joystick 1 characteristic has been updated...
  101. if (joystick_1_characteristic.written())
  102. {
  103. POS = joystick_1_characteristic.value();
  104. // if (joy_1_value >1000)
  105. // {
  106. // buttonCharacteristic.writeValue(20);
  107. // } else {
  108. // buttonCharacteristic.writeValue(50);
  109. // }
  110. Serial.print("Position: ");
  111. Serial.println(POS);
  112. previousUpdateTime = millis();
  113. }
  114.  
  115. while (POS == 0) {
  116. if (millis() - previousUpdateTime >= updateInterval) {
  117. break;}
  118. motor1.setSpeed(60);
  119. motor2.setSpeed(60);
  120. motor3.setSpeed(60);
  121. motor4.setSpeed(60);
  122.  
  123. motor1.step(0);
  124. motor2.step(0);
  125. motor3.step(0);
  126. motor4.step(0);
  127. }
  128.  
  129. while (POS == 1) { //Forward
  130. if (millis() - previousUpdateTime >= updateInterval) {
  131. break;}
  132. motor1.setSpeed(60);
  133. motor2.setSpeed(60);
  134. motor3.setSpeed(60);
  135. motor4.setSpeed(60);
  136.  
  137. motor1.step(1);
  138. motor2.step(1);
  139. motor3.step(1);
  140. motor4.step(1);
  141. }
  142.  
  143. while (POS == 2) {//Forward right
  144. if (millis() - previousUpdateTime >= updateInterval) {
  145. break;}
  146. motor1.setSpeed(40);
  147. motor2.setSpeed(40);
  148. motor3.setSpeed(40);
  149. motor4.setSpeed(40);
  150.  
  151. motor1.step(0);
  152. motor2.step(1);
  153. motor3.step(0);
  154. motor4.step(1);
  155. }
  156. while (POS == 3) { //Right
  157. if (millis() - previousUpdateTime >= updateInterval) {
  158. break;}
  159. motor1.setSpeed(60);
  160. motor2.setSpeed(60);
  161. motor3.setSpeed(60);
  162. motor4.setSpeed(60);
  163.  
  164. motor1.step(-1);
  165. motor2.step(1);
  166. motor3.step(-1);
  167. motor4.step(1);
  168. }
  169.  
  170. while (POS == 4) {//Bakcwards right
  171. if (millis() - previousUpdateTime >= updateInterval) {
  172. break;}
  173. motor1.setSpeed(40);
  174. motor2.setSpeed(40);
  175. motor3.setSpeed(40);
  176. motor4.setSpeed(40);
  177.  
  178. motor1.step(-1);
  179. motor2.step(0);
  180. motor3.step(-1);
  181. motor4.step(0);
  182. }
  183.  
  184. while (POS == 5) {//Bakcwards
  185. if (millis() - previousUpdateTime >= updateInterval) {
  186. break;}
  187. motor1.setSpeed(60);
  188. motor2.setSpeed(60);
  189. motor3.setSpeed(60);
  190. motor4.setSpeed(60);
  191.  
  192. motor1.step(-1);
  193. motor2.step(-1);
  194. motor3.step(-1);
  195. motor4.step(-1);
  196. }
  197.  
  198. while (POS == 6) {//Bakcwards left
  199. if (millis() - previousUpdateTime >= updateInterval) {
  200. break;}
  201. motor1.setSpeed(40);
  202. motor2.setSpeed(40);
  203. motor3.setSpeed(40);
  204. motor4.setSpeed(40);
  205.  
  206. motor1.step(0);
  207. motor2.step(-1);
  208. motor3.step(0);
  209. motor4.step(-1);
  210. }
  211. while (POS == 7) {//Left
  212. if (millis() - previousUpdateTime >= updateInterval) {
  213. break;}
  214. motor1.setSpeed(60);
  215. motor2.setSpeed(60);
  216. motor3.setSpeed(60);
  217. motor4.setSpeed(60);
  218.  
  219. motor1.step(1);
  220. motor2.step(-1);
  221. motor3.step(1);
  222. motor4.step(-1);
  223. }
  224. while (POS == 8) {//Forward left
  225. if (millis() - previousUpdateTime >= updateInterval) {
  226. break;}
  227. motor1.setSpeed(40);
  228. motor2.setSpeed(40);
  229. motor3.setSpeed(40);
  230. motor4.setSpeed(40);
  231.  
  232. motor1.step(1);
  233. motor2.step(0);
  234. motor3.step(1);
  235. motor4.step(0);
  236. }
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247. }
  248.  
  249. }
  250. // case 2:
  251. // motor1.setSpeed(0);
  252. // motor2.setSpeed(0);
  253. // motor3.setSpeed(0);
  254. // motor4.setSpeed(0);
  255.  
  256. // motor1.step(0);
  257. // motor2.step(0);
  258. // motor3.step(0);
  259. // motor4.step(0);
  260. // break;
  261. // case 3: // Right
  262. // motor1.setSpeed(40);
  263. // motor2.setSpeed(40);
  264. // motor3.setSpeed(40);
  265. // motor4.setSpeed(40);
  266.  
  267. // motor1.step(1);
  268. // motor2.step(-1);
  269. // motor3.step(1);
  270. // motor4.step(-1);
  271. // break;
  272. // case 4: // Back right
  273. // motor1.setSpeed(0);
  274. // motor2.setSpeed(0);
  275. // motor3.setSpeed(0);
  276. // motor4.setSpeed(0);
  277.  
  278. // motor1.step(0);
  279. // motor2.step(0);
  280. // motor3.step(0);
  281. // motor4.step(0);
  282. // break;
  283. // case 5: // Backwards
  284. // motor1.setSpeed(60);
  285. // motor2.setSpeed(60);
  286. // motor3.setSpeed(60);
  287. // motor4.setSpeed(60);
  288.  
  289. // motor1.step(-1);
  290. // motor2.step(-1);
  291. // motor3.step(-1);
  292. // motor4.step(-1);
  293. // break;
  294. // case 6: // Back left
  295. // motor1.setSpeed(0);
  296. // motor2.setSpeed(0);
  297. // motor3.setSpeed(0);
  298. // motor4.setSpeed(0);
  299.  
  300. // motor1.step(0);
  301. // motor2.step(0);
  302. // motor3.step(0);
  303. // motor4.step(0);
  304. // break;
  305. // case 7: // Left
  306. // motor1.setSpeed(40);
  307. // motor2.setSpeed(40);
  308. // motor3.setSpeed(40);
  309. // motor4.setSpeed(40);
  310.  
  311. // motor1.step(-1);
  312. // motor2.step(1);
  313. // motor3.step(-1);
  314. // motor4.step(1);
  315. // break;
  316. // case 8: // Forward left
  317. // motor1.setSpeed(0);
  318. // motor2.setSpeed(0);
  319. // motor3.setSpeed(0);
  320. // motor4.setSpeed(0);
  321.  
  322. // motor1.step(0);
  323. // motor2.step(0);
  324. // motor3.step(0);
  325. // motor4.step(0);
  326. // break;
  327.  
  328.  
  329. }
  330.  
Advertisement
Add Comment
Please, Sign In to add comment