資料介紹
描述
我想制作一個(gè)可以給她的主人提供生活建議的機(jī)器人。機(jī)器人可以告訴溫度、濕度、時(shí)間和警報(bào)等。這只是一個(gè)初始版本。我會(huì)給這個(gè)機(jī)器人更多的功能,比如聲音識(shí)別、揚(yáng)聲器、游戲。因此,Arduino UNO R3 可能不足以完成這個(gè)項(xiàng)目。如果有人有有趣的想法,請(qǐng)給予贊揚(yáng)。讓我們嘗試構(gòu)建這個(gè)機(jī)器人。讓我介紹一下這個(gè)項(xiàng)目:
1. LCD自定義顯示——眨眼臉
20x4 LCD 允許用戶創(chuàng)建自定義字符。這對(duì)我塑造臉型有好處。此 LCD 在屏幕中包含 80 個(gè)字符。每個(gè)字符包括 8 行 5 列,總共有 40 個(gè)像素。字符的每一行都有一個(gè)對(duì)應(yīng)的代碼(數(shù)字)。要構(gòu)建自定義字符,我需要構(gòu)建一個(gè) 8 字節(jié)自定義類型變量。例如,在上圖中創(chuàng)建機(jī)器人眼睛角色。代碼是:
uint8_t eye_left[8] = {0xe,0x11,0x17,0x17,0x17,0x17,0x11,0xe};
根據(jù)我的實(shí)驗(yàn),LCD字符的行碼是有規(guī)律的。我顯示下表以顯示行顯示和相應(yīng)的數(shù)字:
根據(jù)上表,眼睛顯示代碼解釋如下:
創(chuàng)建自定義代碼后,即可在 Arduino setup() 或 loop() 中使用。在 setup() 中,例如,程序代碼是:
// .... the LCD library and address setup is not here ...
//variable code for custom eye character
uint8_t eye_left[8] = {0xe,0x11,0x17,0x17,0x17,0x17,0x11,0xe};
void setup() {
lcd.begin(20,4);
lcd.createChar(2, eye_left);//use number '2' to mark this char
lcd.setCursor(1,1);// display position
lcd.write(2);// display the custom char
lcd.setCursor(3,1);
lcd.write(2);
}
我不會(huì)在上面的代碼中給出 LCD 庫和地址設(shè)置。這是顯示面部和眨眼的測試代碼:
#include
#include
uint8_t empty[8] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1};
uint8_t eyebrow_happy[8] = {0x0,0x0,0x0,0xe,0x11,0x0,0x0,0x0};
uint8_t eyebrow_angry_right[8] = {0x0,0x0,0x0,0x10,0x8,0x4,0x2,0x1};
uint8_t eyebrow_close[8] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f};
uint8_t eyebrow_angry_left[8] = {0x0,0x0,0x0,0x1,0x2,0x4,0x8,0x10};
uint8_t eye_left[8] = {0xe,0x11,0x17,0x17,0x17,0x17,0x11,0xe};
uint8_t eye_right[8] = {0xe,0x11,0x1d,0x1d,0x1d,0x1d,0x11,0xe};
uint8_t eye_front[8] = {0xe,0x11,0x15,0x15,0x15,0x15,0x11,0xe};
uint8_t eye_close[8] = {0x0,0x0,0x0,0x11,0x1f,0x0,0x0,0x0};
uint8_t mouth_happy[8] = {0x4,0xe,0xe,0x0,0x0,0x11,0xe};
uint8_t mouth_sad[8] = {0x4,0xe,0xe,0x0,0x0,0xe,0x11};
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
void setup() {
lcd.begin(20,4);
//lcd.init();
lcd.createChar(0, empty);
lcd.createChar(1, mouth_sad);
lcd.createChar(2, eyebrow_angry_right);
lcd.createChar(3, eyebrow_angry_left);
lcd.createChar(4, eye_left);
lcd.createChar(5, eye_right);
lcd.createChar(6, eye_front);
lcd.createChar(7, eye_close);
lcd.createChar(8, mouth_happy);
lcd.createChar(9, eyebrow_happy);
lcd.createChar(10, eyebrow_close);
lcd.home();
// eyebrow
lcd.setCursor(1,0);
lcd.write(1);
lcd.setCursor(3,0);
lcd.write(1);
// eyes
lcd.setCursor(1,1);
lcd.write(4);
lcd.setCursor(3,1);
lcd.write(4);
// mouth
lcd.setCursor(2,2);
lcd.write(8);
// words
lcd.setCursor(9,1);
lcd.print("Hello!!");
lcd.setCursor(8,2);
lcd.print("I am Lily!");
delay(1000);
}
//string str[20];
void loop() {
// blink eyes
delay(4000);
// eyebrow
lcd.setCursor(1,0);
lcd.write(10);
lcd.setCursor(3,0);
lcd.write(10);
// eyes
lcd.setCursor(1,1);
lcd.write(7);
lcd.setCursor(3,1);
lcd.write(7);
// mouth
lcd.setCursor(2,2);
lcd.write(8);
delay(250);
// eyebrow
lcd.setCursor(1,0);
lcd.write(1);
lcd.setCursor(3,0);
lcd.write(1);
// eyes
lcd.setCursor(1,1);
lcd.write(4);
lcd.setCursor(3,1);
lcd.write(4);
// mouth
lcd.setCursor(2,2);
lcd.write(8);
}
我的液晶顯示器是 I2C 型號(hào)。如果某人嘗試此代碼,請(qǐng)按照您的菜單設(shè)置您的 LCD。我在下面給出了 LCD 設(shè)置的鏈接:
2.時(shí)鐘顯示和時(shí)間/鬧鐘設(shè)置
我的 Arduino UNO 沒有外部計(jì)時(shí)器 (RTC),但我自己制作時(shí)鐘并使用 EEPROM 存儲(chǔ)當(dāng)前時(shí)間以進(jìn)行 Arduino 重置。定時(shí)器/時(shí)鐘項(xiàng)目在下面的鏈接中:
這是我的 Arduino DIY 時(shí)鐘項(xiàng)目。它還介紹了 IR 遠(yuǎn)程設(shè)置、蜂鳴器運(yùn)行和 EEPROM 庫。
3.溫濕度模式
我使用 DHT11 濕度和溫度模型來獲取該項(xiàng)目的濕度和溫度。在程序中,我使用庫“ DHT.h ”來應(yīng)用模式。我還使用 Simon Monk 的“ timer.h ”庫每 3 秒獲取 Humi 和 Temp。(另外項(xiàng)目中的 eye's blink 也是使用這個(gè)庫。)
4. 搖桿控制臉眼
Joy 貼紙很容易與 Arduino 一起使用。我創(chuàng)建了一個(gè)程序來查看我玩快樂貼紙時(shí)的 x、y 值。在下面的代碼中,我使用我的 LCD 來顯示 x、y 值:
#include
#include
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
// Arduino pin numbers
const int SW_pin = 7; // digital pin connected to switch output
const int X_pin = A0; // analog pin connected to X output
const int Y_pin = A1; // analog pin connected to Y output
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
lcd.begin(20,4);
lcd.clear();
}
void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("swtich: ");
lcd.print(digitalRead(SW_pin));
lcd.setCursor(0,1);
lcd.print("X-axis: ");
lcd.print(analogRead(X_pin));
lcd.setCursor(0,2);
lcd.print("Y-axis: ");
lcd.print(analogRead(Y_pin));
delay(500);
}
歡樂貼的原理在這個(gè)鏈接:
https://www.brainy-bits.com/arduino-joystick-tutorial/
我的項(xiàng)目視頻
五、存在的問題和今后的工作
該項(xiàng)目將許多模型鏈接在一起,并使用了可能的庫。好在沒有沖突,但還是有一些問題。也許,某人可以給我建議。
首先,我一開始只能創(chuàng)建8個(gè)自定義角色,超過8個(gè)就麻煩了。例如,使用下面的代碼。
lcd.createChar(0, empty);
lcd.createChar(1, mouth_sad);
lcd.createChar(2, eyebrow_angry_right);
lcd.createChar(3, eyebrow_angry_left);
lcd.createChar(4, eye_left);
lcd.createChar(5, eye_right);
lcd.createChar(6, eye_front);
lcd.createChar(7, eye_close);
lcd.createChar(8, mouth_happy);
lcd.createChar(9, eyebrow_happy);
lcd.createChar(10, eyebrow_close);
字符“0”將替換為字符“8”,“1”將替換為“9”,“2”將替換為“10”。為了解決這個(gè)問題,我只是在每次顯示字符之前構(gòu)建字符。如果我改變眼睛字符以顯示向上或向下看,我會(huì)這樣做:
lcd.createChar(2, eye_up);// create look up
lcd.setCursor(1,1);
lcd.write(2);
lcd.setCursor(3,1);
lcd.write(2);
delay(1000);// delay 1s
lcd.createChar(2, eye_down);//create look down
lcd.setCursor(1,1);
lcd.write(2);
lcd.setCursor(3,1);
lcd.write(2);
我不知道為什么我不能一起建立更多的角色。可能是液晶內(nèi)存不夠。誰能告訴我?
其次,我使用 Simon 的“ timer.h ”來顯示眨眼。但是,這個(gè)庫只是通過切換顯示閉眼,我給了 250 毫秒的延遲時(shí)間來清楚地顯示閉眼,但延遲會(huì)阻止整個(gè)代碼運(yùn)行。當(dāng)臉部眨眼時(shí),您可以看到第二次增加有一點(diǎn)時(shí)間問題。
我考慮使用普通計(jì)時(shí)器(如“millis()”)來毫不拖延地控制它,但它很復(fù)雜。我不知道m(xù)illis() 的值是否會(huì)溢出。
第三,紅外遙控器不靈敏。你可以從視頻中看到這一點(diǎn)。也許,我的代碼延遲太長,無法按下按鈕,但我發(fā)現(xiàn)有時(shí) IR 接收器會(huì)得到錯(cuò)誤的按鈕地址。為什么電視和投影儀遙控器效果很好?有人知道更多嗎?
- YolkaBot機(jī)器人開源分享
- 檢測機(jī)器人開源分享
- Arduino機(jī)器人開源
- 坦克機(jī)器人開源分享
- 掃地機(jī)器人開源資料 43次下載
- 機(jī)器人守衛(wèi)開源分享
- 伺服機(jī)器人開源分享
- 堆肥機(jī)器人開源分享
- 英雄機(jī)器人開源
- 機(jī)器人開源案例
- 小臂機(jī)器人開源分享
- Arduino機(jī)器人開源分享
- 助理機(jī)器人開源分享
- 簡單的機(jī)器人開源分享
- 機(jī)器人開源項(xiàng)目
- 字節(jié)發(fā)布機(jī)器人領(lǐng)域首個(gè)開源視覺-語言操作大模型,激發(fā)開源VLMs更大潛能 360次閱讀
- 機(jī)器人技術(shù)中常用的路徑規(guī)劃算法的開源庫 842次閱讀
- 面對(duì)疫情 醫(yī)療機(jī)器人能幫上什么忙? 2126次閱讀
- dfrobotSparki機(jī)器人套裝簡介 2064次閱讀
- dfrobotTurtle 3PA三輪小車機(jī)器人套件簡介 1602次閱讀
- 教育機(jī)器人市場分析_教育機(jī)器人市場前景 5544次閱讀
- 一文看懂服務(wù)機(jī)器人發(fā)展前景 2519次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8127次閱讀
- 機(jī)器視覺的機(jī)器人取代四臺(tái)傳統(tǒng)的火焰處理機(jī)器人 3270次閱讀
- 盤點(diǎn)2018年機(jī)器人領(lǐng)域十大技術(shù) 3312次閱讀
- 簡易機(jī)器人制作圖解 1w次閱讀
- 云視頻技術(shù)讓機(jī)器人更具有娛樂性讓機(jī)器人更融入你的生活 3520次閱讀
- 人工智能時(shí)代的機(jī)器人三大法則 6583次閱讀
- 軟體機(jī)器人 前所未見的機(jī)器人 3692次閱讀
- 如何使用HRMRP機(jī)器人平臺(tái)構(gòu)建機(jī)器人應(yīng)用系統(tǒng) 1629次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多