示例#1
0
void main()
{

	EX0 = 0;   // Disable EX0 Interrupt
	EA = 0;    // Disable Global Interrupt Flag

	CPUfreq = 0;   // 32 Mhz

	//LSRAM4Ken = 0x17;

	BIT_SET(Gpiooe7_0,4);

	while (1) {

		BIT_SET(Gpioo7_0,4);   // Led off

		delay_1s();

		BIT_CLEAR(Gpioo7_0,4); // Led on

		delay_1s();

	}


}
void demo_test(){
    tempcounter=2;
    char c=0;
    //if(SolarStatus()==1){
        if (BatteryCharged()){
//            if (ReadInitFlag()==0){                             //check if its first initialisation of device
//                GSM_ON();                                       //turn on GSM module
//                SIM900_SEND(2);                                 //send a configuration request message to server
//                SetInitFlag();                                  //set initcheck flag
//            }
            for (char d=0; d<TRANSMIT_FREQ; d++){
                days++;                                         //increment days
                for (int i=0; i<tempcounter; i++){
                    getTempHum();                               //get temperature and humidity sensor
                    while ((TEMP_INT==0)&&(c<=3)){              //check DHT11 sensor 3 times for reading if no data received
                        getTempHum();
                        c++;
                    }
                    DayTEMP[i]=TEMP_INT;
                    DayHUM[i]=RH_INT;
                    delay_1s(3);                               //wait 30 seconds between each temperature readings
                }
                avgTempHum();                                   //calculate average temperature and humidity
                minmaxTempHum();                                //calculate minimum and maximum temperature and humidity
                getWaterLevel();                                //get water level from ultrasonic sensor
                getConductivity();
                getSolarReading();
                getBatteryReading();
                ShiftData();                                    //shift gathered data by offset
                if ((WaterLevel-OFFSET) >= WATER_THRESHOLD){    //check if water level is too low
                    SMS_data[0]=WARNING_PREFIX;                 //initiate message with warning char
                    SMS_data[1]=WaterLevel;                     //put water level in text message
                    SMS_data[2]=DATA_SUFFIX;                    //end message with suffix

                    GSM_ON();                                   //turn on sim900
                    delay_1s(5);                               //wait for GSM to connect to network
                    SIM900_SEND(1);                             //Send data message to server
                    GSM_OFF();                                  //turn off sim900
                }
                SaveData();                                     //Sava sensor readings to memory
            }
        }
        if (!BatteryCharged()){
            MonitorBattery();
        }
    SMS_data[0]=DATA_PREFIX;                            //start message with prefix
    gatherData();                                       //read data from memory
    getCheckByte();                                     //calculate check byte
    GSM_ON();                                           //turn on sim900
    delay_1s(10);                                       //wait for GSM to connect to network
    puts1USART("AT\r\n");
    delay_1s(5);
    SIM900_SEND(1);                                     //Send data message to server
   //} //solarpanel check
}
示例#3
0
文件: led.c 项目: h0nzZik/school
int main(void)
{
	DDRD  = 0xff;		/* use all pins on Port D for output */

	while(1)
	{
		PORTD = 0xff;	/* set output high -> turn all LEDs off */
		delay_1s();
		PORTD = 0xfe;	/* turn on PD0 led */
		delay_1s();
	}
}
示例#4
0
int
main(void) {
  uint8_t i;
  char buf[20], s[20];

  ioinit();

  stdout = stdin = &uart_str;
  stderr = &lcd_str;

  fprintf(stderr, "Hello world!\n");

  for (;;) {
      printf_P(PSTR("Enter command: "));
      if (fgets(buf, sizeof buf - 1, stdin) == NULL) break;
      if (tolower(buf[0]) == 'q') break;

      switch (tolower(buf[0])) {
        default:
            printf("Unknown command: %s\n", buf);
        break;

        case 'l':
            if (sscanf(buf, "%*s %s", s) > 0) {
                fprintf(&lcd_str, "Got %s\n", s);
                printf("OK\n");
            } else {
                printf("sscanf() failed\n");
            }
        break;

        case 'u':
            if (sscanf(buf, "%*s %s", s) > 0) {
                fprintf(&uart_str, "Got %s\n", s);
                printf("OK\n");
            } else {
                printf("sscanf() failed\n");
            }
        break;
      }
  }
  fprintf(stderr, "Bye-bye");
  delay_1s();
  for (i = 0; i < 3; i++) {
      putc('.', stderr);
      delay_1s();
  }
  fprintf(stderr, "\n ");

  return 0;
}
void turnGpsOn(void){
		GPIO_ResetBits(GPIOC, RESET_PIN);
		delayMs(200);
		GPIO_SetBits(GPIOC, RESET_PIN);
		//Set on pin
		delay_1s();
	    GPIO_SetBits(GPIOF, ON_PIN);
	    delayMs(200);
		GPIO_ResetBits(GPIOF, ON_PIN);
}
示例#6
0
/* Init on board LEDs */
void led_init() {
	drive(LED1);
	drive(LED2);

	set_output(LED1);
	set_output(LED2);

	delay_1s();

	clr_output(LED1);
	clr_output(LED2);
}
示例#7
0
文件: led.c 项目: h0nzZik/school
int main(void)
{
	DDRD  = 0xff;		/* use all pins on Port D for output */
	PORTD = 0xff;		/* set output high -> turn all LEDs off */

	char pos = 0;
	while(1)
	{
		/* toggle PD0 led - 3 variants */
		/* PORTD ^= 0x01; */
		/* PORTD ^= (1<<PORTD0); */
		/* PORTD ^= _BV(PORTD0); */
		
		PORTD = ~(1<<pos);
		delay_1s();
		PORTD = 0xFF;
		delay_1s();
		pos++;
		pos %= 8;
		
	}
}
void routine(){
        START:
        if(SolarStatus()==1){                                       //if solar-panel is on
            solarcounter = 0;

            while (BatteryCharged()){                               //if battery is charged
                if (ReadInitFlag()==0){                             //check if its first initialisation of device
                    GSM_ON();                                       //turn on GSM module
                    SIM900_SEND(2);                                 //send a configuration request message to server
                    SetInitFlag();                                  //set initcheck flag
                }
                char c=0;
                while ((TEMP_INT==0)&&(c<=3)){                      //check DHT11 sensor 3 times for reading if no data received
                    getTempHum();
                    c++;
                }
                DayTEMP[tempcounter]=TEMP_INT;
                DayHUM[tempcounter]=RH_INT;
                tempcounter++;
                delay_1ms(1);
                sleep();

                if (tempcounter==2){
                    days++;                                         //increment days
                    avgTempHum();                                   //calculate average temperature and humidity
                    minmaxTempHum();                                //calculate minimum and maximum temperature and humidity
                    getConductivity();                              //get conductivity value from sensor
                    getWaterLevel();                                //get water level from ultrasonic sensor

                    ShiftData();                                    //shift gathered data by offset
                    if ((WaterLevel-OFFSET) >= WATER_THRESHOLD){    //check if water level is too low
                        SMS_data[0]=WARNING_PREFIX;                 //initiate message with warning char
                        SMS_data[1]=WaterLevel;                     //put water level in text message
                        SMS_data[2]=DATA_SUFFIX;                    //end message with suffix

                        GSM_ON();                                   //turn on sim900
                        delay_1s(10);                               //wait for GSM to connect to network
                        SIM900_SEND(1);                             //Send data message to server
                    }
                }
            }
            if (!BatteryCharged()){
                MonitorBattery();
            }
            if (SolarStatus()==0)                                  //if solar-panel is off
                goto OFF;
            goto START;

        }
        else {                                                      //when solar-panel is off
            OFF:
            SaveData();                                             //Sava sensor readings to memory
            tempcounter=0;

            //check if data transmission frequency is met
            if (days >= TRANSMIT_FREQ){
                SMS_data[0]=DATA_PREFIX;                            //start message with prefix
                gatherData();                                       //read data from memory
                getCheckByte();                                     //calculate check byte
                GSM_ON();                                           //turn on sim900
                delay_1s(10);                                       //wait for GSM to connect to network
                SIM900_SEND(1);                                     //Send data message to server
                days=0;
            } //reset days counter only after successful tranmsission

            //sleep for 6h
            for (char z=0; z<3; z++){
                sleep();
            }

            while (SolarStatus()==2){ //if solar-panel is off
                for (char z=0; z<5; z++){
                    delay_1s(60);
                }
                solarcounter++;
                if (solarcounter > SOLAR_THRESHOLD){
                        //turn on Fault LED
                        goto START;
                }
            }
        }

}