/* * 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); } }
/** * 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; }
/* * 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); } }
//-------------------------------------------------------------- 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); } } }
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); }
/* 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; } }