int main(int argc, char* argv[]) { gpioInitialise(); int spiHandle = i2cOpen(1, 0x26, 0); i2cWriteByte(spiHandle, 3); gpioDelay(100); i2cClose(spiHandle); return 0; }
int main(int argc, char** argv) { int count; uint8_t red = 0; uint8_t green = 0; uint8_t blue = 0; if (argc > 1) { for (count = 1; count < argc; count++) { printf("argv[%d] = %s\n", count, argv[count]); if (count == 1) red = atoi(argv[1]); if (count == 2) green = atoi(argv[2]); if (count == 3) blue = atoi(argv[3]); } } else { printf("please set colour eg 255 0 15\n"); return 0; } // open Linux I2C device i2cOpen(); // set address of the controller i2cSetAddress(0x53); writeValue(red++, green++, blue++); // close Linux I2C device i2cClose(); return 0; }
int main(int argc, char *argv[]) { int i; int r; int handle; char aout; unsigned char command[2]; unsigned char value[4]; unsigned char str[8]; int j; int key; if (gpioInitialise() < 0) return 1; initscr(); noecho(); cbreak(); nodelay(stdscr, true); curs_set(0); printw("PCF8591 + or - to change aout, any other key to quit."); mvaddstr(10, 0, "Brightness"); mvaddstr(12, 0, "Temperature"); mvaddstr(14, 0, "?"); mvaddstr(16, 0, "Resistor"); refresh(); handle = i2cOpen(1, PCF8591_I2C_ADDR, 0); command[1] = 0; aout = 128; while (1) { for (i=0; i<4; i++) { command[1] = aout; command[0] = 0x40 | ((i + 1) & 0x03); // output enable | read input i i2cWriteDevice(handle, &command, 2); usleep(20000); // the read is always one step behind the selected input value[i] = i2cReadByte(handle); sprintf(str, "%3d", value[i]); mvaddstr(10+i+i, 12, str); value[i] = value[i] / 4; move(10 + i + i, 16); for(j = 0; j < 64; j++) if(j < value[i]) addch('*'); else addch(' '); } refresh(); key = getch(); if ((key == '+') || (key == '=')) aout++; else if ((key == '-') || (key == '_')) aout--; else if (key != -1) break; } endwin(); i2cClose(handle); gpioTerminate(); return (0); }
void DataAquisition::run() { //Variablendeklaration int handle = 0; int dataready = 0; int winkel_old= 999; while(1) { int dataX_MSB = 0; int dataX_LSB = 0; int dataY_MSB = 0; int dataY_LSB = 0; int dataZ_MSB = 0; int dataZ_LSB = 0; signed short int dataX = 0; signed short int dataY = 0; signed short int dataZ = 0; int winkel = 0; double tangens = 0; double dataX_ABS = 0; double dataZ_ABS = 0; //i2c handle = i2cOpen(1,0x55,0); i2cSwitchCombined(1); // WICHTIG! Enable "Repeated Start"!! gpioWrite(13,1); // MMA8491_EN = 1 gpioDelay(2000); // Ton (minimales Delay) i2cWriteByte(handle,0x00); dataready = i2cReadByte(handle); if((dataready & 0x08) == 0x08) // Falls neue Daten Verfügbar { dataX_MSB = i2cReadByteData(handle,0x01); dataX_LSB = i2cReadByteData(handle,0x02); dataY_MSB = i2cReadByteData(handle,0x03); dataY_LSB = i2cReadByteData(handle,0x04); dataZ_MSB = i2cReadByteData(handle,0x05); dataZ_LSB = i2cReadByteData(handle,0x06); dataX = dataX_LSB + (dataX_MSB << 8); dataY = dataY_LSB + (dataY_MSB << 8); dataZ = dataZ_LSB + (dataZ_MSB << 8); //Absolutwert und Wandlung in Double dataX_ABS = abs(dataX); dataZ_ABS = abs(dataZ); //Berechnung Tangens tangens = (dataX_ABS)/(dataZ_ABS); //Berechnung Winkel winkel = (atan(tangens))*180 / PI; //Unterscheidung Quadrant if((dataZ >= 0) & (dataX >= 0)) // Rechts unten winkel = winkel; else if((dataZ <= 0) & (dataX >= 0)) // Rechts oben winkel = 180 - winkel; else if((dataZ <= 0) & (dataX <= 0)) // Links oben winkel = 180 + winkel; else if((dataZ >= 0) & (dataX <= 0)) // Links unten winkel = 360 - winkel ; } i2cClose(handle); gpioWrite(13,0); // MMA8491_EN = 0 if (winkel < 3 || winkel > 357) { winkel = 0; } //Filter gegen Stösse und Schläge if(winkel_old != 999) { if(winkel > (winkel_old+10)) { winkel = (winkel_old+10); } else if(winkel < (winkel_old-10)) { winkel = (winkel_old-10); } } if(fps == "2") { if(i%5 == 0) { angleArray[(i/5)] = winkel; } } else if(fps == "30") { angleArray[i] = winkel; angleArray[++i] = winkel; angleArray[++i] = winkel; } else { angleArray[i] = winkel; } winkel_old = winkel; i++; msleep(92); } }
void I2CGpioHardwareBus::Close() { i2cClose(_i2cHandle); ShutdownGpioBus(); }