int main(void) {
	int lcd;
	//if(wiringPiSetupGpio() == -1) return EXIT_FAIL;
	lcd = lcd_start(); 
	setbuf(stdout,NULL);
	pinMode(LSW, INPUT);
	pinMode(RSW, INPUT);
	pinMode(TGSW, INPUT);
	pullUpDnControl(LSW, PUD_UP);
	pullUpDnControl(RSW, PUD_UP);
	pullUpDnControl(TGSW, PUD_UP);

	int curTab=0;
	int lsw,rsw,tgsw;
	int tabStat[4]={0};
	int occupied=0;
	char s[100];
	// ex) lsw == 0  => switch pushed..
	while(1) {
		delay(100);
		lsw = digitalRead(LSW);
		rsw = digitalRead(RSW);
		tgsw = digitalRead(TGSW);
		printf("lsw, rsw tgsw :%d %d %d\n",lsw,rsw,tgsw);
		if(!occupied) {
			if(lsw == 0) occupied = 1;
			else if(rsw == 0) occupied = 2;
			else if(tgsw == 0) occupied = 3;
		}
		else {
			if(lsw== 1 && occupied == 1) occupied = 0;
			else if(rsw == 1 && occupied == 2) occupied = 0;
			else if(tgsw == 1 && occupied == 3) occupied = 0;
		}

		if(occupied == 1 || occupied == 2) {
			if(occupied == 1) curTab = (curTab-1+MAXTAB)%MAXTAB;
			if(occupied == 2) curTab = (curTab+1)%MAXTAB;
			int ret = get_relay_value(curTab);
			tabStat[curTab] = ret;
			printf("ret:%d\n",ret);
			printf("lcd :%d\n",lcd);
			sprintf(s,"%dth tab is %3s%18s",curTab,ret?"ON":"OFF","");
			lcdPosition(lcd,0,0); 
			lcdPuts(lcd,s);
			delay(200);
		}
		else if(occupied==3) {
			set_relay_value(curTab,!tabStat[curTab]); 
			tabStat[curTab]= !tabStat[curTab];
			sprintf(s,"%dth tab is %3s%18s",curTab,
				tabStat[curTab]?"ON":"OFF","");
			lcdPosition(lcd,0,0); 
			lcdPuts(lcd,s);
			delay(200);
		}
	}
	return EXIT_SUCC;
}
Example #2
0
/*
 * Miscelaneous platform dependent initialisations
 */
int board_init(void)
{
	/* arch number of Z2 */
	gd->bd->bi_arch_number = MACH_TYPE_ZIPIT2;

	/* adress of boot parameters */
	gd->bd->bi_boot_params = 0xa0000100;

	/* Enable LCD */
	lcd_start();

	return 0;
}
Example #3
0
/*
 * main.c
 */
int main(void)
{
	lcd_pin_init();
	clock_config();
	lcd_start();

	while (1)
	{
		write_to_lcd();
		delay_ms(1500);
	}

	return 0;
}
Example #4
0
int main(int argc, char** argv) {
    __builtin_mtc0(_CP0_CONFIG, _CP0_CONFIG_SELECT, 0xa4210583);
    BMXCONbits.BMXWSDRM = 0x0;
    INTCONbits.MVEC = 0x1;
    DDPCONbits.JTAGEN = 0;
     // do your TRIS and LAT commands here
    ANSELA = 0; // A Analogic off
    ANSELB = 0; // B Analogic off

    TRISBbits.TRISB2 = 0; // A4 output
    TRISAbits.TRISA0 = 0; // A4 output

    TRISAbits.TRISA4 = 0; // A4 output
    TRISBbits.TRISB4 = 1; // B4 inuput
    
    __builtin_disable_interrupts();
    
    // starts the PINEX
    
    __builtin_mtc0(_CP0_CONFIG, _CP0_CONFIG_SELECT, 0xa4210583);
    BMXCONbits.BMXWSDRM = 0x0;
    INTCONbits.MVEC = 0x1;
    DDPCONbits.JTAGEN = 0;
    __builtin_enable_interrupts();
    uart_init();
    return 0;
    
    start_PWM();
    
    lcd_start();
    while(1)
    {
        LATAbits.LATA4 = 0;
        lcd_clearScreen(LCD_COLOR_BLACK);
        lcd_printf("hello\nworld!",LCD_COLOR_WHITE);
        //unsigned int t = timer_start();
        //while (!timer_timeout(t, 500 * TIMER_MILLISECOND));
        blink();
        LATAbits.LATA4 = 1;
        lcd_clearScreen(LCD_COLOR_WHITE);
        lcd_printf("hello!",LCD_COLOR_BLACK);
        //t = timer_start();
        //while (!timer_timeout(t, 500 * TIMER_MILLISECOND));
    }   
    return (EXIT_SUCCESS);
}
/*****************************************************************************
 * FUNCTION
 *  BL_UpdateLCDScreen 
 * DESCRIPTION
 *  update LCD
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
static void BL_UpdateLCDScreen(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    //lcd_fue_fb_update(&g_bl_lcd_para);
    lcd_config_roi(&g_bl_lcd_para);
    lcd_start(g_bl_lcd_para.update, 
              g_bl_lcd_para.block_mode_flag,
              g_bl_lcd_para.tgt_start_x,
              g_bl_lcd_para.tgt_start_y,
              g_bl_lcd_para.tgt_end_x,
              g_bl_lcd_para.tgt_end_y);

}
void OpenSprinkler::begin() {

  // shift register setup
  pinMode(PIN_SR_OE, OUTPUT);
  // pull shift register OE high to disable output
  digitalWrite(PIN_SR_OE, HIGH);
  pinMode(PIN_SR_LATCH, OUTPUT);
  digitalWrite(PIN_SR_LATCH, HIGH);

  pinMode(PIN_SR_CLOCK, OUTPUT);
  
#if defined(OSPI)
  pin_sr_data = PIN_SR_DATA;
  // detect RPi revision
  unsigned int rev = detect_rpi_rev();
  if (rev==0x0002 || rev==0x0003) 
    pin_sr_data = PIN_SR_DATA_ALT;
  // if this is revision 1, use PIN_SR_DATA_ALT
  pinMode(pin_sr_data, OUTPUT);
#else
  pinMode(PIN_SR_DATA,  OUTPUT);
#endif

	// Reset all stations
  clear_all_station_bits();
  apply_all_station_bits();

  // pull shift register OE low to enable output
  digitalWrite(PIN_SR_OE, LOW);

  // Rain sensor port set up
  pinMode(PIN_RAINSENSOR, INPUT);

#if defined(ARDUINO)
  digitalWrite(PIN_RAINSENSOR, HIGH); // enabled internal pullup on rain sensor
#else
  // RPI and BBB have external pullups
#endif

  // Default controller status variables
  // AVR assigns 0 to static variables by default
  // so only need to initialize non-zero ones
  status.enabled = 1;
  status.safe_reboot = 0;
  
  old_status = status;

  nvdata.sunrise_time = 360;  // 6:00am default sunrise
  nvdata.sunset_time = 1080;  // 6:00pm default sunset

  nboards = 1;
  nstations = 8;

  // set rf data pin
  pinMode(PIN_RF_DATA, OUTPUT);
  digitalWrite(PIN_RF_DATA, LOW);

  /*pinMode(PIN_RELAY, OUTPUT);
  digitalWrite(PIN_RELAY, LOW);*/

  hw_type = HW_TYPE_AC;
#if defined(ARDUINO)  // AVR SD and LCD functions
  // Init I2C
  Wire.begin();

  #if defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega1284__) // OS 2.3 specific detections
    uint8_t ret;

    // detect hardware type
    Wire.beginTransmission(MAC_CTRL_ID);
    Wire.write(0x00);
  	ret = Wire.endTransmission();
  	if (!ret) {
    	Wire.requestFrom(MAC_CTRL_ID, 1);
    	while(!Wire.available());
    	ret = Wire.read();
      if (ret == HW_TYPE_AC || ret == HW_TYPE_DC || ret == HW_TYPE_LATCH) {
        hw_type = ret;
      } else {
        // hardware type is not assigned
      }
    }
    
    if (hw_type == HW_TYPE_DC) {
      pinMode(PIN_BOOST, OUTPUT);
      digitalWrite(PIN_BOOST, LOW);

      pinMode(PIN_BOOST_EN, OUTPUT);
      digitalWrite(PIN_BOOST_EN, LOW);        
    }
  #endif

  lcd_start();

  // define lcd custom icons
  byte _icon[8];
  // WiFi icon
  _icon[0] = B00000;
  _icon[1] = B10100;
  _icon[2] = B01000;
  _icon[3] = B10101;
  _icon[4] = B00001;
  _icon[5] = B00101;
  _icon[6] = B00101;
  _icon[7] = B10101;
  lcd.createChar(1, _icon);
  
  _icon[1]=0;
  _icon[2]=0;
  _icon[3]=1;
  lcd.createChar(0, _icon);
  
  // uSD card icon
  _icon[0] = B00000;
  _icon[1] = B00000;
  _icon[2] = B11111;
  _icon[3] = B10001;
  _icon[4] = B11111;
  _icon[5] = B10001;
  _icon[6] = B10011;
  _icon[7] = B11110;
  lcd.createChar(2, _icon);  
  
  // Rain icon
  _icon[0] = B00000;
  _icon[1] = B00000;
  _icon[2] = B00110;
  _icon[3] = B01001;
  _icon[4] = B11111;
  _icon[5] = B00000;
  _icon[6] = B10101;
  _icon[7] = B10101;
  lcd.createChar(3, _icon);
  
  // Connect icon
  _icon[0] = B00000;
  _icon[1] = B00000;
  _icon[2] = B00111;
  _icon[3] = B00011;
  _icon[4] = B00101;
  _icon[5] = B01000;
  _icon[6] = B10000;
  _icon[7] = B00000;
  lcd.createChar(4, _icon);

  // set sd cs pin high to release SD
  pinMode(PIN_SD_CS, OUTPUT);
  digitalWrite(PIN_SD_CS, HIGH);

  if(sd.begin(PIN_SD_CS, SPI_HALF_SPEED)) {
    status.has_sd = 1;
  }

  // set button pins
  // enable internal pullup
  pinMode(PIN_BUTTON_1, INPUT);
  pinMode(PIN_BUTTON_2, INPUT);
  pinMode(PIN_BUTTON_3, INPUT);
  digitalWrite(PIN_BUTTON_1, HIGH);
  digitalWrite(PIN_BUTTON_2, HIGH);
  digitalWrite(PIN_BUTTON_3, HIGH);

  // detect if DS1307 RTC exists
  if (RTC.detect()==0) {
    status.has_rtc = 1;
  }
#endif
}