Progetti

ARDUINO SHAKING TÈ MACCHINA

Il nostro progetto di macchina per la preparazione del tè ti consente di immergere il tuo tè nel bicchiere durante un tempo di tenuta speciale in base al tipo di tè che scegli, e quando il tempo è scaduto, assicura che la bustina di tè non abbia un piccolo sapore rimuovendo il tè dal vetro. Per una buona preparazione del tè nero, dovrebbe fermarsi al bicchiere per una media di 1,5 minuti.

Il nostro progetto è stato realizzato non per semplificarci la vita, ma per aggiungere più colore.I materiali utilizzati nel progetto sono i materiali nelle scatole di molti produttori.

Il servomotore Tower Pro SG90 a rotazione continua a 360 gradi è un micro servo multi-valore e multiuso e ideale per l’uso con sistemi di microcontrollori come BBC micro: bit, Arduino, Raspberry Pi e PICAXE. Le sue dimensioni in miniatura sono perfette anche per l’uso in modelli radiocomandati.

Questo servo a rotazione continua di 360 gradi, il suo funzionamento è molto diverso da un servo standard. Invece di andare a un angolo specificato, questo servo sarà statico a un impulso di 1,5 ms, un impulso più lungo fornisce la rotazione in avanti e un impulso più breve restituisce il ritorno.

Viene fornito con viti di montaggio e una varietà di accessori per adattarsi alla maggior parte delle applicazioni. È possibile utilizzare qualsiasi codice servo, hardware o libreria per controllare questi servi.

Materiali-SHAKING TÈ MACCHINA

  • Arduino Uno
  • Display LCD 16 × 2 I2C
  • Servomotore
  • Cicalino
  • Potenziometro
  • Led
  • Pulsante
  • Parti stampate in 3D (macchina per il tè)

Lo schema elettrico del progetto è il seguente. Penso che alcuni amici non sappiano leggere lo schema, generalmente dicono che i collegamenti nelle immagini non sono gli stessi dello schema.Per questo, ho bisogno di fare una spiegazione generale qui. Ma ci sono 2 5v nel normale arduino e ne ho collegati alcuni con cavi jumper secondo la mia testa.

Codici

// elettronicorc - Macchina da tè
#include <LiquidCrystal_I2C.h>
#include <Servo.h> 
#include <Wire.h> 

LiquidCrystal_I2C lcd(0x3f, 16, 2);
Servo servoMotor; 

int screenLED = 6;
int servoPin = 7;
int startButton = 8;
int buzzer = 9;
int teaPot = A0;  

boolean diagnosticBit = LOW;

int timer = 0;
int oldTimer = 0;
boolean inProcess = LOW;
int servoHighPosition = 120;
int servoMidPosition = 100;
int servoLowPosition = 70;
int servoSpeed = 35;
long idleTime = 0;

void setup() {
  pinMode(screenLED, OUTPUT);
  pinMode(servoPin, OUTPUT);
  pinMode(startButton, INPUT_PULLUP);
  pinMode(buzzer, OUTPUT);
  
  Serial.begin(9600);
  
  servoMotor.attach(servoPin);
  servoMotor.write(servoHighPosition);
    
  if (!diagnosticBit){
    tone(buzzer, 1000, 200);
  }
  
  Serial.println("Sistem Tamam");
  lcd.begin();  
  lcd.backlight();
  lcd.print("Cay Makinesi");
  lcd.setCursor(0, 1);
  lcd.print("Proje Hocam");
  fadeLightOn(screenLED);
  clearScreen();
  if (!diagnosticBit){
    tone(buzzer, 1000, 200);
  }
  updateIdleTime();
}

void loop() {
  if (idleTime < millis()){
    fadeLightOff(screenLED);
    idleTime = 2147483647;
  }
  
  if (diagnosticBit && millis()%1000 == 0){
    Serial.println(idleTime);
    Serial.println(millis());
    Serial.println("");
  }
  
  if (millis() % 30 == 0){
    oldTimer = timer;
    timer = rawToTime(analogRead(teaPot));
    
    if (oldTimer != timer){
      lcd.setCursor(0, 0);
      lcd.print(teaName(rawToTime(analogRead(teaPot))));
      
      
      lcd.setCursor(3, 1);
      lcd.print(timeString(0));
      
      lcd.setCursor(8, 1);
      lcd.print(timeString(timer));
      
      delay(300);
      updateIdleTime();
    }
  }
  
  if (!digitalRead(startButton)){
    inProcess = HIGH;
    Serial.println("Start Button is pressed");
    // Move servo to low position to dunk tea (0-179)
    servoMotor.write(servoLowPosition);
    updateIdleTime();
    delay(300);
  }
  
  if (inProcess == HIGH){
    Serial.println("inProcess is HIGH");
    for (int i = 0; i < timer; i++){
      lcd.setCursor(3, 1);
      lcd.print(timeString(i));
      delay(1000);
    }
   
    for (int i = servoLowPosition; i < servoHighPosition; i++){
      servoMotor.write(i);
      delay(servoSpeed);
    }
    for (int i = 0; i < 3; i ++){
      servoMotor.write(servoHighPosition);
      delay(200);
      if (!diagnosticBit){
        tone(buzzer, 1000, 100);
      }
      servoMotor.write(servoMidPosition);
      delay(servoLowPosition);
    }
    servoMotor.write(servoHighPosition);
    updateIdleTime();
    inProcess = LOW;
  }
}

Mostra di più

Articoli Correlati

Başa dön tuşu
Kapalı