Exemple #1
0
/*
 * Larm - ansvarig för att aktivera olika larmindikationer (kamera, led, siren).
 */
void larm(int currentTime){
    
    //Larmstate signalerar om larmet ska slås på
    if(larmState) {
        if((currentTime - outportTime[15]) > outportLength[15]) {
            outportTime[15] = currentTime;
            sendPulse(100000,100000 , 15); //Skicka puls till kamera
        }     
        
        signalon(DE2_PIO_JP1_OUT3_5_BASE, 3); //Slå på signal till LED
    }
    else {
        signaloff(DE2_PIO_JP1_OUT3_5_BASE, 2); //Slå av kamera
        signaloff(DE2_PIO_JP1_OUT3_5_BASE, 3); //Slå av LED
        signaloff(DE2_PIO_JP1_OUT3_5_BASE, 4); //Slå av Siren
    }
    
    //Larmstate ska bara slå på siren om switch 1 är på
    if(larmState && buttonState[1]) {
        if((currentTime - outportTime[17]) > outportLength[17]) {
            outportTime[17] = currentTime;
            sendPulse(10000,10000 , 17); //Skicka puls till siren
        }
    }
    else if(larmState && !buttonState[1]) {
        signaloff(DE2_PIO_JP1_OUT3_5_BASE, 4);
    }
}
Exemple #2
0
/**
  * The main functionality of the program.
  *
  */
int main(int argc, char *argv[]) {
  // Gets the number of measurements to display from the first parameter
  int numDisplayed = atoi(argv[1]);

  // Sets up the GPIO pins
  setup();

  // Set the system start time
  sysStart = micros();

  // Print the headers for each row
  printf("Time\t\t");
  for (int m = 1; m < SENSORS + 1; m++) {
    printf("%d\t", m);
  }
  printf("\n");

  // Start printing readings
  for (int i = 0; i < numDisplayed; i++) {

    for (int j = 0; j < READINGS; j++) {
      // Minimum 60us delay between readings
      delayMicroseconds(60);
      sendPulse();

      // Print current time
      printf("%lu\t\t", (micros() - sysStart) / 1000);

      // Print CMs
      int cms[SENSORS];
      for (int k = 0; k < SENSORS; k++) {
        cms[k] = getCM(k);
        if (cms[k] < 0) {
          cms[k] = 400;
        }
        A[k][j] = cms[k];

        // print raw data
        printf("%d\t", cms[k]);
      }
      printf("\n");

      // Wait for echos to die out
      delayMicroseconds(23000);
    }

    //int displayCm[SENSORS];

    // Display the results
    //for (int l = 0; l < SENSORS; l++) {
    //displayCm[l] = selection_algorithm(0, READINGS - 1, SENSITVTY, l);
    //printf("%d\t", displayCm[l]);
    //}

    //printf("\n");
  }

  return 0;
}
Exemple #3
0
/*
 * sendPingPulse - skickar puls för samtliga pingsensorer.
 */
void sendPingPulse(int currentTime) {
    if((currentTime - outportTime[2]) > outportLength[2]) {
        outportTime[2] = currentTime;
        
        sendPulse(1, 4500, 2);
    }
    if((currentTime - outportTime[3]) > outportLength[3]) {
        outportTime[3] = currentTime;
        
        sendPulse(1, 4500, 3);
    }
    if((currentTime - outportTime[5]) > outportLength[5]) {
        outportTime[5] = currentTime;
        
        sendPulse(1, 4500, 5);
    }
}
Exemple #4
0
//--------------------------------------------------------------
void ofApp::update(){
    
    int time = ofGetElapsedTimeMillis();
    
    if (time - lastPulseTime > PULSE_INTERVAL) {
        lastPulseTime = time;
        sendPulse();
    }
    
    while(oscReceiver.hasWaitingMessages()){
		// get the next message
		ofxOscMessage m;
		oscReceiver.getNextMessage(&m);
        
        // handle heartbeat
        if(m.getAddress() == "/call/home"){
			registerClient(&m);
		}
    }

}
Exemple #5
0
void VBIRute() {
	int msg=PMSG_LoseScr;
	int ctrl,ch;
	
	
	stopRaster();
	cli();
	if (needup) {
		DeleteStars();
	} 
	CalcStars();
	needup=1; 
	
	if (check) {
		ch = scanKey(&ctrl);
		if (ch == 27 && (ctrl & 2)) {
			sendPulse(chan,&msg);
			check=0;
		}
	} 
	sei();
	setRaster(NULL,250);
}
Exemple #6
0
/* driveFunction - Funktion för att köra i olika riktningar. Bestämmer med en case sats
 * vilken riktning bot ska köra i. Detta bestämms genom att skicka olika långa signaler
 * till servo.
 */
void driveFunction(int currentTime, int driveState) {
    switch(driveState) {
        //Vänd höger
        case 0:
            if((currentTime - outportTime[0]) > outportLength[0]) {
                outportTime[0] = currentTime;
                
                //Skicka puls på out port (servo 1)
                sendPulse(200, 100, 0);
            }
            if((currentTime - outportTime[1]) > outportLength[1]) {
                outportTime[1] = currentTime;
                
                 //Skicka puls på out port (servo 2)
                sendPulse(200, 100, 1);
            }
            break;
        //Vänd vänster
        case 1:
            if((currentTime - outportTime[0]) > outportLength[0]) {
                outportTime[0] = currentTime;
                
                sendPulse(100, 100, 0);
            }
            if((currentTime - outportTime[1]) > outportLength[1]) {
                outportTime[1] = currentTime;
                
                sendPulse(100, 100, 1);
            }
            break;
        //Kör frammåt
        case 2:
            if((currentTime - outportTime[0]) > outportLength[0]) {
                outportTime[0] = currentTime;
                
                sendPulse(200, 100, 0);
            }
            if((currentTime - outportTime[1]) > outportLength[1]) {
                outportTime[1] = currentTime;
                
                sendPulse(100, 100, 1);
            }
            break;
        //Kör bakåt
        case 3:
            if((currentTime - outportTime[0]) > outportLength[0]) {
                outportTime[0] = currentTime;
                
                sendPulse(100, 100, 0);
            }
            if((currentTime - outportTime[1]) > outportLength[1]) {
                outportTime[1] = currentTime;
                
                sendPulse(200, 100, 1);
            }
            break;
        //Stå still
        case 4:
            break;
        default:
            break;
    }
}