Advertisement
karlospv94

prova_infrarojos

Jun 19th, 2013
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. /* CODI LLIURE */
  2.  
  3. /* Es mostra per pantalla la distancia a la que es troba l'objecte
  4. del sensor d'ultrasons.
  5. El boto "1" del comandament a distancia activara el LED;
  6. el "2" el zumbador; el "3" els dos al mateix temps;
  7. el d'apagar mantindra els dos elements sempre a nivell baix i el de
  8. reset posara tots els valors a 0.
  9. Cada vegada que el LED || el zumbador s'activen, el contador display
  10. suma 1. Cada 10 activacions, es mostra per pantalla la quantitat
  11. registrada. /*
  12.  
  13.  
  14. /* Crida a la llibreria Ultrasonic i Infrarojos */
  15. #include <Ultrasonic.h>
  16. #include <NECIRrcv.h>
  17.  
  18. /* Creacio nou Ultrasonic */
  19. Ultrasonic ultrasons(4,7);
  20.  
  21. /* Variables principals */
  22. #define PinIR A4
  23. #define LedPinIR A5
  24. #define LedPin 13
  25. #define zumb 12
  26. int dist = 0;
  27. int cont = 0;
  28. int acts = 0;
  29. int acum;
  30.  
  31. /* Creacio nou Infrarojos */
  32. NECIRrcv ir(PinIR);
  33.  
  34. /* Variables relacionades amb l'IR */
  35. #define led "f30cff00"
  36. #define zumbador "e718ff00"
  37. #define elsdos "a15eff00"
  38. #define apagar "ba45ff00"
  39. #define reset "f20dff00"
  40.  
  41. /* Inicialitzacio del programa */
  42. void setup() {
  43. Serial.begin(9600);
  44. Serial.println("\t\t\t\tSoftware lliure!\n\n");
  45. Serial.print("Espere 5 segons...");
  46. pinMode(LedPin, OUTPUT);
  47. pinMode(LedPinIR, OUTPUT);
  48. pinMode(zumb, OUTPUT);
  49. ir.begin();
  50. display (1,1,1,1,1,1,0);
  51. pinMode(9, OUTPUT);
  52. pinMode(10, OUTPUT);
  53. pinMode(11, OUTPUT);
  54. pinMode(8, OUTPUT);
  55. pinMode(A0, OUTPUT);
  56. pinMode(A1, OUTPUT);
  57. pinMode(A2, OUTPUT);
  58. delay(5000);
  59. Serial.println("\t\tOK!\n\n\n");
  60. delay(250);
  61. }
  62.  
  63. /* Crea la funcio del display de 7 segments */
  64. void display(int a, int b, int c, int d, int e, int f, int g){
  65. digitalWrite (A0,a);
  66. digitalWrite (8,b);
  67. digitalWrite (9,c);
  68. digitalWrite (10,d);
  69. digitalWrite (11,e);
  70. digitalWrite (A1,f);
  71. digitalWrite (A2,g);
  72. }
  73.  
  74. void condicions(int n){
  75. switch(n){
  76. case 0: display (1,1,1,1,1,1,0); break;
  77. case 1: display (0,1,1,0,0,0,0); break;
  78. case 2: display (1,1,0,1,1,0,1); break;
  79. case 3: display (1,1,1,1,0,0,1); break;
  80. case 4: display (0,1,1,0,0,1,1); break;
  81. case 5: display (1,0,1,1,0,1,1); break;
  82. case 6: display (1,0,1,1,1,1,1); break;
  83. case 7: display (1,1,1,0,0,0,0); break;
  84. case 8: display (1,1,1,1,1,1,1); break;
  85. case 9: display (1,1,1,0,0,1,1); break;
  86. }
  87. }
  88.  
  89. void mled(){
  90. if(dist<=40){
  91. digitalWrite(LedPin, HIGH);
  92. cont++;
  93. condicions(cont);
  94. }
  95. else
  96. digitalWrite(LedPin, LOW);
  97. }
  98.  
  99. void mzumbador(){
  100. if(dist<=40){
  101. digitalWrite(zumb, HIGH);
  102. cont++;
  103. condicions(cont);
  104. }
  105. else
  106. digitalWrite(zumb, LOW);
  107. }
  108.  
  109. void melsdos(){
  110. if(dist<=40){
  111. digitalWrite(LedPin, HIGH);
  112. digitalWrite(zumb, HIGH);
  113. cont++;
  114. condicions(cont);
  115. }
  116. else{
  117. digitalWrite(LedPin, LOW);
  118. digitalWrite(zumb, LOW);
  119. }
  120. }
  121.  
  122. void mapagar(){
  123. digitalWrite(LedPin, LOW);
  124. digitalWrite(zumb, LOW);
  125. }
  126.  
  127. void mreset(){
  128. condicions(0);
  129. acts = 0;
  130. }
  131.  
  132. /* Bucle del programa. Estructura principal */
  133. void loop() {
  134. dist = ultrasons.Ranging(CM);
  135. Serial.print("Distancia: ");
  136. if(dist<10) Serial.print(" ");
  137. Serial.print(dist);
  138. Serial.print(" cm");
  139. Serial.print("\t\tNombre d'activacions: ");
  140. Serial.println(acts);
  141. unsigned long ircode;
  142. String hexIR;
  143. if(ir.available()){
  144. analogWrite(LedPinIR, 255);
  145. ircode = ir.read();
  146. hexIR = String(ircode, HEX);
  147. if(hexIR==led) acum = 1;
  148. else if(hexIR==zumbador) acum = 2;
  149. else if(hexIR==elsdos) acum = 3;
  150. else if(hexIR==apagar) acum = 4;
  151. else if(hexIR==reset){
  152. acum = 5;
  153. digitalWrite(LedPin, HIGH);
  154. delay(200);
  155. digitalWrite(LedPin, LOW);
  156. delay(200);
  157. digitalWrite(LedPin, HIGH);
  158. delay(200);
  159. digitalWrite(LedPin, LOW);
  160. }
  161. }
  162. if(acum==1) mled();
  163. else if(acum==2) mzumbador();
  164. else if(acum==3) melsdos();
  165. else if(acum==4) mapagar();
  166. else if(acum==5) mreset();
  167. analogWrite(LedPinIR, 0);
  168. if(cont>=10){
  169. condicions(0);
  170. cont = 0;
  171. acts += 10;
  172. }
  173. delay(250);
  174. }
  175.  
  176. /* Fi del programa */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement