Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int valore;
- int triggerato;
- int triggeratoold;
- void iniziotrasmissione()
- {
- //Bloccare gli interrupt
- detachInterrupt(digitalPinToInterrupt(3));
- noInterrupts();
- //840 microsecondi + 2*840 microsecondi
- //720 microsecondi fra un bit e l'altro
- //300 microsecondi
- //16 bit
- delayMicroseconds(800*3+250);
- int i;
- valore = 0;
- for ( i = 0; i < 16; i++ )
- {
- int v = digitalRead(3);
- valore |= v ? ( 1 << i ) : 0;
- digitalWrite(9, HIGH);
- delayMicroseconds(50);
- digitalWrite(9, LOW);
- delayMicroseconds(700);
- }
- if ( valore != 0 ) {
- for ( i = 0; i < 16; i++ )
- {
- //Serial.print(( valore & (1 << i)) ? "1" : "0");
- }
- int idsensore = (valore & ( 0x3 << 8 )) >> 8;
- if ( idsensore == 3 )
- {
- triggeratoold = triggerato;
- triggerato = 0;
- }
- int distanza = valore&0xff;
- Serial.print("ID Sensore: ");
- Serial.print(idsensore);
- Serial.print(" Distanza: ");
- Serial.print(distanza);
- Serial.println();
- if ( distanza > (triggeratoold ? 140 : 155) )
- {
- triggerato = 1;
- }
- if ( idsensore == 0 )
- {
- digitalWrite(13,triggerato);
- }
- }
- attachInterrupt(digitalPinToInterrupt(3), iniziotrasmissione, RISING);
- interrupts();
- }
- void setup() {
- pinMode(3, INPUT);
- pinMode(9,OUTPUT);
- //pinMode(5, OUTPUT);
- attachInterrupt(digitalPinToInterrupt(3), iniziotrasmissione, RISING);
- Serial.begin(115200);
- }
- void loop() {
- int i;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement