今天小編給大家?guī)淼氖莵碜試獾腗aker Arnov Sharma的多功能筆筒項(xiàng)目,這個(gè)多功能筆筒項(xiàng)目是使用3D打印零件進(jìn)行搭建的,在筆筒的前端添加了XIAO擴(kuò)展板,給這個(gè)筆筒添加一個(gè)顯示器,可以在顯示器上顯示許多內(nèi)容,例如兩個(gè)眼睛,文本等等,這些使得這個(gè)筆筒更加有趣。
材料清單
XIAO擴(kuò)展板
XIAO SAMD21 M0 微控制器版
3D打印零件
3.7V,1200mAh鋰電池
控制開關(guān)
M2螺絲
項(xiàng)目核心:
本項(xiàng)目的核心是使用Seeed Studio制造的XIAO擴(kuò)展板并搭配XIAO SAMD21 M0開發(fā)板。它擁有豐富的外圍設(shè)備,包括OLED顯示器、RTC實(shí)時(shí)時(shí)鐘、SD卡插槽、被動(dòng)蜂鳴器、復(fù)位/用戶按鈕、5V伺服連接器以及Grove連接器,可以將多個(gè)Grove設(shè)備與XIAO配對(duì)使用。我們將使用Li-ion 18650電池為整個(gè)設(shè)備供電。
擴(kuò)展板上集成了OLED顯示器,可以用來顯示眼睛以及一些文字,給筆筒帶來更豐富的功能。
外觀設(shè)計(jì)
這個(gè)項(xiàng)目的模型一共由四個(gè)部分組成:前置支架部分,設(shè)計(jì)用于容納小物品如USB驅(qū)動(dòng)器、硬幣等。上蓋部分覆蓋鋰電池并將搖桿開關(guān)固定在其位置。最后,一個(gè)帶有作者特色的標(biāo)有項(xiàng)目標(biāo)題“OverEngineered”的名牌位于支架的左側(cè)。
使用三個(gè)M2螺絲將上蓋安裝在支架部分中的螺柱上。使用位于支架部分正面的四個(gè)螺柱對(duì)XIAO擴(kuò)展板進(jìn)行安裝。這些螺柱允許XIAO擴(kuò)展板略微突出于前面板之外,保持前面板和板的底部之間的小間隙。
在Fusion 360中創(chuàng)建模型后,我們導(dǎo)出網(wǎng)格文件,以便進(jìn)行3D打印。
我們使用了透明PLA打印支架部分,橙色PLA打印上蓋部分,而PLA則用于打印前置支架部分。為了在名牌上打印字母,我們先打印出白色PLA基板,然后在打印中間切換至橙色PLA。
主體安裝
在組裝機(jī)身的過程中,將搖桿開關(guān)安裝在上蓋部分是第一步。
接下來,我們向搖桿開關(guān)的NC端口焊接了第二根電線,并將鋰電池的負(fù)極連接到開關(guān)的NO端口。開關(guān)的NC端將連接到擴(kuò)展板鋰電池連接器的負(fù)極端。
然后將前置支架部分放置在支架部分的前面板上,并使用四個(gè)M2螺絲將其固定在原位。
將鋰電池插入支架部分,然后將上蓋部分放在其頂部。使用三個(gè)M2螺絲將兩個(gè)部分緊固在一起。
電路圖
?? ?
擴(kuò)展版安裝
現(xiàn)在我們將擴(kuò)展板與筆筒3D打印件進(jìn)行配對(duì)。
首先,我們將擴(kuò)展板的電池端口連接到鋰離子電池。
我們用電烙鐵將鋰離子電池的正極和負(fù)極連接到擴(kuò)展板的電池端口上。
將XIAO擴(kuò)展板固定在機(jī)箱正面,用4顆M2螺釘將電路版與支架固定在一起。
最后,我們用4顆M2螺釘將銘牌固定在合適的位置。
組裝完成!
在首次測(cè)試設(shè)置,我們添加了一個(gè)基于簡(jiǎn)單動(dòng)畫的程序,這個(gè)程序是通過向CHAT GPT輸入以下內(nèi)容生成的:“編寫一個(gè)程序,瞳孔會(huì)擴(kuò)大,兩只眼睛變得可見。在此草圖中,使用Adafruit的SSD1306庫來控制SSD1306顯示屏?!?/p>
Chatgpt生成的代碼效果十分出色,具體代碼內(nèi)容如下:
#include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for SSD1306 display connected using I2C #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Define eye parameters const int eyeCenterX1 = 40; // X position for left eye const int eyeCenterX2 = 88; // X position for right eye const int eyeCenterY = 32; // Y position for both eyes const int eyeRadius = 20; // Radius of the eye const int minPupilRadius = 5; // Minimum radius of the pupil const int maxPupilRadius = 10; // Maximum radius of the pupil const int animationSpeed = 10; // Speed of the animation void setup() { // Initialize the display if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(2000); // Pause for 2 seconds // Clear the buffer display.clearDisplay(); } void loop() { for (int i = minPupilRadius; i <= maxPupilRadius; i++) { drawCatEyes(i); delay(animationSpeed); } for (int i = maxPupilRadius; i >= minPupilRadius; i--) { drawCatEyes(i); delay(animationSpeed); } } // Function to draw the cat eyes with dilating pupils void drawCatEyes(int pupilRadius) { display.clearDisplay(); // Draw left eye display.drawCircle(eyeCenterX1, eyeCenterY, eyeRadius, SSD1306_WHITE); // Eye outline display.fillCircle(eyeCenterX1, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil // Draw right eye display.drawCircle(eyeCenterX2, eyeCenterY, eyeRadius, SSD1306_WHITE); // Eye outline display.fillCircle(eyeCenterX2, eyeCenterY, pupilRadius, SSD1306_WHITE); // Pupil display.display(); }
這段代碼將在OLED顯示屏上模擬瞳孔擴(kuò)大的效果,使貓眼動(dòng)畫變得更加逼真。如果需要,可以調(diào)整眼睛中心坐標(biāo)(eyeCenterX1、eyeCenterX2和eyeCenterY)以及半徑(radius)參數(shù),以使其適合顯示屏。
文本顯示程序:
在最后面,我們測(cè)試了”文本顯示“的程序。
我們首先從ChatGPT生成了一堆巧妙的“帶屏幕的電子筆筒”的文本。
然后,我們選擇了其中的幾個(gè),例如“I hold pens and your secrets.””We are going digital, so hold onto your pencils!”、“Shhh!”等等。對(duì)于SSD1306顯示屏,我們創(chuàng)建了一個(gè)基本的文本顯示程序,并將所有引語輸入其中,使每個(gè)文本間隔兩秒出現(xiàn)。
具體代碼如下:
#include #include #include #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define OLED_ADDR 0x3C Adafruit_SSD1306 display(OLED_WIDTH, OLED_HEIGHT); void setup() { display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); } void loop() { display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("I hold pens and your secrets. Shhh!"); //QUOTE01 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Hold onto your pens, we are going digital!"); //QUOTE02 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Penning down ideas, one byte at a time!"); //QUOTE03 display.display(); delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 20); display.println("Who needs a diary when you have a pen holder with a screen?!"); //QUOTE04 display.display(); delay(2000); }
總結(jié)
最終結(jié)果是一個(gè)可編程顯示屏的筆筒,對(duì)于管理筆和其他物品非常有幫助。
由于有顯示屏,這里可以嘗試無數(shù)不同的概念。為了顯示時(shí)間,我們可以在XIAO上添加一個(gè)Internet Watch Sketch?;蛘?,我們可以添加一個(gè)使用SD卡、顯示屏和蜂鳴器的旋律播放器Sketch。最后,我們可以在XIAO上添加類似Flappy Bird的游戲,可以使用內(nèi)置按鈕進(jìn)行游戲。
-
微控制器
+關(guān)注
關(guān)注
48文章
7542瀏覽量
151311 -
顯示器
+關(guān)注
關(guān)注
21文章
4970瀏覽量
139925 -
擴(kuò)展板
+關(guān)注
關(guān)注
0文章
54瀏覽量
11390
原文標(biāo)題:創(chuàng)客項(xiàng)目秀|基于XIAO SAMD21的多功能筆筒
文章出處:【微信號(hào):ChaiHuoMakerSpace,微信公眾號(hào):柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論