Roll Pitch Yaw icon Roll Pitch Yaw — Rotate and position camera or object with roll/pitch/yaw controls; save camera settings; bind or monitor a 3-value EZ-Script array for live rotation. Try it →
Asked — Edited
Tablet Face

Many robots are built with installed tablets. Often the tablet is in a head. I was wondering if anyone has seen or could build a face that could be displayed on the screen. I have seen this idea around.

It consists of the basic face features eye brows, eyes and a mouth only. These features are able to move to show expression. Has anyone seen this feature or messed with one? Is it possible to build?

Ron R

Edit: The idea is like ROMO. I want only the face which could be run by an EZB.

DJ possible?


ARC Pro

Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.

#66  

Yes this is what I want ,,, and a how to do also.. Thanks Patrick !

Author Avatar
PRO
Belgium
Thingiverse
#67  

goodluck.thumbs up.

Author Avatar
PRO
USA
#68  

Has anyone figures out Andy's original question pertaining to animated faces on flat panels?

I also would like to be able to call up animations smile, sad whatever animations. Are these animations called by scripts, maybe even reactive to voice synthesis etc. or eyes that follow you using the camera?

EzAng

Author Avatar
PRO
USA
#70   — Edited

ok, Thanks I tried that, it works, I will play around with it.

So to change face emotions, save different gifs or videos

I have the Wio terminal: I got as far as the WIO terminal - no audio / speech , nor mouth moves etc. check my kink out https://youtu.be/GzJ97RnYYnM

from:

https://www.hackster.io/SeeedStudio/display-robot-face-using-the-wio-terminal-68f87a

works great, but has no audio 

This is the code I used for the Wio Terminal, how can it be used for a script in Synthiam?

#include <LovyanGFX.hpp> #include <Servo.h>

Servo myservo;

//int outpin=D2;

int counter = 0; int i = 0; static LGFX lcd; static LGFX_Sprite sprite(&lcd);

int pos = 0;

void drawEye(int x, int y) { sprite.clear(); sprite.fillCircle(65,65,60,0xFFFF); //sprite.drawEllipse(65,65,60,30,0xFFFF); //sprite.drawFastHLine(5,62,120,0xFF); sprite.fillCircle(x,y,15,0); sprite.fillArc(65,65,60,1,180,360,0xED6E); sprite.setPivot(65,65); sprite.pushRotateZoom(80,70,0,1,0.5); sprite.pushRotateZoom(240,70,0,1,0.5); }

void sleepyEyes() { int p_rect[4][4] = {{9,65,112,22},{22,65,86,41},{40,65,49,55},{63,65,4,59}}; sprite.clear(); sprite.fillCircle(65,65,60,0xFFFF); sprite.fillCircle(65,70,10,0); //sprite.fillArc(65,65,60,1,180,360,0xED6E); sprite.setPivot(65,65); for (int i=0;i<4;i++) { sprite.fillArc(65,65,60,1,180,360,0xED6E); sprite.fillArc(65,65,60,1,0,22*(i+1),0xED6E); sprite.fillArc(65,65,60,1,180-(22*(i+1)),180,0xED6E); sprite.fillRect(p_rect[i][0],p_rect[i][1],p_rect[i][2],p_rect[i][3],0xED6E); sprite.pushRotateZoom(80,70,0,1,0.5); sprite.pushRotateZoom(240,70,0,1,0.5); delay(200); } delay(2000); //sprite.pushRotateZoom(80,70,0,1,0.5); //sprite.pushRotateZoom(240,70,0,1,0.5); }

void setup() { pinMode(WIO_5S_UP, INPUT_PULLUP); pinMode(WIO_5S_DOWN, INPUT_PULLUP);

myservo.attach(0);

lcd.init(); lcd.setRotation(3); lcd.setBrightness(128); lcd.setColorDepth(16); lcd.clear();

sprite.setColorDepth(16); sprite.createSprite(130, 130); drawEye(50,80); lcd.drawArc(160,90,120,119,30,150,0xE800);

}

void loop() { int x = random(15, 115);

for (pos = 0; pos <= 60; pos += 1) {
  int l = pos + 20;
  drawEye(l,80);
  myservo.write(pos);
  delay(80);

}

for (pos = 60; pos >= 0; pos -= 1) {
  int l = pos;
  drawEye(l,80);
  myservo.write(pos);
  delay(80);
}    

delay(3000);

sleepyEyes();

}