Proiectul este reprezentat de un mic robotel de birou, creat special pentru a ii oferi utilizatorului interactiuni placute si a ajuta cu singuratatea. Acesta este dotat cu un senzor de atingere si unul de distanta, reactionand la factori externi prin expresii faciale care pot fi vazute pe ecranul sau LCD. Are de asemenea si un servomotor care serveste la miscarea capului.
La atingerea senzorului, robotelul devine fericit, iar atunci cand detecteaza (cu ajutorul HC-SR04) pe cineva la o distanta mai mica de 10 cm, incepe sa isi scuture capul, entuziasmat (cu ajutorul servomotorului). Atunci cand este ignorat, robotelul este trist.
Listă de piese:
Funcționalități
Aceste fragmente de cod evidențiază principalele funcționalități ale robotelului.
1. measureHCSR04Distance Această funcție măsoară distanța folosind senzorul ultrasonic HC-SR04 și returnează valoarea măsurată în centimetri.
int measureHCSR04Distance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); int distance = duration * 0.034 / 2; if (distance < 2 || distance > 30) { return maxDistance; } return distance; }
2. adjustServo Această funcție mișcă servo motorul între 0 și 90 de grade de două ori pentru a simula o reacție fizică.
void adjustServo() { for (int i = 0; i < 2; i++) { myservo.write(0); delay(500); myservo.write(90); delay(500); Serial.println("Servo moved to 90 degrees"); } }
3. draw[]Face() Aceasta functie foloseste libraria Adafruit pentru a desena pe ecran diferite expresii faciale:
void drawHappyFace() { tft.init(); tft.fillScreen(lightPink); tft.fillCircle(64, 85, 20, ST7735_BLACK); tft.fillRect(44, 65, 45, 20, lightPink); tft.fillCircle(40, 64, 20, ST7735_BLACK); tft.fillCircle(50, 60, 5, ST7735_WHITE); tft.fillCircle(40, 64, 7, ST7735_WHITE); tft.fillCircle(88, 64, 20, ST7735_BLACK); tft.fillCircle(98, 60, 5, ST7735_WHITE); tft.fillCircle(88, 64, 7, ST7735_WHITE); tft.fillRect(20, 75, 40, 10, lightPink); tft.fillRect(68, 75, 40, 10, lightPink); }
Proiectul a fost unul foarte interesant, mi-a placut foarte mult sa ma joc cu culorile si reactiile robotelului. Sunt incantata sa am o dovada fizica a muncii mele si voi continua sa mai lucrez la el si pe viitor, in special pe partea estetica (cablaj, carcasa, etc).