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

}
Пример #2
0
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);
}
Пример #4
0
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;
}