undefined

Der Tea-Boy namens James geht in die nächste Runde. Er bekommt ein update was die Stabilität und den Aufbau angeht. Die Unterschiede zu dem vorherigen James sind folgende:

  • Neue Platine
  • Mechanischer An-/Aus Schalter
  • Halterungen für die Füße und Arme
  • Halterung für den Servo 

Bei der Schaltung hat sich nur wenig geändert. der zweite Taster ist durch einen mechanischen Schlater ersetzt worden um die Stromlaufzeit zu erhöhen.undefined

Daraus ist dann direkt eine Platine entstanden, welche gleichzeitig mechanische Funktionen übernimmt. Die Platine dient als Rumpf des James und bietet Befestigungsmöglichkeiten für die Beine, Arme, Servo und Potentiometer. Hier ist das Layout zu sehen:undefined

Die Halskrause ist gleichzeitig die Auswahl der Minuten. Die zusätzliche Schaltung, welche hier abgebildet ist, dient dazu die Platine voll zu machen, um kosten zu sparen.

Das Programm wurde ebenso überarbeitet. Im Folgenden ist ein Ausschnitt der Main Loop zu sehen.

void pulse_led();
void blink_led(uint8_t num, uint16_t frequency);
void finish_sequence();
uint32_t get_set_time();
uint32_t get_state_time();
void reset_state_time();

void loop() {
  switch(_state) {
    case TEA_BREWING:
      pulse_led(); /* signalize the waiting */
      if (get_state_time() > get_set_time()) /* check if time has expired */
        _state = TEA_FINISHED;
    break;
    case TEA_START_PRESSED:
      reset_state_time();
      blink_led(TEA_START_BLINK, TEA_START_FREQUENCY); /* short delay and blink */
      set_servo(SERVO_MIN, SERVO_POSITIONING_TIME); /* put arm down into the tea */
      _state = TEA_BREWING;
    break;
    case TEA_FINISHED: 
      finish_sequence();
      _state = TEA_POWER_ON;
    break;
    case TEA_POWER_ON:
    default:
      digitalWrite(PIN_LED, HIGH); /* show led that machine is power on */
      if (get_state_time() > WARNING_STILL_ON_AFTER) { /* signalize if the machine is still on */
        play_song(melody, beats, sizeof(melody)/sizeof(melody[0]));
        reset_state_time();
      }
    break;
  }
}

Der vollständige Code und das Eagle Projekt der Platine findet ihr auf Github. Das Programm auf den ATtiny hochladen ist über eine kleine Hilfsschaltung schnell erledigt.