Advertisement
Guest User

Untitled

a guest
Jun 27th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. int valore;
  2. int triggerato;
  3. int triggeratoold;
  4. void iniziotrasmissione()
  5. {
  6. //Bloccare gli interrupt
  7. detachInterrupt(digitalPinToInterrupt(3));
  8. noInterrupts();
  9.  
  10. //840 microsecondi + 2*840 microsecondi
  11.  
  12. //720 microsecondi fra un bit e l'altro
  13.  
  14. //300 microsecondi
  15.  
  16. //16 bit
  17. delayMicroseconds(800*3+250);
  18. int i;
  19. valore = 0;
  20. for ( i = 0; i < 16; i++ )
  21. {
  22. int v = digitalRead(3);
  23. valore |= v ? ( 1 << i ) : 0;
  24. digitalWrite(9, HIGH);
  25. delayMicroseconds(50);
  26. digitalWrite(9, LOW);
  27. delayMicroseconds(700);
  28. }
  29.  
  30. if ( valore != 0 ) {
  31. for ( i = 0; i < 16; i++ )
  32. {
  33. //Serial.print(( valore & (1 << i)) ? "1" : "0");
  34. }
  35. int idsensore = (valore & ( 0x3 << 8 )) >> 8;
  36. if ( idsensore == 3 )
  37. {
  38. triggeratoold = triggerato;
  39. triggerato = 0;
  40. }
  41. int distanza = valore&0xff;
  42. Serial.print("ID Sensore: ");
  43. Serial.print(idsensore);
  44. Serial.print(" Distanza: ");
  45. Serial.print(distanza);
  46. Serial.println();
  47. if ( distanza > (triggeratoold ? 140 : 155) )
  48. {
  49. triggerato = 1;
  50. }
  51. if ( idsensore == 0 )
  52. {
  53. digitalWrite(13,triggerato);
  54.  
  55. }
  56. }
  57. attachInterrupt(digitalPinToInterrupt(3), iniziotrasmissione, RISING);
  58. interrupts();
  59. }
  60.  
  61. void setup() {
  62. pinMode(3, INPUT);
  63. pinMode(9,OUTPUT);
  64. //pinMode(5, OUTPUT);
  65. attachInterrupt(digitalPinToInterrupt(3), iniziotrasmissione, RISING);
  66. Serial.begin(115200);
  67. }
  68.  
  69. void loop() {
  70. int i;
  71.  
  72.  
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement