//gcc grovepi_digital_write.c grovepi.c -Wall int main(void) { //Exit on failure to start communications with the GrovePi if(init()==-1) exit(1); //Set pin mode to output pinMode(7,1); while(1) { digitalWrite(7,1); pi_sleep(500); digitalWrite(7,0); pi_sleep(500); } return 1; }
//Set speed of the both motors // arg: // speed-> 0-255 int set_speed(int speed) { if(speed >255) speed =255; else if(speed <0) speed =0; set_left_speed(speed); pi_sleep(100); set_right_speed(speed); return 1; }
//Returns the firmware version int fw_ver(void) { int ver; write_block(fw_ver_cmd,0,0,0); pi_sleep(100); ver=read_byte(); read_byte(); if(ver==-1) return -1; return ver; }
//Read ultrasonic sensor // arg: // pin -> Pin number on which the US sensor is connected // return: distance in cm int us_dist(int pin) { int b1,b2; write_block(us_cmd,pin,0,0); pi_sleep(80); b1=read_byte(); b2=read_byte(); if(b1==-1 || b2==-1) return -1; return b1* 256 + b2; }
// Read analog value from Pin int analogRead(int pin) { int b1,b2; write_block(analog_read_cmd,pin,0,0); pi_sleep(70); b1=read_byte(); b2=read_byte(); if(b1==-1 || b2==-1) return -1; return b1* 256 + b2; }
float volt(void) { int v[2]; float voltage; write_block(volt_cmd,0,0,0); pi_sleep(100); v[0]=read_byte(); v[1]=read_byte(); voltage=v[0]*256+v[1]; voltage=(5.0*voltage/1024)/.4; return voltage; }
//Read the trim value in EEPROM if present else return -3 int trim_read(void) { int b1,b2,trim; if(write_block(trim_read_cmd,0,0,0)==-1) return -1; pi_sleep(80); b1=read_byte(); b2=read_byte(); if(b1==-1 || b2==-1) return -1; trim=b1*256+b1; if (trim ==255) return -3; return trim; }
// Arduino Digital Read int digitalRead(int pin) { int dRead; if(pin==10||pin==15||pin==0||pin==1) { if(write_block(digital_read_cmd,pin,0,0)==-1) return -1; pi_sleep(100); dRead=read_byte(); read_byte(); if(dRead==-1) return -1; return dRead; } else return -2; }
int main(void) { float *ht; //Exit on failure to start communications with the GrovePi if(init()==-1) exit(1); //Set pin mode to input pinMode(7,0); while(1) { ht=dht(7,0); printf("humidity = %.02f%% temp = %.02f C\n", ht[0], ht[1]); //Sleep for 50ms pi_sleep(50); } return 1; }
int main(void) { int dval; //Exit on failure to start communications with the GrovePi if(init()==-1) exit(1); //Set pin mode to input pinMode(8,0); while(1) { dval=ultrasonicRead(8); printf("Digital read %d\n", dval); //Sleep for 50ms pi_sleep(50); } return 1; }