Пример #1
0
/* Hauptroutine: Wird in der Hauptschleife abgerufen (sobald alle Interrupts und Timer abgearbeitet sind) - as fast as possible */
void rainmaster_mainloop(void) {

  // Druckabfall in Leitung erkennen und Pumpe bei Bedarf einschalten
  if(rm_status.PumpenKontakt == true) {
    setpwm('a', 255);             // Pumpe einschalten
    rm_status.PumpenFlag = true;  // Pumpenflag setzen
  } else {
    setpwm('a', 0);                // Pumpe ausschalten
    rm_status.PumpenFlag = false;  // PumpenFlag setzen
    rm_offcounter = 0;             // Pumpe läuft nicht, also counter auf 0  
  }


  uip_ipaddr_t ip_addr;


  if(my_tanklevel < TANK_MIN) {

    // TODO:
    uip_ipaddr(ip_addr, 192, 168, 1, 101);

    // Kugelhahn umstellen auf Trinkwasserbetrieb
    PIN_CLEAR(RM_KUGELHAHN);
    rm_status.Kugelhahn = 0; 

    // Eigenes Magnetventil schließen
    setpwm('c', 0);
    rm_status.Magnetventil = 0;

    // TODO:
    if(rm_001.request_state == 0) {
      // Fremdgerät kann Magnetventil öffnen u Pumpe starten, falls kein Eigenbedarf u genügend Wasser bei sich
      //ecmd_sender_send_command_P(&ip_addr, NULL, PSTR("rainmaster_request 1\n"));
      rm_001.request_state = 1;
      //rm_001.busy = 1;
    }

  }


  if(my_tanklevel > TANK_MAX) {

      if(rm_001.request_state == 1) {
        // Fremdgerät kann Magnetventil öffnen u Pumpe starten, falls kein Eigenbedarf u genügend Wasser bei sich
        //ecmd_sender_send_command_P(&ip_addr, NULL, PSTR("rainmaster_request 1\n"));
        rm_001.request_state = 0;
      }

      // Kugelhahn umstellen auf Regenwasserbetrieb
      PIN_SET(RM_KUGELHAHN);
      rm_status.Kugelhahn = 1; 

    }


} /* End rainmaster_mainloop */
/*
 * Class:     Motor
 * Method:    setpwm
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_cbccore_low_Motor_setpwm(JNIEnv* env, jobject obj, jint motor, jint pwm)
{
#ifdef CBC
    return setpwm(motor, pwm);
#else
    printf("Java_cbccore_low_Motor_setpwm stub\n");
    return -1;
#endif
}
Пример #3
0
void
pwm_periodic()
{
#ifdef PWM_GENERAL_FADING_SUPPORT

 #ifdef CH_A_PWM_GENERAL_SUPPORT
  if (fadingAspeed!=0){
    int16_t chAdiff = getpwm('a')+fadingAspeed;
    if (chAdiff >= PWM_MIN_VALUE) {
      fadingAspeed=0;
      setpwm('a',PWM_MIN_VALUE);
    } else if (chAdiff<=0) {
      fadingAspeed=0;
      setpwm('a',PWM_MAX_VALUE);
    } else
      setpwm('a',chAdiff);
  }
 #endif /* CH_A_PWM_GENERAL_SUPPORT */
 #ifdef CH_B_PWM_GENERAL_SUPPORT
  if (fadingBspeed!=0){
    int16_t chBdiff = getpwm('b')+fadingBspeed;
    if (chBdiff >= PWM_MIN_VALUE) {
      fadingBspeed=0;
      setpwm('b',PWM_MIN_VALUE);
    } else if (chBdiff<=0) {
      fadingBspeed=0;
      setpwm('b',PWM_MAX_VALUE);
    } else
      setpwm('b',chBdiff);
  }
 #endif /* CH_B_PWM_GENERAL_SUPPORT */
 #ifdef CH_C_PWM_GENERAL_SUPPORT
  if (fadingCspeed!=0){
    int16_t chCdiff = getpwm('c')+fadingCspeed;
    if (chCdiff >= PWM_MIN_VALUE) {
      fadingCspeed=0;
      setpwm('c',PWM_MIN_VALUE);
    } else if (chCdiff<=0) {
      fadingCspeed=0;
      setpwm('c',PWM_MAX_VALUE);
    } else
      setpwm('c',chCdiff);
  }
 #endif /* CH_C_PWM_GENERAL_SUPPORT */

#endif /* PWM_GENERAL_FADING_SUPPORT */
}
Пример #4
0
// set fading for channel
int16_t parse_cmd_pwm_fade_command(char *cmd, char *output, uint16_t len) 
{
  uint8_t channel=cmd[1];
  int8_t diff=atoi(cmd+3);
  uint8_t startvalue=atoi(cmd+8);

  PWMDEBUG ("set ch: %c, diff %i, start %i\n",channel, diff,startvalue);
  setpwm(channel,startvalue);

  switch (channel){
#ifdef CH_A_PWM_GENERAL_SUPPORT
	case 'a': fadingAspeed=diff; break;
#endif /* CH_A_PWM_GENERAL_SUPPORT */
#ifdef CH_B_PWM_GENERAL_SUPPORT
	case 'b': fadingBspeed=diff; break;
#endif /* CH_B_PWM_GENERAL_SUPPORT */
#ifdef CH_C_PWM_GENERAL_SUPPORT
	case 'c': fadingCspeed=diff; break;
#endif /* CH_C_PWM_GENERAL_SUPPORT */
  }

  return ECMD_FINAL_OK;
}
Пример #5
0
// set pwm via ecmdA
int16_t parse_cmd_pwm_command(char *cmd, char *output, uint16_t len) 
{
  uint8_t channel=cmd[1];
  uint8_t value=atoi(cmd+3);

  if (cmd[0]=='\0') {
#ifdef CH_A_PWM_GENERAL_SUPPORT
    PWMDEBUG ("a: %i\n",getpwm('a'));
#endif /* CH_A_PWM_GENERAL_SUPPORT */
#ifdef CH_B_PWM_GENERAL_SUPPORT
    PWMDEBUG ("b: %i\n",getpwm('b'));
#endif /* CH_B_PWM_GENERAL_SUPPORT */
#ifdef CH_C_PWM_GENERAL_SUPPORT
    PWMDEBUG ("c: %i\n",getpwm('c'));
#endif /* CH_C_PWM_GENERAL_SUPPORT */
    return ECMD_FINAL_OK;
  }
  if (cmd[2]=='\0') {
      return ECMD_FINAL(snprintf_P(output, len, PSTR("%i"), getpwm(channel)));
  }
  setpwm(channel,value);

  return ECMD_FINAL_OK;
}