void* entryDistanciaFrontal(void*) { int spiChannel=0; int channelConfig=CHAN_CONFIG_SINGLE; printf("Cargando modulo \n"); spiSetup(spiChannel); pinMode(PIN_CNI70_SIGUELINEAS,INPUT); while (1) { int distChan0 = myAnalogRead(spiChannel,channelConfig,0); int distChan1 = myAnalogRead(spiChannel,channelConfig,1); int sigueL = digitalRead(PIN_CNI70_SIGUELINEAS); printf(" Canal 0: %d Canal 1: %d SigueL: %d\n",distChan0,distChan1,sigueL); delay(500); } close (myFd) ; return 0; }
int main (int argc, char *argv []) { int loadSpi=FALSE; int analogChannel=0; int spiChannel=0; int channelConfig=CHAN_CONFIG_SINGLE; int print_once; int modus_operandi = 1; int mode_flag=1; int rows = 2; int cols = 16; int bits = 4; //4 bit mode char buf [32]; char tempbuf [32]; char weatherBuff; char *tempmsg; int lcd; struct tm *t ; time_t tim ; int i; int max_distance; int curr_distance; /* if (argc < 2) { fprintf (stderr, "%s\n", usage) ; return 1 ; } if((strcasecmp (argv [1], "all") == 0) ) argv[1] = "0"; if ( (sscanf (argv[1], "%i", &analogChannel)!=1) || analogChannel < 0 || analogChannel > 8 ) { printf ("%s\n", usage) ; return 1 ; } int i; for(i=2; i<argc; i++) { if (strcasecmp (argv [i], "-l") == 0 || strcasecmp (argv [i], "-load") == 0) loadSpi=TRUE; else if (strcasecmp (argv [i], "-ce1") == 0) spiChannel=1; else if (strcasecmp (argv [i], "-d") == 0 || strcasecmp (argv [i], "-diff") == 0) channelConfig=CHAN_CONFIG_DIFF; } */ // if(loadSpi==TRUE) loadSpiDriver(); wiringPiSetup () ; //set button input // pinMode(BUTTON, INPUT); spiSetup(spiChannel); i = 0; print_once = 0; if (bits == 4) lcdHandle = lcdInit (rows, cols, 4, 11,15, 4,5,6,7,0,0,0,0) ; else lcdHandle = lcdInit (rows, cols, 8, 11,15, 0,1,2,3,4,5,6,7) ; if (lcdHandle < 0) { fprintf (stderr, "%s: lcdInit failed\n", argv [0]) ; return -1 ; } //-------------Begin Infinite Loop pinMode(27, OUTPUT); //digitalWrite(27, HIGH); pinMode(23, OUTPUT); digitalWrite(27,LOW); digitalWrite(23,LOW); //sendEmail(); printf("grabbing weather data\n"); getWeather(); printf("weather is: %s\n", filestring); delay(20); /*set initial distance for ultrasonic sensor*/ ZonicSetup(); max_distance = getZonicCM(); while(1){ //ZonicSetup(); curr_distance = getZonicCM(); if (digitalRead(MODUS_OPERANDI_PIN) == LOW) {mode_flag = (mode_flag+1)%2; delay(500);} /*else if (digitalRead(MODUS_OPERANDI_PIN) == HIGH) {mode_flag = 0;} */ /*MODE_FLAG = 0.....HOME MODE MODE_FLAG = 1......AWAY MODE */ /*MAYBE ADD SET APPLIANCE MODE*/ printf("How fast is this while?\n"); /*HOME MODE * *Display Temperature and Date on LCD * */ if (mode_flag == 1){ digitalWrite(27,LOW); digitalWrite(23,HIGH); tim = time (NULL) ; t = localtime (&tim) ; sprintf (buf, "%02d:%02d:%02d %02d/%02d", t->tm_hour, t->tm_min, t->tm_sec, t->tm_mon, t->tm_mday) ; //lcdPosition (lcdHandle, (cols - 8) / 2, 1) ; lcdPosition (lcdHandle, 0, 1); lcdPuts (lcdHandle, buf) ; //printf("got here1\n"); //pingPong (lcd, cols) ; temp = steinhartAndHart(myAnalogRead(0,8,0)); sprintf (tempbuf," TEMP:%.0fC WEATHER: %s MODE:HOME ", temp,filestring); tempmsg = tempbuf; lcdPosition (lcdHandle, 0, 1); scrollMessage(tempmsg,0, 16); //scrollMessage(weatherBuff, 0, 16); //lcdPuts (lcdHandle, tempbuf); // lcdPuts (lcdHandle, chr(223)); // printf("mode_flag = %d\n", mode_flag); /* if (digitalRead(BUTTON) == LOW){ printf("\n------HOME MODE--------\n"); printf("Thermistor Output (Channel 1):\n"); printf("-----------------\n"); temp = steinhartAndHart(myAnalogRead(0,8,0)); sprintf (tempbuf, "Temp: %.02d C", temp); lcdPosition (lcdHandle, 0, 0); lcdPuts (lcdHandle, tempbuf); printf("Celsius: %.02f\n", temp); //print out temperature in Celsius temp = (temp * 9.0)/5.0 + 32.0; printf("Fahrenheit: %.02f\n", temp); //print out temperature in Fahrenheit //delay(170); } */ } /*AWAY MODE * *TAKE IN LDR AND SONIC SENSOR DATA * */ else { digitalWrite(23,LOW); digitalWrite(27,HIGH); //printf("mode_flag = %d\n", mode_flag); //delay(500); //mode_flag = 0; //do something /* if (curr_distance < max_distance){ printf("Intruder at %d!\n",getZonicCM()); }*/ printf("%d cm\n", getZonicCM()); tim = time (NULL) ; t = localtime (&tim) ; sprintf (buf, "%02d:%02d:%02d %02d/%02d", t->tm_hour, t->tm_min, t->tm_sec, t->tm_mon, t->tm_mday) ; //lcdPosition (lcdHandle, (cols - 8) / 2, 1) ; lcdPosition (lcdHandle, 0, 1); lcdPuts (lcdHandle, buf) ; temp = steinhartAndHart(myAnalogRead(0,8,0)); sprintf (tempbuf, " Temp:%.0fC MODE:AWAY ", temp); lcdPosition (lcdHandle, 0, 0); //lcdPuts (lcdHandle, tempbuf); scrollMessage(tempbuf,0,16); // printf("got here1\n"); /*ULTRASONIC SENSOR*/ // printf("Distance: %dcm\n",getZonicCM()); // delay(2000); /* if (digitalRead(BUTTON) == LOW){ printf("\n------AWAY MODE------\n"); printf("LDR Output (Channel 2):\n"); printf("LDR Output: %d\n", myAnalogRead(0,8,1)); printf("-----------------\n"); //delay(200); } */ } } return 0; }