void DodecaudionOSCBridgeApp::guiEvent(ofxUIEventArgs &e) { std::cout << e.widget->getID() << " / " << e.widget->getParent()->getName() << " / " << e.widget->getName() << std::endl; //init new serial port if(e.widget->getParent()->getName() == UI_SERIAL_PORT_SELECT_DROPDOWN_NAME){ ofxUIDropDownList *dropdown = (ofxUIDropDownList *) e.widget; string serialPath = e.widget->getName(); initSerialPort(serialPath, serialPortBaudRateCurrent); //dropdown->setToggleVisibility( false ); } if( e.widget->getName() == UI_DODECAUDION_CALIBRATE_TOGGLE_NAME ){ ofxUIToggle *toggle = (ofxUIToggle *) e.widget; isCalibrating = toggle->getValue(); calibrationStartFrame = ofGetFrameNum(); } if( e.widget->getName() == UI_DODECAUDION_DRAW_PLOTS_TOGGLE_NAME ){ ofxUIToggle *toggle = (ofxUIToggle *) e.widget; drawPlots = toggle->getValue(); } if( e.widget->getName() == UI_OSC_HOST_TEXTINPUT_NAME ){ ofxUITextInput *textfield = (ofxUITextInput *) e.widget; string oscHostToSet = textfield->getTextString(); initOSC(oscHostToSet, oscPortCurrent); } if( e.widget->getName() == UI_OSC_PORT_TEXTINPUT_NAME ){ ofxUITextInput *textfield = (ofxUITextInput *) e.widget; int oscPortToSet = atoi(textfield->getTextString().c_str()); initOSC(oscHostCurrent, oscPortToSet); } }
int16_t main(void) { initOSC(); init_Ports(); while(1){//Main loop LEDR_LAT = 1; LEDG_LAT = 1; LEDB_LAT = 0; } }
//-------------------------------------------------------------- void DodecaudionOSCBridgeApp::setup(){ //Default values serialPortBaudRateCurrent = SERIAL_DEFAULT_BAUDRATE; serialBuffer = ""; serialPortSelected = false; isCalibrating = false; drawPlots = false; calibrationStartFrame = 0; calibrationFrameLimit = 1200; for( int i = 0 ; i < DODECAUDION_VALUES_COUNT ; i++ ){ dodecaudionValues.push_back( 0.0f ); dodecaudionValuesPrev.push_back( 0.0f ); dodecaudionValuesCalibrationOffset.push_back( 0.0f ); } initGUI(); initOSC(OSC_DEFAULT_HOST , OSC_DEFAULT_PORT); }
int main(int argc, char** argv) { printf("i2c c test.\n"); int fd[2]; unsigned char buf[10]; char *fileName = "/dev/i2c-1"; int addr[2] = {0x29, 0x39}; // Adressen der Chips openPort(&fd[0]); openPort(&fd[1]); addSlave(addr[0], &fd[0]); addSlave(addr[1], &fd[1]); int i; int readcount[2] = {0, 1}; double maxlux = 0.0; int maxCh0 = 0; //Variablen zur Berechnung des Lichteinfalls int cLow[2] = {65536, 65536}; int cHigh[2] = {0, 0}; double cc[2] = {0.0, 0.0}; double maxcc[2] = {0.0, 0.0}; double lastcc[2] = {0.0, 0.0}; double epsilon = 0.01; //Variablen zur Aktivierung der Dosen: int active[2] = {0, 0}; double actThr = 0.1; //Schwellenwert um Verdunklung zu erkennen //initialisiere OSC: lo_address oscaddr = initOSC("192.168.1.8", "7777"); while(1) { for(i = 0; i < 2; i++) { cc[i] = readLight(&fd[i], &cLow[i], &cHigh[i]); readcount[i]++; if(cc[i] > maxcc[i]) { maxcc[i] = cc[i]; } if(readcount[i] >= 3) { if(active[i]) { if((lastcc[i] > maxcc[i] + epsilon) || (lastcc[i] < maxcc[i] - epsilon)) { //Lichtintensitaet hat sich signifikant geaendert -> Ausgabe! printf("%d Licht: %f\n", i, maxcc[i]); if(i == 0) sendOSC(&oscaddr, "/licht0", maxcc[i]); else if(i == 1) sendOSC(&oscaddr, "/licht1", maxcc[i]); lastcc[i] = maxcc[i]; } } else { if(maxcc[i] > (1.0 - actThr)) { printf("Dose %d ist jetzt aktiv.\n", i); active[i] = 1; } } readcount[i] = 0; maxcc[i] = 0.0; } } /* lo_address t = lo_address_new("192.168.1.8", "7777"); if(lo_send(t, "/light", "f", cc) == -1) { printf("OSC Fehler: %s\n", lo_address_errstr(t)); }*/ usleep(13 * 1000); } return 0; }