Guest User

Untitled

a guest
Aug 10th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.62 KB | None | 0 0
  1. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2. ~~~ Arduino Buggy by Quintens Kenny & Raepers Senne ~
  3. ~~~ ~
  4. ~~~ Code written by: Quintens Kenny ~
  5. ~~~ Design by: Quintens Kenny & Raepers Senne ~
  6. ~~~ Board design by: Raepers Senne ~
  7. ~~~ Construction by: Quintens Kenny & Raepers Senne ~
  8. ~~~ Coördination by: Odeurs Luc ~ ~
  9. ~~~ ~
  10. ~~~ ~
  11. ~~~ ___ ___ ~
  12. ~~~ Reset 1 | `-´ | 28 analog 5 ~
  13. ~~~ RX 2 | | 27 analog 4 ~
  14. ~~~ TX 3 | A | 26 analog 3 ~
  15. ~~~ digital 2 4 | T | 25 analog 2 ~
  16. ~~~ PWM 3 5 | M | 24 analog 1 ~
  17. ~~~ digital 4 6 | E | 23 analog 0 ~
  18. ~~~ VCC 7 | G | 22 GND ~
  19. ~~~ GND 8 | A | 21 analog reference ~
  20. ~~~ crystal 9 | | 20 VCC ~
  21. ~~~ crystal 10 | 3 | 19 digital 13 ~
  22. ~~~ PWM 5 11 | 2 | 18 digital 12 ~
  23. ~~~ PWM 6 12 | 8 | 17 PWM 11 ~
  24. ~~~ digital 7 13 | | 16 PWM 10 ~
  25. ~~~ digital 8 14 |_________| 15 PWM 9 ~
  26. ~~~ ~
  27. ~~~ Copyright 2012: Kenny Quintens ~Q-Tronix~ ~
  28. *///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  29.  
  30.  
  31.  
  32. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  33. //~~~~~~~~~~~~~~~~~~ - Void Setup - Assignement of the used variables - ~~~~~~~~~~~~~~~~~~~~~~
  34. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  35. const int leftdirectionPin = 8; // Pin nummer voor het richtingssignaal
  36. const int rightdirectionPin = 7; // Pin nummer voor het richtingssignaal
  37. const int leftpwmPin = 9; // Pin nummer voor het PWM signaal ~Motor control~
  38. const int rightpwmPin = 6; // Pin nummer voor het PWM signaal
  39. byte leftPwm = 255; // Snelheid "0 - 255"
  40. byte rightPwm = 255; // Snelheid "0 - 255" =>> Check the minumum speed!!!!
  41. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  42. int speaker = 13; // Luidspreker
  43. int led = 12; // Zwaailicht
  44. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  45. int sensorIR[3] = {A0, A1, A2}; // IR sensors
  46. int threshold = 120; // Minimum storings waarde die hij ziet in open lucht
  47. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  48. //~~~~~~~~~~~~~~~~~~~~~~ - Void Setup - Assignement of the I/O's - ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  49. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  50.  
  51. void setup(){
  52. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  53. pinMode(leftdirectionPin, OUTPUT); //
  54. pinMode(rightdirectionPin, OUTPUT); // ~Motor control~
  55. pinMode(leftpwmPin, OUTPUT); //
  56. pinMode(rightpwmPin, OUTPUT); //
  57. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  58. pinMode(speaker, OUTPUT);
  59. pinMode(led, OUTPUT);
  60. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  61. int i;
  62. for(i = 0; i <3; i++){ // Inlezing van de afstandssensoren
  63. pinMode(sensorIR[i], INPUT);
  64. }
  65. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  66.  
  67. Serial.begin (9600);
  68.  
  69. buggyStart(); // Melding dat de buggy opgestart is
  70. }
  71.  
  72.  
  73.  
  74. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  75. //~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Void Loop - Main Programme - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  76. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  77.  
  78. void loop(){
  79. //=====================================================================
  80. //= Read the IRsensor values =
  81. //=====================================================================
  82. int sensorValue[3] = {0, 0, 0};
  83. int valueIR; // Stokage ruimte voor de hoogste IR waarde
  84. int threshold = 120; // Minimum storings waarde die hij ziet in open lucht
  85. int sampleTime = 50; // Tijd nodig om de sensors in te lezen
  86. int i;
  87. byte highestSensor;
  88.  
  89. for(i = 0; i < 2; i++){
  90. sensorValue[i] = analogRead(sensorIR[i]);
  91.  
  92. if(sensorValue[i] > valueIR){
  93. valueIR = sensorValue[i];
  94. highestSensor = i;
  95. }
  96. if((threshold > valueIR) || (valueIR == 0)){
  97. highestSensor = 0;
  98. }
  99. if(sensorValue[i] <= threshold){
  100. digitalWrite(speaker, LOW);
  101. digitalWrite(led, LOW);
  102. goForward();
  103. }
  104.  
  105. if((sensorValue[i] > threshold) && (sensorValue[i] <= 150)){
  106. digitalWrite(speaker, LOW);
  107. motorStop();
  108. avoidObject();
  109.  
  110. digitalWrite(led, HIGH);
  111. delay(100);
  112. digitalWrite(led, LOW);
  113. delay(100);
  114. }
  115.  
  116. if((sensorValue[i] >= 150) && (sensorValue[i] < 500)){
  117. digitalWrite(speaker, HIGH);
  118. digitalWrite(led, HIGH);
  119. delay(100);
  120. digitalWrite(led, LOW);
  121. delay(100);
  122. }
  123.  
  124. if(sensorValue[i] >= 500){
  125. digitalWrite(speaker, LOW);
  126. digitalWrite(led, LOW);
  127. }
  128. delay(sampleTime);
  129. }
  130. }
  131.  
  132.  
  133. //=====================================================================
  134. //= Backriding decision =
  135. //=====================================================================
  136. void avoidObject(){
  137. while(1){
  138. int sensorValue[3] = {0, 0, 0};
  139. int threshold = 120;
  140. int i = 0;
  141.  
  142. for(i = 0; i < 2; i++){
  143. sensorValue[i] = analogRead(sensorIR[i]);
  144.  
  145. if(sensorValue[i] > 250){
  146. goBackward();
  147. }
  148. else{
  149. goLeft();
  150. if(sensorValue[i] <= threshold){
  151. break;
  152. }
  153. }
  154. }
  155. }
  156.  
  157. }
  158.  
  159. //=====================================================================
  160. //= Set turn Right =
  161. //=====================================================================
  162. int goRight(){
  163. setmotorR(LOW, (rightPwm - (rightPwm/2)));
  164. setmotorL(LOW, leftPwm);
  165.  
  166. Serial.println("Go left");
  167. }
  168.  
  169. //=====================================================================
  170. //= Set turn Left =
  171. //=====================================================================
  172. int goLeft(){
  173. setmotorR(LOW, rightPwm);
  174. setmotorL(LOW, (leftPwm - (leftPwm/2)));
  175.  
  176. Serial.println("Go right");
  177. }
  178.  
  179. //=====================================================================
  180. //= Set forward =
  181. //=====================================================================
  182. int goForward(){
  183. setmotorR(LOW, rightPwm);
  184. setmotorL(LOW, leftPwm);
  185.  
  186. Serial.println("Go forward");
  187. }
  188. //=====================================================================
  189. //= Setbackward =
  190. //=====================================================================
  191. int goBackward(){
  192. setmotorR(HIGH, rightPwm);
  193. setmotorL(HIGH, leftPwm);
  194.  
  195. Serial.println("Go backward");
  196. }
  197. //=====================================================================
  198. //= Set stop =
  199. //=====================================================================
  200. int motorStop(){
  201. setmotorR(LOW, LOW);
  202. setmotorL(LOW, LOW);
  203.  
  204. Serial.println("Stop");
  205. }
  206.  
  207. //=====================================================================
  208. //= Set Right motor =
  209. //=====================================================================
  210. void setmotorR(int rightMdirection, int rightpowerValue){
  211. analogWrite(rightpwmPin, rightpowerValue);
  212. digitalWrite(rightdirectionPin, rightMdirection);
  213.  
  214. Serial.println("Right motor PWM");
  215. Serial.println('richtpowerValue');
  216. }
  217.  
  218. //=====================================================================
  219. //= Set Left motor =
  220. //=====================================================================
  221. void setmotorL(int leftMdirection, int leftpowerValue){
  222. analogWrite(leftpwmPin, leftpowerValue);
  223. digitalWrite(leftdirectionPin, leftMdirection);
  224.  
  225. Serial.println("Left motor PWM");
  226. Serial.println(leftpowerValue);
  227. }
  228.  
  229. //=====================================================================
  230. //= Set buggy start =
  231. //=====================================================================
  232. void buggyStart(){
  233. Serial.println("Buggy start");
  234.  
  235. digitalWrite(speaker, HIGH);
  236. digitalWrite(led, HIGH);
  237. delay(1000);
  238. digitalWrite(led, LOW);
  239. delay(1000);
  240. digitalWrite(speaker, LOW);
  241. }
  242.  
  243. //=====================================================================
Add Comment
Please, Sign In to add comment